Instrukcja switch
Transkrypt
Instrukcja switch
Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 1 1. Funkcja f(x) jest określona w sposób następujący: 2x f ( x) x2 x dla x 5 dla ( 5 x 7) 2 dla x 7 Napisz algorytm, który wczyta (z klawiatury) wartoć "x" i wydrukuje wartość funkcji f(x). 2. Napisz algorytm który będzie drukował wartość podatku na podstawie wczytanego dochodu. Podatki oblicza się wg następujących zasad: a) jeśli dochód (D) nie przekracza 37 024 zł to podatek wynosi 19% od dochodu. b) jeśli dochód (D) zawiera się w granicach (37 024 < D < 74048) to podatek wynosi 6516.40 zł plus 30% nadwyżki ponad 37 024 zł. c) jeśli dochód (D) przekracza 74 048 zł, to podatek wynosi 17632.60 zł plus 40% nadwyżki ponad 74 048 zł. 3. Napisz algorytmy, który symulują działanie czterodziałaniowego kalkulatora (if, else if ) a także instrukcje ( switch case ) Instrukcja switch Instrukcja switch służy do wybierania jednego przypadku z wielu. Instrukcja switch Instrukcja switch służy do wybierania jednego przypadku z wielu. switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default : { instr_(n+1); break; } } Przykład użycia instrukcji switch. /*-------------------------------------------------------------------------------------------------*/ /* Algorytm oblicza stopień na podstawie liczby otrzymanych punktów */ /* Kryteria: 0.. 49 pkt. - 2 */ /* 50.. 59 pkt. - 3 */ /* 60.. 69 pkt. - 3.5 */ /*-----------------------------------------------------------------------------------------------int lp; Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 2 float stopien; cout << "Podaj liczbę punktów (0 <= lp <= 100): "; cin >> lp; lp = lp/10; switch (lp) { case 5 : { stopien = 3; break;} case 6 : { stopien = 3.5; break;} case 7 : { stopien = 4; break;} case 8 : { stopien = 4.5; break;} case 9,10 : { stopien = 5; break;} default : { stopien = 2; break;} } cout << "Twoja ocena: "<< stopien; Działanie instrukcji switch: obliczane jest wyrażenie umieszczone w nawiasach po słowie switch; jeśli jego wartość odpowiada którejś z wartości podanej w jednej z etykiet case, wówczas wykonywane są instrukcje począwszy od tej etykiety. Wykonywanie ich kończy się po napotkaniu instrukcji break. Działanie instrukcji switch zostaje wówczas zakończone; jeśli wartość wyrażenia nie zgadza się z żadną z wartości podanych w etykietach case, wówczas wykonywane są instrukcje umieszczone po etykiecie default. etykieta default może być umieszczona w dowolnym miejscu instrukcji switch, nawet na samym jej początku. Co więcej, etykiety default może nie być wcale. Wówczas, jeśli w zbiorze etykiet case nie ma żadnej etykiety równej wartości wyrażenia, instrukcja switch nie będzie wykonana. instrukcje występujące po etykiecie case nie muszą kończyć się instrukcją break. Jeśli jej nie umieścimy, to będą wykonywane instrukcje umieszczone pod następną etykietą case. Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 3 Instrukcja while Jeśli wyrażenie nie przyjmie wartości 0, instrukcja będzie się wykonywać nieskończoną ilość razy - najpierw obliczana jest wartość wyrażenia w nawiasach (może być instrukcja złożona!). - jeśli wartość ta jest prawdziwa (niezerowa), to następuje wykonywanie instrukcji w pętli tak długo, aż wyrażenie przyjmie wartość zerową ( fałsz). - należy zwrócić uwagę, że wartość wyrażenia jest obliczana przed wykonaniem instrukcji. Algorytm na czytanie i sumowanie n liczb całkowitych, sumowanie jest przerwane, gdy wczytana liczba jest zerem. Wyświetlić sumę i liczbę składników. /*-------------------------------------------------------------------------------------------* Sumowanie n liczb całkowitych. -Jeśli sumowanym składnikiem jest 0, to proces sumowania zostaje zakończony. */ int a, liczba, n, Suma; cin>>n; cin>>a; licznik = 0; Suma = 0; while ((a != 0) && (licznik < n)) { licznik = licznik++; Suma = Suma + a; cout << "Podaj a: "; cin >> a; } cout << "Suma = " << Suma << "Liczba składników = " << licznik; Instrukcja do -while Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 4 - instrukcja jest wykonywana w pętli tak długo póki wyrażenie ma wartość niezerową (prawda) - z chwilą, gdy wyrażenie przyjmie wartość zerową (fałsz), działanie instrukcji zostaje zakończone Napisać algorytm na czytanie i sumowanie liczb całkowitych - sumowania należy przerwać w chwili, gdy suma przekroczy wartość 100. Wyświetlić sumę i liczbę składników /*Algorytm na sumowanie liczb całkowitych - sumowanie zostanie zakończone, gdy suma skladnikow przekroczy wartość 2000 */ int a, licznik, Suma; licznik = 0; Suma = 0; do { cout << "Podaj a: "; cin >> a; licznik = licznik++; Suma = Suma + a; } while (Suma < 2000); cout << "Suma = " << Suma << "Liczba składników = " << licznik Instrukcja for wyrażenie1 - jest to instrukcja inicjalizująca wykonywanie pętli for; Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 5 wyrażenie2 - jest to wyrażenie obliczane przed każdym obiegiem pętli. Jeśli jest ono różne od zera, to wykonywane zostaną instrukcje będące treścią pętli; wyrażenie3 - jest to instrukcja wykonywana na zakończenie każdego obiegu pętli . Jest to ostatnia instrukcja wykonywana bezpośrednio przed obliczeniem wyrażenia warunkowego wyrażenie2 Działanie instrukcji for: 1.`najpierw wykonywane jest wyrażenie1- instrukcja inicjalizująca pracę pętli 2.`obliczane jest wyrażenie2- wyrażenie warunkowe; jeśli jest ono równe 0 -praca pętli jest przerywana; 3.`jeśli wyrażenie warunkowe(wyrażenie2) jest różne od zera, wówczas wykonywane zostaną instrukcje będące treścią pętli(instrukcja); 4.`po wykonaniu treści pętli wykonane zostanie wyrażenie3, po czym następuje powrót do p. 2. Algorytm obliczania silni z N : /*---------------------------------------------------------------------------------------*/ /* Algorytm obliczania silni - N /*---------------------------------------------------------------------------------------*/ int i, N, Silnia; cin >> N; Silnia = 1; if (N >= 2) for (i=2; i <= N; i++) Silnia = Silnia*i; cout << "Silnia z " << N << " równa się: " << Silnia ; Napisz algorytm, który dla wartości "x" z przedziału {-15...15} wydrukuje wartość funkcji f(x). Funkcja f(x) jest określona w sposób następujący: Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 6 2x dla x x2 f ( x) x 5 dla ( 5 x 7) 2 dla x 7 Sprawność algorytmów Który z algorytmów jest wydajniejszy - uzasadnij odpowiedż Algorytm 1 Start 2 3 N Czytaj: i :=5 2 N=2 6 27 TAK Pisz: N 3jest L.P. NIE 71 Stop 2 TAK 8 i dzieli N 3 jest L.P. Pisz: N nie NIE 1 7 i :=5i+1 NIE TAK i =8 N 2 7 Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 7 Algorytm 2 Start 2 3 Czytaj: N T AK N =1 2, 3 NIE 6 2 dzieli N 72 Pisz: N 3jest L.P. 1 7 T AK Stop 2 NIE i :=5 3 T AK 8 i dzieli N 3 jest L.P. Pisz: N nie NIE 1 7 i :=5i+2 NIE T AK i =8 N 2 7 Cwiczenia_Wstęp do informatyki dr. Elżbieta Kryś . p. 8 Algorytm 3 Start 2 3 Czytaj: N TAK N =1 2, 3 NIE 6 2 dzieli N 72 Pisz: N 3jest L.P. 1 7 TAK Stop 2 NIE i :=5 3 TAK 8 i dzieli N 3 jest L.P. Pisz: N nie NIE 1 7 i :=5i+2 NIE TAK 8 i > Sqrt(N) 2 7 Napisz trzy algorytmy wykorzystujące struktury sterujące ( lub kombinacje struktur.) dla instrukcji. Napisane algorytmy przedstaw w postaci diagramów