Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy do powtarzania instrukcji, które mają być wykonane więcej niż raz bez konieczności ich wielokrotnego pisania w kodzie. W języku C++ można stosować następujące pętle: for while do...while Dzięki pętlom kod jest krótszy, bardziej czytelny i łatwiejszy w utrzymaniu. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 3 1
Inicjalizacja zmiennej sterującej Sprawdzanie warunku stopu Zmiana zmiennej sterującej Kolejne wyrażenia do wykonania 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 4 1. for( start; WarunekKoncowy; krok ) 2. { 3. //(...) instrukcje do wykonania 4. } start - inicjalizacja zmiennej sterującej w pętli, WarunekKoncowy -warunek stopu, po osiągnięciu którego pętla zostaje przerwana, krok - zmiana kroku (zmiennej sterującej) pętli 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 5 1. int liczba; // definicja zmiennej liczba 2. int i; // definicja zmiennej sterującej 3. cout << "Podaj ilosc gwiazdek: "; 4. cin >> liczba; // wczytanie liczby 5. for( i=0; i<liczba; i++ ){ // wypisanie liczba-1 gwiazdek 6. cout << "*"; 7. } 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 6 2
definicja zmiennej sterującej Inicjalizacja zmiennej sterującej Sprawdzanie warunku stopu Zmiana zmiennej sterującej Kolejne wyrażenia do wykonania 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 7 1. while( wyrazenie ){ 2. //(...) instrukcje do wykonania 3. } Należy pamiętać, aby: zmienną sterującą zdefiniować poza pętlą, zmienną sterującą zainicjować poza pętlą, zmienną sterującą zmieniać wewnątrz pętli (na końcu), warunek stopu sprawdzany jest na początku pętli. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 8 1. int liczba; // definicja zmiennej liczba 2. int i=0; // definicja zmiennej sterującej 3. cout << "Podaj ilosc gwiazdek: "; 4. cin >> liczba; // wczytanie liczby 5. while( i<liczba ){ 6. cout << "*"; 7. i++; 8. } 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 9 3
definicja zmiennej sterującej Inicjalizacja zmiennej sterującej w pętli w pętli Zmiana zmiennej sterującej w pętli Sprawdzanie warunku stopu Kolejne wyrażenia do wykonania 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 10 1. do{ 2. //(...) instrukcje do wykonania 3. }while( wyrazenie ); Należy pamiętać, aby: zmienną sterującą zdefiniować poza pętlą, zmienną sterującą zainicjować poza pętlą, zmienną sterującą zmieniać wewnątrz pętli (na końcu), warunek stopu sprawdzany jest na końcu pętli, na końcu pętli jest znak ;. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 11 1. int liczba; // definicja zmiennej liczba 2. int i=0; // definicja zmiennej sterującej 3. cout << "Podaj ilosc gwiazdek: "; 4. cin >> liczba; // wczytanie liczby 5. do{ 6. cout << "*"; 7. i++; 8. }while( i<liczba ); 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 12 4
Zadanie 1 Napisz aplikację, która pozwala na wyświetlanie zadanej liczby znaków *. Zadanie 2 Napisz aplikację, która zakończy się po podaniu odpowiedniego znaku z klawiatury. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 13 Można wyróżnić następujące instrukcje skoku: break - słowo kluczowe, przerywające działanie wykonywanej pętli. continue -słowo kluczowe, pozwalające na kontynuowanie pętli od następnej wartości z pominięciem kodu, który występuje w tej pętli za continue. return - słowo kluczowe, zwracające za jego pomocą wartość funkcji. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 14 1. for( i=0; i<10; i++ ) 2. { 3. if ( i==5 ) 4. break; 5. cout<< i<< "\n"; 6. } 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 15 5
1. for( i=0; i<10; i++ ) 2. { 3. if ( i==5 ) 4. continue; 5. cout<< i<< "\n"; 6. } 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 16 to zbiór obiektów tego samego typu, które zajmują ciągły obszar pamięci. to typ pochodny. rozmiar musi być stałą całkowitą (większą do zera) oraz znaną liczbą znaną już na etapie kompilacji. Tablica możne zostać utworzona z: typów fundamentalnych (z wyjątkiem void) typów wyliczeniowych (enum) wskaźników innych tablic z obiektów typu zdefiniowanego przez użytkownika ze wskaźników do pokazywania na składniki klasy. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 17 Definicja tablicy 3 elementów typu int: typ_tablicy nazwa_tablicy[ ilosc_elementow ]; int a[3]; Poszczególneelementy tablicy 3 elementowej: a[0]; a[1]; a[2]; Zapis do 2 elementu tablicy: a[1] = 0; Posługiwanie się tablicą w pętli: for( int i=0; i<3; i++ ) a[i] = i; 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 18 6
W celu inicjalizacji tablicy należy nadać wartość początkową każdemu elementowi. Służy do tego tzw. inicjalizacja zbiorcza: int a[3] = { 0, 1, 2 }; Inicjalizacja mniejszą ilością wartości początkowych od rozmiaru tablicy: a[3] = { 1, 2 }; Inicjalizacja tablicy bez podania rozmiaru tablicy: a[] = { 0, 1, 2 }; Inicjalizacja tablicy obiektów stałych: const int a[3] = { 0, 1, 2}; 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 19 Definicja tablicy znakowej: char a[10]; Inicjalizacja tablicy: a[10] = { "test" }; a[10] = { t, e, s, t }; Inicjalizacja tablicy bez podania rozmiaru tablicy: a[] = { "test" }; a[] = { t, e, s, t }; 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 20 Tablice wielowymiarowe - tablice których elementami są inne tablice. int aa[2][3]; Inicjalizacja tablicy: aa[2][3] = { 0, 1, 2, 3, 4, 5 }; jest to równoważny zapis do: aa[0][0] = 0; aa[0][1] = 1; aa[0][2] = 2; aa[1][0] = 3; aa[1][1] = 4; aa[1][2] = 5; 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 21 7
Dziękuję za uwagę i zapraszam na 15 minut przerwy. W dalszej części ćwiczenia do samodzielnego wykonania. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 22 Zadanie 1 Napisz program pozwalający na liczenie sumy wszystkich liczb pośrednich do podanej przez użytkownika liczby całkowitej. Zadanie należy zrealizować przy wykorzystaniu pętli: while, do while, for. Zadanie 2 Napisz program wyposażony w menu pozwalające na wybór pętli, która ma być wybrana do obliczeń sumy wszystkich liczb pośrednich do podanej przez użytkownika liczby całkowitej. Program należy tak wykonać, aby mógł wykonywać się do momentu, aż użytkownik nie zdecyduje inaczej. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 23 Zadanie 3 Napisz program kalkulator, pozwalający na obliczanie operacji: dodawania, odejmowania, mnożenia dzielenia. Aplikacja wyposażona jest w menu z wyborem operacji matematycznej. Podczas pisania programu należy zwrócić uwagę na możliwość błędnego wprowadzenia danych (wybór pozycji z menu). Ponadto program powinien wykonywać się do momentu, w którym użytkownik nie będzie chciał wykonywać operacji matematycznych wymienionych w treści zadania. 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 24 8