Ćwiczenie 4 - Robert Arsoba
Transkrypt
Ćwiczenie 4 - Robert Arsoba
Podstawy programowania dr inż. Robert Arsoba Ćwiczenie 4 Instrukcje iteracyjne Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z zastosowaniem instrukcji iteracyjnych (pętli) i wykształcenie umiejętności ich wykorzystania w programach tworzonych w języku C. Zakres ćwiczenia obejmuje: pętlę z licznikiem (instrukcja for), pętlę z testem na wejściu (instrukcja while) i pętlę z testem na wyjściu (instrukcja do-while). Przygotowanie się do ćwiczenia • • • Zapoznać się z wykładem dotyczącym instrukcji iteracyjnych. • Zwrócić uwagę na składnię instrukcji for, while i do-while. • Przeanalizować opis i przykłady użycia instrukcji zamieszczone w materiałach do wykładu. • Powtórzyć zasady tworzenia wyrażeń logicznych (operatory relacji i logiczne) określających warunki wykonywania pętli. • Przeanalizować zasady przerywania pętli instrukcją break i kontynuowania pętli instrukcją continue. Zapoznać się z przykładowym programem zamieszczonym w opisie ćwiczenia (program obliczający wartość silni). • Przeanalizować kod źródłowy programu. • Skompilować i uruchomić program, przetestować jego działanie. Zrealizować samodzielnie zadania ćwiczeniowe. • Opracować dla poszczególnych zadań algorytmy w postaci schematów blokowych (warianty z różnymi rodzajami pętli). • Na podstawie algorytmów utworzyć kod źródłowy programów. Zadania do wykonania 1. Napisać program wczytujący z klawiatury dwie liczby a i n, a następnie obliczający i wyświetlający na ekranie wartość potęgi an, przy założeniu, że a jest liczbą zmiennoprzecinkową, n jest liczbą całkowitą (dodatnią, ujemną lub równą 0). Potęgowanie zrealizować w postaci operacji mnożenia powtarzanej w pętli. 2. Napisać program wczytujący z klawiatury liczbę naturalną i wyświetlający na ekranie komunikat określający, czy wprowadzona liczba jest liczbą pierwszą. Wskazówka: liczba pierwsza to liczba naturalna większa od 1, podzielna tylko przez 1 i przez samą siebie, np. 2, 3, 5, 7, 11, 13, 17, 19, 23, 27 itd. 3. Napisać program wczytujący z klawiatury liczbę naturalną i wyświetlający na ekranie komunikat określający, czy wprowadzona liczba jest liczbą doskonałą. Wskazówka: liczba doskonała to liczba naturalna równa sumie swoich podzielników całkowitych właściwych, np. 6, 28, 496 itd. 6 = 1 + 2 + 3. Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 1 Podstawy programowania dr inż. Robert Arsoba 4. Napisać program wczytujący z klawiatury liczbę naturalną i wyświetlający na ekranie komunikat określający, czy wprowadzona liczba jest liczbą Amstronga. Wskazówka: liczba Amstronga to liczba naturalna równa sumie sześcianów swoich cyfr, np. 153 = 13 + 53 + 33. W programie nie stosować konwersji liczby na łańcuch znakowy – wszystkie operacje należy wykonać na wartościach liczbowych. 5. Napisać program wyświetlający na ekranie wartości funkcji f(x)=1/x w zadanym przedziale od a do b z krokiem k (tzw. tablicowanie funkcji). Przykład działania programu: Tablicowanie funkcji 1/x Podaj lewy brzeg przedziału : 0 Podaj prawy brzeg przedziału: 10 Podaj krok: 2 x f(x) --------------------0 poza dziedziną 2 0.50 4 0.25 6 0.17 8 0.12 10 0.10 Wymagana zawartość sprawozdania z ćwiczenia 1. Notatki ze schematami blokowymi algorytmów do zadań. 2. Pliki z kodem źródłowym utworzonych programów. Zalecane źródła wiedzy 1. B. Kernighan, D. Ritchie: „Język ANSI C”, WNT, Warszawa 2001. Przykładowy program /* * Obliczanie wartosci silni n! = 1*2*...*n * Robert Arsoba * 1.12.2009 * Wersja 1.0 */ #include <stdio.h> #include <stdlib.h> /* funkcje printf, scanf */ /* funkcja system */ int n; double wynik; int i; /* /* /* /* liczba: argument silni */ wynik obliczen silni */ licznik w petli for */ zmienna przyjmujaca wartosci 1..n */ Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 2 Podstawy programowania dr inż. Robert Arsoba int main() { system("cls"); printf("Program oblicza wartosc silni\n"); printf("Podaj liczbe: "); scanf("%d", &n); /* odczyt z klawiatury */ if (n < 0) /* sprawdzenie podanej liczby */ { printf("Podaj liczbe naturalna lub 0\n\n"); system("pause"); return -1; } /*---------- petla for ----------*/ wynik = 1; /* najmniejsza mozliwa wartosc silni */ for (i = 1; i <= n; i++) wynik = wynik*i; /* domnazanie kolejnych wartosci */ printf("Silnia liczby %d wynosi %.0lf\n", n, wynik); /*--------- petla while ---------*/ wynik = 1; i = 1; while (i <= n) { wynik = wynik*i; i++; } printf("Silnia liczby %d wynosi %.0lf\n", n, wynik); /*------- petla do-while -------*/ wynik = 1; i = 1; do { wynik = wynik*i; i++; } while (i <= n); printf("Silnia liczby %d wynosi %.0lf\n\n", n, wynik); system("pause"); return 0; } Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 3