Algorytmem nazywa się poddający się interpretacji

advertisement
Cwiczenia_Wstęp do informatyki
dr. Elżbieta Kryś
.
p. 1
Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji
wykonania zadania mającego określony stan końcowy dla każdego zestawu danych
wejściowych W algorytmach mogą występować kroki powtarzane (iteracje) a także
struktury warunkowe typu rozwidleń
Napisać fragment programu na obliczenie sumy oraz liczby elementów ujemnych i dodatnich w
zadanym ciągu {a}, składającym się z N elementów różnych od zera. N = 10.
{a}
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
a[10]
3
-2
5
8
12
-4
-26
12
45
-76
Sd
Su
lu
ld
wariant1:
Sd = 0; ld = 0;
Su = 0; lu = 0;
for (i = 1; i <= N; i = i+1)
if ( a[i] > 0 )
{
Sd = Sd + a[i];
ld = ld + 1;
}
else
{
Su = Su + a[i];
lu = lu + 1;
}
wariant 2:
et1 :
et2 :
et3 :
Sd = 0; ld = 0;
Su = 0; lu = 0;
i = 1;
if (a[i] > 0) goto et2;
Su = Su + a[i];
lu = lu + 1;
goto et3;
Sd = Sd + a[i];
ld = ld + 1;
i = i + 1;
if (i <= N ) goto et1;
Najtrudniejszą częścią rozwiązania problemu na komputerze jest prawidłowe
zaprojektowanie algorytmu rozwiązania. Wszystkie programy mogą być napisane w
oparciu o trzy struktury sterujące:
strukturę sekwencji
strukturę wyboru
strukturę powtórzenia.
Cw z petli
1
Cwiczenia_Wstęp do informatyki
dr. Elżbieta Kryś
.
p. 2
Struktura sekwencji - dopóki nie jest powiedziane inaczej, "komputer" wykonuje
wyrażenia programu jedno po drugim w porządku w jakim zostały napisane
do sumy dodaj x
suma=suma+x
licznik=licznik+1
do licznika dodaj 1
Działanie programu jest graficzną reprezentacją algorytmu lub jego części. Można
używać określonych symboli specjalnego przeznaczenia: prostokąty, romby, owale,
koła. Strzałki łączące te symbole to linie przepływu.
Symbol prostokąta = symbol działania = > dowolne działanie, także operacja
wejścia/wyjścia (input/output)
C++ dostarcza trzech typów struktur wyboru:
if (pojedyncza struktura wyboru)
if / else (podwójna struktura wyboru)
switch (struktura wielokrotnego wyboru)
C++ dostarcza trzech typów struktur powtórzenia:
while
do / while
for
C++ posiada siedem struktur sterujących:
- sekwencję
- trzy typy wyboru
- trzy typy powtórzenia (loop, pętle)
Instrukcja warunkowa if
Instrukcja warunkowa umożliwia wykonanie pewnej instrukcji w zależności od wartości
wyrażenia. Wszystkie wartości różne od 0 są traktowane jako prawda, równe 0 jako
fałsz. Wyrażenia logiczne są liczone tylko do momentu, w którym można określić jego
wartość. W obu rozkazach instrukcja może być instrukcją złożoną
Cw z petli
2
Cwiczenia_Wstęp do informatyki
dr. Elżbieta Kryś
.
p. 3
W pierwszym przypadku instrukcja wykonuje się, jeśli wartość wyrażenia jest różna od
0. W drugim wykonuje się jedna z dwóch podanych instrukcji (nigdy obie) - pierwsza,
gdy wartość wyrażenia jest różna od 0, druga - gdy wartość wyrażenia jest równa 0.
Przykłady:
/*---------------------------------------------------------------------------------------Algorytm oblicza wartość funkcji f(x) w punkcie x.
Funkcja zadana jest wzorem:
f(x) = 1/(x^2 + 1), dla x <=0
f(x) = ln x,
dla x > 0
/*---------------------------------------------------------------------------------------float x, f;
cout << "Podaj wartość x: ";
cin >> x;
if (x <= 0)
f = 1/(pow(x,3) + 1);
else f = log(x);
cout << "\nDla x = ";
cout << x << " funkcja F(x) = ";
cout << f;
Możemy stosować wybór wielowariantowy używając zagnieżdżoną instrukcję if..else:
if ( warunek1 ) instrukcja1;
else if ( warunek2 ) instrukcja2;
else if ( warunek3 ) instrukcja3;
...................................................;
else if ( warunekN ) instrukcjaN;
/*
Warunek trojkata
*/
float a,b,c;
cout << "Podaj a: "; cin >> a;
cout << "a = " << a << endl;
cout << "\nPodaj b: "; cin >> b;
cout << "b = " << b << endl;
Cw z petli
3
Cwiczenia_Wstęp do informatyki
dr. Elżbieta Kryś
.
p. 4
cout << "\nPodaj c: "; cin >> c;
cout << "c = " << c << endl << endl;
if (a+b > c)
cout << "Spelniony jest I warunek trojkata; " << a+b << endl;
else cout << "Nie jest spelniony I warunek trojkata; " << a+b << endl;
if (b+c > a)
cout << "Spelniony jest II warunek trojkata; " << b+c << endl;
else cout << "Nie jest spelniony II warunek trojkata; "<< b+c << endl;
if (a+c > b)
cout << "Spelniony jest III warunek trojkata; " << a+c << endl;
else cout << "Nie jest spelniony III warunek trojkata; "<< a+c << endl;
}
/*-------------------------------------------------------------------------------------------------*/
/*Algorytm oblicza stopień na podstawie liczby otrzymanych punktów */
/* Kryteria: 0.. 49 pkt. - 2
/*
50.. 59 pkt. - 3
/*
60.. 69 pkt. - 3.5
/*
70.. 79 pkt. - 4
/*
80.. 89 pkt. - 4.5
/*
90..100 pkt. - 5
/*------------------------------------------------------------------------------------------------
*/
*/
*/
*/
*/
*/
int lp; float stopien;
cout << "Podaj liczbę punktów (0 <= lp <= 100): ";
cin >> lp;
if (lp <= 49) stopien = 2;
else if (lp <= 59) stopien = 3;
else if (lp <= 69) stopien = 3.5;
else if (lp <= 79) stopien = 4;
else if (lp <= 89) stopien = 4.5;
else stopien = 5;
cout << "Twoja ocena: "<< stopien ;
}
Zadania poziomu "1" - instrukcje podstawowe (10 zadań)
Wymagania:
- instrukcja podstawiania, instrukcja if,
- podstawowe operatory i funkcje (np. pierwiastek, logarytm, f. trygonometryczne)
- zmienne typu całkowitego i zmiennoprzecinkowego,
- podstawowe instrukcje wejścia/wyjścia (cin, cout).
uwaga: w rozwiązaniach nie stosujemy tablic.
1.01 Napisz algorytm rozwiązujący równanie kwadratowe.
Dane wejściowe: wartości trzech współczynników.
Wyjściowy wydruk na ekranie: a) wartości pierwiastków rzeczywistych, b) wartości pierwiastków
rzeczywistych i urojonych.
1.02 Napisz algorytm który wczyta trzy wartości typu rzeczywistego i na wyjściu wydrukuje czy
mogą one być długościami boków trójkąta.
Dane wejściowe: trzy liczby.
Wydruk wyjściowy na ekranie: łańcuch znaków: "wczytane wartości mogą być bokami trójkata"
lub " wczytane wartości NIE mogą być bokami trójkąta".
Cw z petli
4
Cwiczenia_Wstęp do informatyki
dr. Elżbieta Kryś
.
p. 5
1.03
Napisz algorytm który wczyta 20 liczb rzeczywistych i po ich wczytaniu wydrukuje
największą z wczytanych liczb oraz jako która z kolei była wczytana.
Dane wejściowe: 20 liczb.
Wydruk wyjściowy (na ekranie): wartość największej z wczytanych liczb oraz jej numer kolejny
przy wczytywaniu.
a) zaproponuj rozwiązanie w przypadku jeśli dwie lub więcej z wczytanych liczb będzie miało
równe maksymalne wartości.
1.04 Napisz algorytm który znajdzie najmniejszą wartość z kolejno wczytywanych liczb.
Dane wejściowe: liczba mówiąca ile liczb będzie wczytanych, wczytywane liczby. Wydruk
wyjściowy: wartość najmniejszej z wczytanych liczb oraz jej numer kolejny przy wczytywaniu.
1.05 Rozwiąż zadanie 1.04 zmodyfikowane następująco: wczytywane są tylko liczby dodatnie,
nie wiesz ile będzie wczytanych liczb (czyli zaproponuj sposób zakończenia programu po
wczytaniu ostatniej liczby dodatniej).
1.06 Napisz algorytm który wczyta a) dwie b) trzy liczby calkowite i wydrukuje ich największy
wspólny podzielnik
1.07 Napisz algorytm rozwiązujący układ dwóch równań liniowych z dwoma niewiadomymi.
ax + by = c
dx + ey = f
Dane wejściowe: a, b, c, d, e, f. Wydruk wyjściowy: wartości x i y.
1.08 Napisz algorytm który wczyta liczbę calkowitą (z przedziału: 0 – 1000, zapisaną w
systemie dziesiętnym) i wydrukuje tę samą liczbę przedstawioną w systemie:
a) dwójkowym, b) trójkowym, c) ósemkowym, d) szesnastkowym (heksadecymalnym).
1.09 Napisz algorytm który wczyta "n" liczb i wydrukuje ich: a) średnią arytmetyczną, b)
wariancję.
n
x )2
( xi
Podpowiedź: wariancję liczymy wg wzoru: V
1
n
; gdzie <x> oznacza średnią
arytmetyczną.
1.10
Napisz algorytm który wczyta parę liczb rzeczywistych (X, Y) i określi czy punkt
płaszczyźnie wyznaczony tymi liczbami leży:
a) wewnątrz zacienionego obszaru na rysunku poniżej,
b) na granicy zacienionego obszaru,
c) poza granicami zacienionego obszaru.
Cw z petli
5
na
Download