• Nie Znaleziono Wyników

Algorytmy iteracyjne

N/A
N/A
Protected

Academic year: 2021

Share "Algorytmy iteracyjne"

Copied!
12
0
0

Pełen tekst

(1)

Podstawy programowania

Analiza algorytmów.

Projektowanie algorytmów.

(2)

Zad.1. Opracuj algorytm, a następnie program wyznaczający pierwiastki równania kwadratowego tak, aby sprawdzane było czy równanie jest:

• kwadratowe (wtedy wyznacz pierwiastki – jeśli są),

• liniowe (wypisz miejsce zerowe),

• sprzeczne (brak miejsc zerowych) czy tożsamościowe (nieskończenie wiele miejsc zerowych).

(3)

Algorytmy iteracyjne

Zad.2. Sformułuj algorytm i napisz program obliczający sumę ciągu N kolejnych liczb naturalnych. Wartość N jest wprowadzana z klawiatury. Wyświetl wyniki podając ilość sumowanych liczb i wartość ich sumy.

Start

Stop Podaj N

Wyświetlenie sum

sum=sum+j;

j=j+1;

j<N

T

N

j=0; sum=0;

N – liczba liczb j – licznik, iterator

sum – suma wyrazów ciągu

(4)

Pętla for

• stosowana wtedy, gdy dokładnie wiadomo ile razy pętla ma się wykonać,

• najbardziej odporna na przypadkowe błędy programisty Składnia:

for (instrukcja_inicjujaca; wyrazenie_warunkowe; instrukcja_kroku) {

// instrukcje;

}

instrukcja_inicjujaca – najczęściej operacja przypisania początkowej wartości iteratorowi, np. int i = 0. Obiekt zdefiniowany w instrukcji inicjującej istnieje tylko w ramach pętli for (to zmienna automatyczna o zasięgu blokowym).

wyrazenie_warunkowe – pętla (czyli instrukcje zawarte pomiędzy klamrami) wykonuje się tak długo, jak wyrażenie to ma wartość true, np. i < 10

instrukcja_kroku – instrukcja powodująca zmianę wartości iteratora, np. ++i Te trzy elementy muszą być rozdzielone średnikami ;

Składnia nieskończonej pętli for: for(;;);

(5)

Algorytmy iteracyjne

Zad.3. Sformułuj algorytm i napisz program obliczający sumę N liczb naturalnych podawanych przez użytkownika. Wartość N jest wprowadzana z klawiatury. Wyświetl wyniki podając ilość sumowanych liczb i wartość ich sumy.

Start

Stop Podaj N

Wyświetlenie sum

sum=sum+licz;

j=j+1; j<N

T

N

j=0; sum=0;

N – liczba liczb j – licznik, iterator

licz – liczby podawane przez użytkownika

sum – suma podanych liczb

Podaj licz

(6)

Algorytmy iteracyjne

Zad.4. Sformułuj algorytm i napisz program obliczający sumę liczb podawanych przez użytkownika. Obliczenia kończy wpisanie liczby 0.

Start

Stop

Wyświetlenie sum

sum=sum+licz;

licz=0

T

N

sum=0;

N – liczba liczb j – licznik, iterator

sum – suma wyrazów ciągu

Podaj licz

(7)

Pętla while

• stosowana wtedy, gdy nie wiadomo z góry ile razy pętla ma się wykonać (np.

liczbę tę wprowadza użytkownik programu)

• podatna na błędy programisty, ponieważ instrukcja_inicjujaca, wyrazenie_warunkowe oraz instrukcja_kroku nie znajdują się w jednej linii, więc łatwo o którejś z nich zapomnieć.

Składnia:

instrukcja_inicjujaca;

while (wyrazenie_warunkowe) {

instrukcje;

instrukcja_kroku;

}

Cechą charakterystyczną pętli while jest to, że instrukcje mogą nigdy się nie wykonać, jeśli wyrazenie_warunkowe ma początkowo wartość false.

Składnia nieskończonej pętli while:

while(true) {

instrukcje;

}

(8)

Pętla do while

• stosowana wtedy, gdy nie wiadomo z góry ile razy pętla ma się wykonać (np.

liczbę tę wprowadza użytkownik programu) – podobnie jak pętla while,

• podatna na błędy programisty, ponieważ instrukcja_inicjujaca, wyrazenie_warunkowe oraz instrukcja_kroku nie znajdują się w jednej linii, więc łatwo o którejś z nich zapomnieć – podobnie jak pętla while,

Składnia:

instrukcja_inicjujaca;

do {

instrukcje;

instrukcja_kroku;

} while (wyrazenie_warunkowe);

