Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje
dr inż. Jakub Możaryn
Instytut Automatyki i Robotyki
Warszawa, 2014
dr inż. Jakub Możaryn Podstawy Programowania C++
Wstęp
Plan wykładu
Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia: operatory, priorytety, standardowe funkcje matematyczne.
Instrukcja warunkowa if, typ logiczny boolean.
Pętle sterowane warunkiem c++: while (), do ... while ();
instrukcja wielokrotnego wyboru: switch.
Pętla ze skończoną liczba wywołań for, tablice jednowymiarowe (wektory).
Operacje na tablicach dwuwymiarowych (macierze).
Rekordy (struktury) i typ rekordowy. Tablice typu rekordowego. Typ tablicowy.
dr inż. Jakub Możaryn Podstawy Programowania C++
Podstawowe wyrażenia - zadania
Zadanie 3.1
Wczytać z klawiatury swoje imię, nazwisko (zmienne typu: łańcuch znaków) oraz wiek (jako zmienną typu całkowitego). Wypisać wczytane dane na ekranie.
Zadanie 3.2
Wczytać z klawiatury wartość podstawy trójkąta oraz jego wysokość (jako zmienne typu całkowitego). Policzyć i wypisać na ekranie jego pole (jako zmienną typu rzeczywistego).
Instrukcja warunkowa, typ logiczny
Instrukcja warunkowa
Uzależnia wykonanie instrukcji w programie od spełnienia lub
niespełnienia warunku. Warunek ma wartość typu logicznego (boolean).
Instrukcje warunkowe mogą być zagnieżdżone.
Składnia
if (warunek) instrukcja
if (warunek) instrukcja1 else instrukcja2 if (warunek) { instrukcja złożona 1 } else { instrukcja złożona 2 }
gdzie instrukcja złożona ma postać {
instrukcja_1;
...
}
dr inż. Jakub Możaryn Podstawy Programowania C++
Instrukcja warunkowa, typ logiczny - zadania
Zadanie 3.3
Wczytać trzy liczby. Wydrukować wartość największą i najmniejszą.
Wykorzystać zamianę wartości przy pomocy zmiennej pomocniczej.
Zaproponować sposób zamiany dwóch liczb bez zmiennej pomocniczej.
Zadanie 3.4
Dany jest ciąg liczb zakończony zerem. Policzyć i wydrukować średnią arytmetyczną ze wszystkich wartości ciągu.
Instrukcja wielokrotnego wyboru
Instrukcja wielokrotnego wyboru
inaczej instrukcja decyzyjna jest to instrukcja umożliwiająca wybór działań do wykonania spośród wielu opcji.
Instrukcja wielokrotnego wyboru ma postać switch (\textbf{selektor})
{
case stała: case stała: ...
instrukcja; instrukcja; ....
break;
case stała: case stała: ...
instrukcja; instrukcja; ....
break;
...
case stała: case stała: ...
instrukcja; instrukcja; ....
break;
default:
instrukcja; instrukcja; .... można pominąć }
dr inż. Jakub Możaryn Podstawy Programowania C++
Instrukcja wielokrotnego wyboru
Selektor może być wyrażeniem jednego z typów porządkowych (przeliczalnych), tzn. może być typu int, char, a nawet bool, ale nie może być typu rzeczywistego ani typu string.
Każda z pozycji stała może być:
stałą (np. 5, true czy ’a’), typu takiego samego jak selektor lub umożliwiającego jednoznaczne rzutowanie typów
wyrażeniem stałym, dającym się policzyć na etapie kompilacji Pozostałe słowa kluczowe:
break; - instrukcja przerywająca działanie instrukcji switch case: - Jeśli wartość zmiennej występującej po słowie kluczowym switch będzie równa wartości umieszczonej po słowie kluczowym case, to wykonywane są instrukcje znajdujące się po znaku dwukropka.
default - Wykonanie instrukcji znajdujących się po słowie kluczowym default nastąpi tylko wtedy, gdy żaden z wcześniejszych warunków (case) nie zostanie spełniony.
Pętle sterowane warunkiem
Pętla while (pol. ’podczas gdy’)
Pętla wykonuje instrukcję tak długo, dopóki jej warunek jest spełniony (ma wartość różną od zera). Instrukcja sprawdza warunek przed
wykonaniem ciała pętli. Pętla while może wykonywać się nieskończoną ilość razy, gdy wyrażenie nigdy nie przyjmie wartości 0, może także nie wykonać się nigdy, gdy wartość przed pierwszym przebiegiem będzie zerowa.
Pętla do ... while (pol. ’wykonuj, dopóki zostanie spełniony warunek’) Pętla wykonuje instrukcję tak długo, dopóki jej warunek jest spełniony (ma wartość różną od zera). Instrukcja sprawdza warunek po wykonaniu ciała pętli. Pętla while może wykonywać się nieskończoną ilość razy, gdy wyrażenie nigdy nie przyjmie wartości 0, może także nie wykonać się nigdy, gdy wartość przed pierwszym przebiegiem będzie zerowa.
dr inż. Jakub Możaryn Podstawy Programowania C++
Pętle sterowane warunkiem
Pętla while (pol. ’podczas gdy’)
while (warunek) {
instrukcja\_złożona;
...
}
Pętle sterowane warunkiem
Pętla do ... while (pol. ’wykonuj, dopóki zostanie spełniony warunek’)
do {
instrukcja\_złożona;
...
}
while (warunek);
dr inż. Jakub Możaryn Podstawy Programowania C++
Pętle sterowane warunkiem
Zadanie 3.5
Wczytać n > 0, a następnie n liczb. Znaleźć i wydrukować dwie największe liczby (warianty: mogą być te same lub różne).
Zadanie 3.6
Wczytywać ciąg znaków aż do momentu wpisania dwukrotnie litery ’a’.
Wypisać ile we wpisanym ciągu było liter ’m’, oraz ile było liter dużych i małych z zakresu [’b’.. ’l’]
Pętle sterowane warunkiem
Instrukcje przerywające działanie pętli Instrukcja break
Instrukcja ta przerywa działanie pętli (for, do, while) a następnie powoduje przejście do pierwszej instrukcji znajdującej się za pętlą;
Instrukcje break może być wywoływana tylko w pętli lub instrukcji switch.
Instrukcja continue
Instrukcja ta przerywa bieżącą iterację pętli (for, do, while) a następnie powoduje przejście do następnego cyklu pętli. Instrukcja continue może być wywoływana tylko w pętli .
do {
instrukcja\_złożona;
...
break ...
}
while (warunek); dr inż. Jakub Możaryn Podstawy Programowania C++
Pętle sterowane warunkiem
Pętla for (pol. ’wykonuj dla’)
Petla for umożliwia wpisanie: ustawiania zmiennej, sprawdzania warunku i inkrementowania zmiennej w jednej linijce (zwiększa czytelność kodu).
for (wyrażenie1; wyrażenie2; wyrażenie3) { /* instrukcje do wykonania w pętli */
...
}
/*PRZYKŁAD:*/
for (int i=0; i<10; i++) {
/* instrukcje do wykonania w pętli */
...
}
Pętle sterowane warunkiem
Odpowiednie wyrażenia w pętli:
for (wyrażenie1; wyrażenie2; wyrażenie3) { /* instrukcje do wykonania w pętli */
...
}
są następujące
wyrażenie1 - instrukcja wykonana przed pierwszym przebiegiem pętli. Zwykle jest to inicjalizacja zmiennej, która będzie służyła jako łicznik”przebiegów pętli.
wyrażenie2 - warunek zakończenia pętli. Pętla wykonuje się tak długo, jak prawdziwy jest ten warunek.
wyrażenie3 - instrukcja wykonywana będzie po każdym przejściu pętli (także po ostatnim). Zamieszczone są tu instrukcje, które zwiększają licznik o odpowiednią wartość
UWAGA: zmienna zdefiniowana w pętli for jest dostępna tylko w obszarze tej pętli.
dr inż. Jakub Możaryn Podstawy Programowania C++
Tablice
Tablica
Jest to ciąg zmiennych jednego typu. Ciąg taki posiada jedną nazwę a do jego poszczególnych elementów odnosi się przez numer (indeks).
Elementy przechowywane są jeden za drugim w pamięci komputera.
Tablicę deklaruje się w następujący sposób:
typ nazwa tablicy[rozmiar];
gdzie rozmiar oznacza ile zmiennych danego typu możemy zmieścić w tablicy.
Przykłady deklaracji tablic, oraz odwoływania się do ich elementów int tablica1[20]; // 20 elementowa, bez inicjalizacji int tablica2[3] = {0,1,2}; // 3 elementowa
int tablica3[] = {1, 2, 3, 4, 5}; // 5 elementowa int a1=tablica2[2];
Tablice
Rysunek :Tablica 5 elementowa; numeracja indeksów, oraz zmienne indeksowane (elementy tablicy)
Tablicami posługujemy się tak samo jak zwykłymi zmiennymi. Różnica polega jedynie na podawaniu indeksu tablicy. Określa on, z którego elementu (wartości) chcemy skorzystać spośród wszystkich
umieszczonych w tablicy.
UWAGA: Numeracja indeksów rozpoczyna się od zera, co oznacza, że pierwszy element tablicy ma indeks równy 0, drugi 1, trzeci 2, itd.
dr inż. Jakub Możaryn Podstawy Programowania C++
Pętle sterowane warunkiem, wektory - zadania
Zadanie 3.7
Dla x = 0.1, 0.2, .., 1 i y = 1, −2, 4, −8, 16, −32, 64 drukować argumenty i wartości funkcji
y = y · sin x , jeżeli sin x < cos x
y · cos x , jeżeli sin x cos x (1)
Zadanie 3.8
Wczytać 100 liczb rzeczywistych do wektora A. Zamienić miejscami wartość największą z najmniejszą w tej tablicy.
Tablice wielowymiarowe
Tablica wielowymiarowa
Jest to zbiór zmiennych jednego typu. Ciąg taki posiada jedną nazwę a do jego poszczególnych elementów odnosi się przez indeksy. Elementy przechowywane są w pamięci komputera jako ”tablica tablic”. Tablice wielowymiarowe definiuje się podając przy zmiennej kilka wymiarów.
Tablicę wielowymiarową deklaruje się w następujący sposób:
typ nazwa tablicy[rozmiar1][rozmiar2]...;
gdzie rozmiar# rozmiar jednego wymiaru tablicy.
Przykłady deklaracji tablic wielowymiarowych, oraz odwoływania się do ich elementów
float macierz[10][10];
macierz[2][3] = 1.2;
float macierz[2][2] = {
{ 1.6, 4.5}, /* pierwszy wiersz */
{ 5.7, 4.3}, /* drugi wiersz */
};
dr inż. Jakub Możaryn Podstawy Programowania C++
Tablice wielowymiarowe
Rysunek :Tablica n × n elementowa; numeracja indeksów, oraz zmienne indeksowane (elementy tablicy)
Tablice wielowymiarowe - zadania
Zadanie 3.9
Wczytać dane z klawiatury do tablicy A ∈ R9 × 9 przechowującej liczby rzeczywiste.
1 Policzyć i wydrukować średnią arytmetyczną z dodatnich wartości.
2 Wyzerować na obwodzie elementy większe od średniej arytmetycznej.
3 Przesunąć cyklicznie do góry wartości tych kolumn, które mają chociaż jedno zero.
dr inż. Jakub Możaryn Podstawy Programowania C++
Rekordy - zadania
Zadanie 3.10
Wczytać dane do tablicy A o rozmiarze n (n - stała). Każdy z elementów jest strukturą Towar - rekord o polach: nazwa (string), cena
(double), ilość (int).
1 Wydrukować tablicę
2 Wydrukować ilość i nazwę tych towarów, których cena jest większa od 10
3 Umieścić towar o największej wartości (cena?ilość) w ostatnim elemencie tablicy.
4 Wydrukować, ile jest towarów o cenie większej od średniej ceny wszystkich towarów