wykład 3 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018
Instrukcja wielokrotnego wyboru Instrukcja wielokrotnego wyboru switch umożliwia podejmowanie decyzji na podstawie wartości pewnego wyrażenia. Składnia: switch (wyrażenie) case wartość1 : instrukcje_1 case wartość2: instrukcje_2... default: instrukcje_n
wyrażenie musi być typu całkowitego lub wyrażalnego przez wartość całkowitą (jak np. char) jeżeli wyrażenie ma wartość podaną po słowie kluczowym case, program wykonuje kod umieszczony za dwukropkiem odpowiadającym tej wartości (tj. instrukcje dla danego przypadku oraz dla przypadków poniżej ) przerwanie sekwecji i zakończenie switch można uzyskać używając instrukcji break jeżeli wyrażenie ma wartosc inną niż następujące po case, wykonywne są instrukcje podane po słowie default
Przykład użycia # include < iostream > using namespace std ; int main () int a; cout << " podaj liczbe " ; cin >> a; switch (a) case 10: cout << " podales 10 " << endl ; break ; case 100: cout << " podales 100 " << endl ; break ; default : cout << " nie podales 10 ani 100 " << endl ; break ; // mozna pominac, i tak konczymy return 0;
Przykład użycia - alternatywa # include < iostream > using namespace std ; int main () int a; cout << " podaj liczbe " ; cin >> a; switch (a) case 10: case 11: case 12: cout << " podales 10, 11 albo 12 " << endl ; break ; case 100: cout << " podales 100 " << endl ; break ; default : cout << " nie podales 10, 11, 12 ani 100 " << endl ; return 0;
Typ znakowy char typ char służy do przechowywania znaków. Zazwyczaj jest jednobajtowy przykłady znaków: a, 1, @ char jest typem całkowitym (każdy znak odpowiada liczbie całkowitej - wartości znaku w kodzie ASCII)
Przyklad użycia - menu, char + switch # include < iostream > using namespace std ; int main () char wybor ; cout << " choose an option : A - adding element, P - printing elements, E - exit : "; cin >> wybor ; switch ( wybor ) case a : case A : cout << " adding an element " << endl ; break ; case p : case P : cout << " printing an element " << endl ; break ; case e : case E : cout << " exit " << endl ; break ; default : cout << " wrong key pressed " << endl ; return 0;
Przyklad użycia - menu, char + if # include < iostream > using namespace std ; int main () char wybor ; cout << " choose an option : A - adding element, P - printing elements, E - exit : "; cin >> wybor ; if ( wybor == a wybor == A ) cout << " adding an element " << endl ; else if ( wybor == p wybor == P ) cout << " printing an element " << endl ; else if ( wybor == e wybor == E ) cout << " exit " << endl ; else cout << " wrong key pressed " << endl ; return 0;
Pętle i ich rodzaje Pętle umożliwiają iteracyjne wykonywanie pewnych kroków pewien fragment programu możemy wykonać wielokrotnie raz za razem (być może dla zmienionych danych)
Pętle i ich rodzaje Pętle umożliwiają iteracyjne wykonywanie pewnych kroków pewien fragment programu możemy wykonać wielokrotnie raz za razem (być może dla zmienionych danych) Zazwyczaj w językach programowania można wyróżnić dwa rodzaje pętli: pętle wykonujące się określoną liczbę razy pętle wykonujące się do momentu spełnienia pewnego warunku ( sterowane warunkiem )
Pętle i ich rodzaje Pętle umożliwiają iteracyjne wykonywanie pewnych kroków pewien fragment programu możemy wykonać wielokrotnie raz za razem (być może dla zmienionych danych) Zazwyczaj w językach programowania można wyróżnić dwa rodzaje pętli: pętle wykonujące się określoną liczbę razy pętle wykonujące się do momentu spełnienia pewnego warunku ( sterowane warunkiem ) przy czym tak naprawdę pętle pierwszego rodzaju są wygodniejszym zapisem pewnych pętli drugiego rodzaju
Pętle sterowane warunkiem w C++ Dwa rodzaje: while loop do... while loop
Pętla while while(warunek) instrukcje wykonywanie instrukcji lub grupy instrukcji jest powtarzane tak długo, jak długo warunek jest prawdziwy. Warunek sprawdzany jest przed rozpoczęciem wykonywania zawartości pętli
Pętla while while(warunek) instrukcje wykonywanie instrukcji lub grupy instrukcji jest powtarzane tak długo, jak długo warunek jest prawdziwy. Warunek sprawdzany jest przed rozpoczęciem wykonywania zawartości pętli Instrukcje wewnątrz pętli mogą nie zostać wykonane
Przyklad - wypisanie liczb od 1 do 10, while # include < iostream > using namespace std ; int main () int i = 1; while (i <=10) cout << i << endl ; i ++; return 0;
Pętla do..while do instrukcje while (warunek); wykonywanie instrukcji lub grupy instrukcji jest powtarzane tak długo, jak długo warunek jest prawdziwy. Warunek sprawdzany jest po wykonaniu zawartości pętli
Pętla do..while do instrukcje while (warunek); wykonywanie instrukcji lub grupy instrukcji jest powtarzane tak długo, jak długo warunek jest prawdziwy. Warunek sprawdzany jest po wykonaniu zawartości pętli Instrukcje wewnątrz pętli są wykonane co najmniej raz
Przyklad - wypisanie liczb od 1 do 10, do.. # include < iostream > using namespace std ; int main () int i = 1; do cout << i << endl ; i ++; while (i <=10) ; while return 0;
Obu rodzajów pętli sterowanych warunkiem można w wielu przypadkach używać zamiennie, chociaż w niektórych sytuacjach któryś rodzaj może być wygodniejszy Przykłady (Rózne pętle, takie samo działanie) int i = 1; int i = 1;...... while(i<=10) do cout << i << endl; cout << i << endl; i++; i++; while(i<=10);
Uwagi (do wszystkich pętli sterowanych warunkiem) warunek sterujący pętlą może zawierać zmienne dowolnego typu, może być również wyrażeniem o stałej wartości interpretowalnej jako prawda lub fałsz jeśli chcemy aby pętla kiedyś się zakończyła, instrukcje wewnątrz pętli muszą umożliwiać zmianę wartości logicznej warunku sterującego pętlą instrukcji wewnątrz pętli może być dowolnie dużo, moga być nimi także kolejne instrukcje pętli
Przyklad - pętla nieskończona (śnieg ;-) ) # include < iostream > using namespace std ; int main () while ( true ) cout << " * " ; return 0;
Instrukcje sterujące wewnątrz pętli break - przerywa wykonywanie instrukcji pętli (lub instrukcji tt switch), powodując przejście do wykonywania instrukji następujących bezpośrednio po przerwanej continue - przerywa bieżące wykonanie pętli, powodując przejście do kolejnej iteracji (ze sprawdzeniem warunku przed wykonaniem)
Przyklad - użycie break Zamiast wszystkich liczb całkowitych z zakresu 1..10 wypisywane są tylko liczby od 1 do 3: # include < iostream > using namespace std ; int main () int i = 0; do i ++; if ( i == 4) break ; cout << i << endl ; while (i <=10) ; return 0;
Przyklad - użycie continue Zamiast wszystkich liczb całkowitych z zakresu 1..10 wypisywane są tylko liczby parzyste: # include < iostream > using namespace std ; int main () int i = 0; do i ++; if ( i%2 == 1) continue ; cout << i << endl ; while (i <=10) ; return 0;
Zadanie 1 Napisać program sumujący liczby całkowite podawane przez użytkownika oraz obliczający średnią z wprowadzonych liczb. Wprowadzenie liczby 0 oznacza zakończenie podawania. Końcowe 0 ma nie być brane pod uwagę przy obliczaniu średniej.
Zadanie 1 - rozwiązanie # include < iostream > using namespace std ; int main () int liczba, suma, ile ; ile = 0; suma = 0; while ( true ) cout << " podaj liczbe > "; cin >> liczba ; if ( liczba == 0) break ; // tu zajmujemy sie liczba ile = ile +1; suma = suma + liczba ; if (ile >0) cout << " suma liczb wynosi " << suma << endl ; cout << " srednia wynosi " << suma / float ( ile ) << endl ; else cout << " nie podano liczb "; return 0;
Zadanie 2 Kotka rodzi jednorazowo do 6 kociąt i może mieć kocięta 2 razy w ciągu roku. Po pół roku młode mogą mieć kocięta. Mamy jedną kotkę. Napisać program obliczający w którym pokoleniu kocia rodzinka może - w wariancie pesymistycznym - osiagnąć liczebność podaną przez użytkownika.... a po rozwiązaniu tego zadania i popatrzeniu na wyniki - zachęcam do zajrzenia tutaj
Zadanie o kotach -rozwiązanie # include < iostream > using namespace std ; int main () int rozmiar_ rodzinki, pokolenie, liczba_mlodych, g; cout << " Program liczy po ilu pokoleniach kocia rodzina moze osiagnac podana liczebnosc. "; cout << " Podaj te liczebnosc : "; cin >> g; rozmiar_ rodzinki = 1; pokolenie = 1; while ( rozmiar_ rodzinki < g) pokolenie = pokolenie + 1; liczba_ mlodych = 6 * rozmiar_ rodzinki ; rozmiar_ rodzinki = rozmiar_ rodzinki + liczba_ mlodych ; cout << " Rodzinka osiagnie podany rozmiar w " << pokolenie << " pokoleniu \ n"; cout << "( dokladnie mozemy miec wtedy " << rozmiar_ rodzinki << " kotow )"; return 0;