Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014
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.
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;... }
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ąć }
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.
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);
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 Instrukcja break Instrukcje przerywające działanie pętli 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... }
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.
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.
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 */ };
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.
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