Informatyka w Elektroenergetyce - Laboratorium
Opis zajęć
- Zajęcia wprowadzające. Przedstawienie regulaminu, literatury, tematyki zajeć oraz sposobu oceniania.
Zapoznanie się z kompilatorem.
- Zmienne wbudowane typu int, char, float, double i bool.
Typy pochodne. Wskaźniki i referencje.
Wypisywanie komunikatów i zmiennych na ekran oraz wczytywanie danych z klawiatury.
Literatura:
Jerzy Grębosz: Symfonia C++ Standard (23 strony)
Rozdz.3: "Typy" z następującymi podrozdziałami:
- Rozdz.3.1: "Deklaracje typów"
- Rozdz.3.2: "Systematyka typów z języka C++"
- Rozdz.3.3: "Typy fundamentalne" z podrozdziałami
- Rozdz.3.4: "Stałe dosłowne" z podrozdziałami
- Rozdz.3.5: "Typy złożone"
- Rozdz.3.7: "Zakres ważności nazwy obiektu, a czas życia obiektu" tylko z podrozdziałem 3.7.1
- Instrukcje warunkowe if...else oraz switch...case.
Pętle: for, while, do...while
Przykładowy program
Napisać prosty kalkulator, który po wczytaniu od użytkownika dwóch liczb oraz znaku działania (+, -, *, /)
będzie wyliczał odpowiedź (użycie instrukcji switch). Program ma działać w pętli,
tzn. ma pytać użytkownika, czy chce on przeprowadzić kolejne obliczenia, czy chce wyjść
(instrukcja do..while).
Literatura:
Jerzy Grębosz: Symfonia C++ Standard (26 stron)
Rozdz.2: "Instrukcje sterujące" z wszystkimi podrozdziałami
- Funkcje. Argumenty formalne i lokalne.
Zmienne globalne i lokalne, zasięg ważności zmiennych.
Przykładowy program
Napisać program, który będzie obliczał koszt energii elektrycznej pobranej przez grzałkę.
Koszt energii jest funkcją ceny jednego kilowata, napięcia zasilania, rezystancji grzałki oraz czasu:
K = kjedn. * U2 / R * t
Należy napisać jedną funkcję, która będzie wczytywała liczbę wiekszą od zera
i zawołać ją kilka razy w celu wczytania każdego z potrzebnych parametrów.
Dodatkowym argumentem funkcji ma być komunikat, który będzie wyświetlany na ekranie,
np.: "Podaj koszt kWh:".
Należy również napisać funkcję, która będzie służyła do obliczenia kosztu.
Nie wolno używać zmiennych globalnych.
Program ma działać w pętli, tzn. po obliczeniach użytkownik jest pytany czy chce kontynuować.
Literatura.
Jerzy Grębosz: Symfonia C++ Standard (15 stron)
Rozdz.5: "Funkcje" z następującymi podrozdziałami:
- Rozdz.5.1: "Funkcja często wywołuje inną funkcję"
- Rozdz.5.2: "Zwracanie rezultatu przez funkcję"
- Rozdz.5.3: "Stos"
- Rozdz.5.4: "Przesyłanie argumentów do funkcji przez wartość"
- Rozdz.5.5: "Kiedy deklaracja funkcji nie jest konieczna?"
- Tablice jednowymiarowe.
Przekazywanie tablic do funkcji.
Przykładowy program
Napisać program, który:
- utworzy tablicę na 6 elementów typu float
- poprosi użytkownika o wprowadzenie dwóch liczb
min
oraz max
typu float
- 6 razy poprosi uzytkownika o wprowadzenie dowolnej liczby i wstawi ją w kolejne miejsce w tablicy
- wypisze zawartość tablicy na ekranie
- przeszuka tablicę i w przypadku, gdy dany element jest mniejszy niż
min
to ustawi go jako równy min
,
podobnie jeżeli znajdzie w tablicy element większy niż max
, to zamieni go na max
- wypisze zawartość tablicy na ekranie
Uwagi:
- Może się zdarzyć, że użytkownik wprowadzi takie liczby, że
min
będzie większe od max
.
Wówczas program ma zaminić te dwie liczby tak, aby min
było mniejsze od max
.
- Program ma składać się z funkcji
main
oraz trzech pomocniczych funkcji:
do wypełnienia tabeli, do ustawienia elmentów spoza zakresu min-max
na wartości graniczne oraz do wyświetlania tablicy.
Literatura
Jerzy Grębosz: Symfonia C++ Standard (21 stron)
Rozdz.7: "Tablice" z następującymi podrozdziałami:
- Rozdz.7.1: "Elementy tablicy"
- Rozdz.7.2: "Inicjalizacja tablic"
- Rozdz.7.3: "Stos"
- Rozdz.7.5: "Tablice znakowe"
- Klasy I. Publiczne, chronione i prywatne elementy składowe klasy. Klasa a obiekt.
Przykładowy program
Zaprojektować klasę o nazwie Samochod
, która będzie spełniała następujace warunki:
- posiada dwie publiczne zmienne:
predkosc
oraz bieg
- w publicznym konstruktorze (bezparametrowym) zeruje obie wielkości
- udostepnia metodę
Przyspiesz
oraz Zwolnij
, w których predkosc
będzie odpowiednio
zwiekszana bądź zmniejszana o dziesiec ( w przedziale 0 - 120 ). Zmienna bieg
będzie zmieniana
automatycznie podczas przyspieszania przy przekraczaniu prędkości 0, 30, 60, 90 i zmniejszania
podczas zwalniania przy przekraczaniu predkosci 80, 50, 20, 1
- posiada publiczną metodę o nazwie
Wypisz
, która wypisze na ekranie stan obiektu
Literatura
Jerzy Grębosz: Symfonia C++ Standard (23 strony)
Rozdz.10: "Klasy" z następującymi podrozdziałami:
- Rozdz.10.1: "Typy definowane przez użytkownika"
- Rozdz.10.2: "Składniki klasy"
- Rozdz.10.3: "Składnik będący obiektem"
- Rozdz.10.4: "Enkapsulacja"
- Rozdz.10.5: "Ukrywanie informacji"
- Rozdz.10.6: "Klasa, a obiekt"
- Rozdz.10.7: "Funkcje składowe" z wszystkimi podrozdziałami
- Rozdz.10.8: "Jak to właściwie jest? (this)"
- Rozdz.10.9: "Odwołanie się do publicznych danych składowych"
- Struktury. Tablice struktur. Wskaźniki.
Przykładowy program
Zaprojektować strukturę PRZEWOD
,
która będzie reprezentowała przewód instalacji elektrycznej.
Struktura taka będzie zawierać następujące pola:
- liczba żył
- przekrój
- rodzaj żyły (D-jendodrutowa, L-linka)
Główna funkcja programu ma utworzyć tablicę 8 elementów typu PRZEWOD
.
Następnie odpowiednią liczbę razy powinna zostać zawołana funkcja,
która dla kolejnego elementu ustawi jakieś parametry domyślne.
Dalej program ma w pętli (pętla do...while) pytać użytkownika, czy chce:
- zakończyć pracę programu
- wyświetlić wszystkie przewody
- zmienić przekrój przewodu
(Należy użyć instrukcji switch)
Wciśnięcie cyfry przez użytkownika powinno wywołać odpowiednią funkcję.
W przypadku zmiany przekroju należy poprosić użytkownika o podanie numeru przewodu.
Następnie ma zostać wywołana funkcja,
która dostanie wskaźnik na strukturę PRZEWOD
,
i która wyświetli poprzedni przekrój przewodu,
poprosi użytkownika o wpisanie nowej wartości i podmieni ją w strukturze.
Wyświetlenie wszystkich przewodów też ma być zrealizowane za pomocą wywołania odpowiedniej funkcji.
W trakcie wyświetlania ma być wypisana nazwa przewodu (np. YDY 3x1.5 czy YLY 5x10), która będzie tworzona
automatycznie na podstawie zawartych w strukturze parametrów.
Literatura
Jerzy Grębosz: Symfonia C++ Standard (21 stron)
Rozdz.13: "Struktury, Unie, Pola bitowe" z następującymi podrozdziałami:
Rozdz.8: "Wskaźniki" z następującymi podrozdziałami:
- Rozdz.8.1: "Wskaźniki mogą bardzo ułatwić życie"
- Rozdz.8.2: "Definiowanie wskaźników"
- Rozdz.8.3: "Praca ze wskaźnikiem"
- Rozdz.8.4: "L-wartość"
- Rozdz.8.7: "Cztery domeny zastosowania wskaźników"
- Rozdz.8.9: "Zastosowanie wskaźników w argumentach funkcji" z wszystkimi podrozdziałami
- Klasy II. Przeciążanie konstruktora, destruktor, operatory.
Przykładowy program
Zaprojektować klasę Kabel
, która będzie służyła do reprezentacji kabla elektroenergetycznego na średnie napięcie.
Klasa taka będzie zawierać następujące zmienne chronione:
- typ przewody (np. HAKFtA, AKFtA, HAKXS)
- napięcie znamionowe
- przekrój przewodu
Ponadto klasa taka będzie zawierać następujące metody publiczne:
- konstruktor z parametrami: będzie ustawiał zmienne klasy na parametry wywołania konstruktora
- metodę wyświetlająca informacje o danym kablu
- operator == służący do porównania napięcia znamionowego kabla z liczbą
- operatory < i > służące do porównania dwóch kabli ze względu na przekrój
Główna funkcja programu (main
) ma utworzyć tablicę dziesięciu kabli o różnych przekrojach
(240, 120, 95, 70, 50 mm2) i różnych napięciach (6, 15, 20 kV). Nastepnie program ma poprosić użytkownika
o podanie napięcia znamionowego, a program ma wypisać wszystkie kable o zadanym napięciu
(należy wykorzystać operator ==). Dalej program ma wypisać dwa kable o zadanym napięciu: o najmniejszym oraz
o największym przekroju.
Literatura
Jerzy Grębosz: Symfonia C++ Standard (38 stron)
Rozdz.15: "Konstruktory i Destruktory" z następującymi podrozdziałami:
- Rozdz.15.1: "Konstruktor."
- Rozdz.15.4: "Destruktor."
Rozdz.19: "Przeładowanie operatorów." z następującymi podrozdziałami:
- Rozdz.19.1: "Przeładowanie operatorów - definicja i trochę teorii."
- Rozdz.19.3: "Funkcja operatorowa jako funkcja składowa"
- Rozdz.19.7: "Operatory jednoargumentowe"
- Rozdz.19.8: "Operatory dwuargumentowe"
- Klasy III. Dziedziczenie i funkcje wirtualne.
Przykładowy program
Zaprojektować prosty schemat dziedziczenia:
- klasa bazowa
Figura
- klasa pochodna do klasy
Figura
o nazwie Trojkat
- klasa pochodna do klasy
Figura
o nazwie Czworokat
Metody i zmienne klasy Figura
:
- publiczny konstruktor
- wirtualna metoda
Wypisz
- wirtualna metoda
DlugosBokow
Metody i zmienne klasy Trojkat
:
- publiczny konstruktor zerujący wszystkie zmienne
- wirtualna metoda
Wypisz
- wirtualna metoda
DlugosBokow
wyliczająca sumę długości wszystkich boków trójkąta
- sześć zmiennych chronionych na współrzędne wierzchołków
- metody ustawiające poszczególne zmienne
Metody i zmienne klasy Czworokat
:
- publiczny konstruktor zerujący wszystkie zmienne
- wirtualna metoda
Wypisz
- wirtualna metoda
DlugosBokow
wyliczająca sumę długości wszystkich boków czworokąta
- osiem zmiennych chronionych na współrzędne wierzchołków
- metody ustawiające poszczególne zmienne
Konstruktory klas pochodnych mają wywoływać konstruktor klasy bazowej.
Wszystkie konstruktory oraz metoda wypisz mają wypisywać na ekranie swoją nazwę
(nazwa klasy + nazwa metody)
Napisać również kawałek programu wykorzystujący napisane klasy:
- utworzyć obiekty klas
Trojkat
i Czworokat
- utworzyć wskaźnik na obiekt klasy
Figura
- ustawić wskaźnik raz na obiekt klasy
Trojkat
, a raz na obiekt klasy Czworokat
- za pomocą wskaźnika wywołać funkcje
wypisz
z obu obiektów
Literatura
Jerzy Grębosz: Symfonia C++ Standard (29 stron)
Rozdz.20: "Dziedziczenie" z następującymi podrozdziałami:
- Rozdz.20.1: "Istota dziedziczenia"
- Rozdz.20.2: "Dostęp do składników."
- Rozdz.20.3: "Czego się nie dziedziczy."
- Rozdz.20.4: "Drzewo genealogiczne."
Rozdz.21: "Funkcje wirtualne" z następującymi podrozdziałami:
- Rozdz.21.1: "Polimorfizm"
- Rozdz.21.3: "Dalsze szczegóły"
- Rozdz.21.4: "Wczesne i późne wiązanie"
- Odczyt i zapis do pliku z wykorzystaniem klas ifstream oraz ofstream.
Przykładowy program
- Dana jest klasa
osoba
(pobież plik),
która będzie przechowywała informacje o osobie.
- Dopisać do niej metody do odczytu oraz zapisu do pliku,
aby można było odczytać ten plik.
- Utworzyć tablicę na 20 elementów tego typu i tam umieścić wczytane obiekty.
- Wyświetlić wczytane obiekty (tylko wczytane, a nie wszystkie 20).
- Napisać funkcję, która będzie umożliwiać użytkownikowi wybranie jednego z obiektów
i zmianę jego dowolnego parametru.
- Zapisać dane do pliku (nie wszystkie 20 obiektów, ale tylko te wczytane).
Literatura
Jerzy Grębosz: Symfonia C++ Standard (39 stron)
Rozdz.22: "Operacje Wejścia/Wyjścia" z następującymi podrozdziałami:
- Rozdz.22.11: "Manipulatory."
- Rozdz.22.14: "Strumienie płynące do lub od plików."
21
- Rozdz.22.15: "Błędy w trakcie pracy strumienia."
- Wykorzystanie elementów z biblioteki standardowej C++:
vector, list, complex oraz string.
Przykładowy program
Napisać program, który z pliku będzie wczytywał cztery liczby zespolone (należy utworzyć taki plik),
następnie będzie z nich tworzył macierz o wymiarach 2x2, będzie obliczał wyznacznik tej macierzy i
wynik (oraz macierz) będzie wypisywał na ekranie.
Ponadto program ma być odporny na możliwe błędy odczytu z pliku.
Literatura
stl-opis.pdf