Ć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