Zajęcia nr.2 Instrukcje iteracyjne (pętle) Przykładowe programy Program 1: Napisać program który ma zsumować wszystkie liczby całkowite znajdujące się w przedziale [a,b] , a i b są liczbami całkowitymi podanymi przez użytkownika. #include<iostream.h> void main() { int a,b,i,suma; cout << "Podaj dolna granice przedzialu: "; cin >> a; cout << "Podaj gorna granice przedzialu: "; cin >> b; suma = 0; // dajemy sumie wartość poczatkowa for( i=a ; i<=b ; i++ ) suma = suma + i; cout << "Suma wszystkich całkowitych liczb wynosi: " << suma << endl; system("pause"); } Symulacja działania poprzedniego programu: // np. jeżeli użytkownik poda a=1 b=3 // suma = 0 // program dotarł do pętli i daje wartość początkową i=a czyli i=1 // sprawdzamy warunek: czy i <= b czyli czy 1 <= 3 warunek spełniony zatem pętla się wykonuje // pierwsze wykonanie pętli: suma = suma + i suma = 0+1 suma = 1 // drugie wykonanie pętli: // trzecie wykonanie pętli: i++ i = i+1 i = 1 + 1 i = 2 Sprawdzamy: czy i <=b , czyli czy 2 <=3 warunek nadal spełniony suma = suma + i suma = 1+2 suma = 3 i++ i = i+1 i = 2 + 1 i = 3 Sprawdzamy: czy i <=b , czyli czy 3 <=3 warunek nadal spełniony suma = suma + i suma = 3+3 suma = 6 i++ i = i+1 i = 3 + 1 i = 4 Sprawdzamy: czy i <=b , czyli czy 4 <=3 warunek NIE spełniony Program wychodzi z pętli Program 2: Napisać program który ma zsumować wszystkie parzyste liczby znajdujące się w przedziale [a,b] , gdzie a i b są liczbami całkowitymi podanymi przez użytkownika. #include<iostream> using namespace std; void main() { int a,b,i,suma; cout << "Podaj dolna granice przedzialu: "; cin >> a; cout << "Podaj gorna granice przedzialu: "; cin >> b; suma = 0; for( i=a ; i<=b ; i++ ) if( i%2 == 0) //jeżeli reszta dzielenia i przed 2 jest rowna zero suma = suma + i; cout << "Suma wszystkich parzystych liczb wynosi: " << suma << endl; system("pause"); } Program 3: Napisać program który obliczy średnią arytmetyczną parzystych liczb znajdujących się w przedziale [a,b] , gdzie a i b są liczbami całkowitymi podanymi przez użytkownika. #include<iostream> using namespace std; void main() { int a,b,i,licznik; int suma,srednia; cout << "Podaj dolna granice przedzialu: "; cin >> a; cout << "Podaj gorna granice przedzialu: "; cin >> b; suma = 0; licznik = 0; for( i=a ; i<=b ; i++ ) if(i%2 == 0) { suma = suma + i; licznik = licznik + 1; } srednia = suma / licznik; cout << "Srednia liczb = " << srednia << endl; system("pause"); } Uwagi: Jeszcze raz, aby liczba była nieparzysta to reszta jej dzielenia przez 2 musi być różna od zera: ( liczba%2 != 0 ), można to też tak zrobić że aby liczba była nieparzysta to reszta jej dzielenia przez 2 jest równa 1: (liczba%2 == 1). Aby liczba była parzysta to reszta jej dzielenia przez 2 musi być równa do zera: ( liczba%2 == 0 ), można to też tak zrobić że aby liczba była parzysta to reszta jej dzielenia przez 2 jest różna od 1: (liczba%2 != 1). Tylko liczba całkowita może być parzysta albo nie parzysta. Jeżeli dana zmienna się zmienia (zmienia swoją wartość) w pętli np. (suma, licznik) w poprzednich programach to należy dać wartość początkową tej zmiennej przez tą pętla w której ta zmienna się zmienia. // BARDZO WAŻNE!! zmienna = zmienna + x : to znaczy że nowa wartość zmiennej będzie równe starej wartości zmiennej +x, ( czyli za każdym razem powtarzania się pętli zmienna będzie się zwiększała o wartość x ). zmienna = zmienna + x można również napisać w inny sposób: zmienna += costam. i = i+1 , to znaczy ze za każdym razem i będzie się zwiększało o jeden. Można tez to napisać w podobni sposób jak poprzednio: i += 1. Kiedy nasza zmienna się zmienia o 1 to możemy również to napisać w jeszcze inny sposób: i++ (kiedy i się zwiększa o 1) , i-- (kiedy i się zmniejsza o 1). Programy które zrealizowaliście samodzielnie na zajęciach!! Osoby które nie dokończyły wszystkich zadań proszone są o ich dokończenie, w razie problemów zapraszam na konsultacje. Zadanie 1: Napisać program „Budzik”. Napisać go w taki sposób że po uruchomieniu programu włączy się budzik. Budzik ma się sam wyłączyć po 5 sygnałach. Zadanie 2: Użytkownik ma jakąś kwotę i chce ja włożyć do banku który daje pewne oprocentowanie roczne na określoną liczbę lat. Należy napisać program który obliczy ile będzie ta kwota wynosiła po tych latach z tym oprocentowaniem, (kwotę, oprocentowanie, liczbę lat podaje użytkownik). Zadanie 3: Napisać program który znajdzie największy wspólny dzielnik dwóch liczb całkowitych n i m, za pomocą metody Euklidesa. Metoda Euklidesa: NWD (n,n) = n NWD (n,m) = NWD (n-m,m) NWD (n,m) = NWD (n,m-n) dla n>m dla m>n