Cechą charakterystyczną pętli while jest to, że instrukcje muszą się wykonać co najmniej raz, nawet jeśli wyrazenie_warunkowe ma początkowo wartość false.

Sprawdzenie warunku znajduje się bowiem po instrukcjach (w pętli while – przed).

Składnia nieskończonej pętli do while:

do {

instrukcje;

} while(true);

(9)

Algorytmy iteracyjne

Zad.5. Sformułuj algorytm i napisz program obliczający n-tą potęgę zadanej liczby x.

(10)

Zadania

Zad.6. Napisz program symulujący odliczanie bomby używając pętli:

a) while(), b) do while(), c) for().

Należy wypisać wszystkie kolejne liczby całkowite (łącznie z zerem), a po upływie zadanego czasu napis „Boom!”.

Wskazówka: do odmierzania czasu wykorzystaj funkcję Sleep(ms) z biblioteki windows.h.

Zad.8. Napisz program, który będzie prosił o hasło dostępu do systemu dopóki nie otrzyma hasła poprawnego.

• gdy je otrzyma wyświetli napis „Zalogowano!”.

• w przypadku więcej niż 5 prób wypisze komunikat: „Dostęp zablokowany!”

Zad.9. Zmodyfikuj program obliczający potęgę liczby tak, aby umożliwiał ponowne wykonanie obliczeń. Wpisanie litery n kończy działanie programu.

Zad.7. Napisz program, który za pomocą pętli for sumuje liczby parzyste w przedziale od 1 do 100.

(11)

Liczby losowe w C++

• Liczby „losowe” generowane przez komputer wyznaczane są na podstawie przyjętego algorytmu (wzoru generacyjnego), więc są przewidywalne.

Z tego powodu nazywane są liczbami pseudolosowymi.

• W C++ za generację takich liczb odpowiada m.in. funkcja rand(), która zwraca liczbę całkowitą z przedziału od 0 do RAND_MAX (wykorzystywany jest równomierny rozkład prawdopodobieństwa). Makro RAND_MAX wynosi co najmniej 32 767.

• W celu zapewnienia zmienności generowanych liczb pomiędzy uruchomieniami programu konieczna jest inicjalizacja generatora liczbą o charakterze zmiennym, do czego dobrze nadaje się aktualny czas (funkcja time() ). Za inicjalizację odpowiada funkcja srand().

• deklaracje funkcji srand() i rand() znajdują się w pliku nagłówkowym cstdlib

Zad.10. Napisz program, który wygeneruje trzy liczby losowe: pierwszą z przedziału od 0 do 99, drugą z przedziału od 1 do 100, trzecią z przedziału od 1985 do 2014.

(12)

Zad.11. Gra w ”Za dużo, za mało”. Komputer losuje liczbę całkowitą z zakresu 1...100, a gracz ma za zadanie odgadnąć, co to za liczba. Jeżeli podana wartość jest:

• większa – wyświetlany jest komunikat „Podałeś za dużą wartość”,

• mniejsza – wyświetlany jest komunikat „Podałeś za małą wartość”,

• identyczna z wylosowaną – wyświetlany jest komunikat „Gratulacje” i gra

• się kończy.

Zadania

Cytaty

Powiązane dokumenty

Tezę tę sformułowano na podstawie analizy kondycji ekonomicznej i skłon- ności do inwestowania gospodarstw rolnych o wielkości 8 i więcej ESU, które znajdowały się w

O Pierze (sic!) Abelardzie stwierdził, że był tak samo filozoficzny jak każdy z jego współczesnych, a prawda stanowiła jego szczególną twierdzę. Logika Piotra Hiszpana

człowieka, ale równocześnie jest walką przeciw potrafiącym zaślepić afektom. „Phronesis nie jest zatem niczym samo przez się zrozumiałym, lecz zadaniem, które musi być

Trzebaby zbadać ciągłość na osi OX, bo x jest w mianowniku.arctg ma dobrze określoną granicę w +∞, −∞, więc w danym punkcie dobrze określona jest granica z góry i z

Kondensator pierwszy o pojemności 3,55 µF jest naładowany do równicy potencjałów 6,3 V, przy użyciu źródła o takiej różnicy potencjałów1. Następnie źródło zostaje

Żywienie płazów to niezwykle złożone zagad- nienie, na które składają się specyficzne wymagania pokarmowe poszczególnych gatunków tych zwierząt oraz ich fizjologia..

Dietary mistakes and resulting metabolic diseases in reptiles Konkol D.. 2 , Department of Environment Hygiene and Animal Welfare 1 , Institute of Animal Breeding 2  Faculty of

Spółdzielnia ELSIN uczy zawodu, umożliwia podjęcie pracy i otacza opieka swych