Táborské soukromé gymnázium, s. r. o.
Pracovní listy - programování (algoritmy v jazyce Visual Basic) Předmět: Seminář z informatiky a výpočetní techniky Třída: 3. a 4. ročník vyššího stupně gymnázia
Algoritmus
Zadání v jazyce českém: 1. Je dán rovnostranný trojúhelník o stranách A. Máte vytvořit algoritmus pro výpočet obvodu a obsahu tohoto trojúhelníka. 2. Vytvořte algoritmus pro výpočet Pythagorovy věty. Použijeme v pozdější době. 3. Je dán rovnostranný trojúhelník o stranách A. 4. Vytvořte algoritmus pro výpočet obvodu a obsahu tohoto trojúhelníka. 5. Jsou dána čísla A a B. Spočítejte jejich podíl. 6. Vytvořte algoritmus pro výpočet výrazu
X =
A+ B C+D
7. Vytvořte algoritmus pro výpočet výrazu X=
A
8. Jsou dána tři čísla A, B, C. Určete, zda mohou tvořit strany trojúhelníka. 9. Je dána lineární rovnice ve tvaru: A*X + B = 0, kde proměnné A, B jsou načítány zvenčí. Vytvořte algoritmus pro výpočet X. 10. Je dána kvadratická rovnice ve tvaru: AX2 + BX + C = 0, kde čísla A, B, C jsou načítána zvenčí. Vytvořte algoritmus pro výpočet kořenů kvadratické rovnice. Hledejte řešení pouze v oboru reálných čísel. 11. Jsou dána tři čísla A, B, C. Určete, zda mohou tvořit strany trojúhelníka. Pokud ano, zjistěte je-li trojúhelník pravoúhlý.
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Zadaní v anglickém jazyce 1. Create algorithm for calculation of an expression: =
+ +
2. Create algorithm for calculation of an expression: =
√ + +
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Algoritmus – součin pomocí součtu Úkolem je sestavit algoritmus, který bude umět vynásobit dvě celá čísla mezi sebou. Nesmí být použita operace násobení, protože umíte jen sečítat. Např. 5 * 2 je jako 5 + 5 8 * 3 je jako 8 + 8 + 8, tedy A * B je jako A + A + A + … + A, A sečtete B-krát Úloha je pro cyklus se známým počtem opakování. Použité proměnné: A, B C … proměnná, do které se bude ukládat mezivýsledek součtů; musí být na začátku prázdná I … řídicí proměnná cyklu
Cykly – příklady 1. Vytvořte algoritmus pro maximum z deseti kladných čísel 2. Vytvořte algoritmus pro sumu 10 různých čísel, resp. libovolného počtu čísel (dva algoritmy, kdy pro libovolný počet čísel bude zjednodušený).
Vývojové diagramy k slovně zapsaným algoritmům Příklad 1: Algoritmus zatloukání hřebíků Slovní popis: 1. 2. 3. 4.
Vezmi kladivo a hřebík Přilož hřebík k desce Uhoď kladivem na hlavičku Je hřebík zatlučen? ANO - pokračuj bodem 5 NE - vrať se na bod 3 5. Ukonči činnost a odlož kladivo
Vývojový diagram:
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Příklad 2: Algoritmus přechodu křižovatky, řízené semaforem Slovní popis: 1. Dojdi až k semaforu 2. Svítí na semaforu červená? ANO - čekej, vrať se na bod 2 NE - pokračuj bodem 3 3. Přejdi ulici přes přechod
Vývojový diagram:
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Vývojové diagramy k slovně zapsaným algoritmům Příklad 1. •
Formulace problému Sestavte algoritmus na součet čísel A, B, C, D a vytisknutí jejich součtu.
•
Analýza úlohy Vstupní údaje: čísla A, B, C, D Výstupní údaje: SOUČET Analýza: SOUČET= A+B+C+D
•
Sestavení algoritmu Slovní popis: 1. 2. 3. 4.
Čti A, B, C, D SOUČET= A+B+C+D Piš SOUČET Konec
Vývojový diagram: Zápis programu var A,B,C,D,S : integer; begin readln(A,B,C,D); S:=A+B+C+D; writeln(S); end.
Příklad 2. •
Formulace problému Sestavte algoritmus pro výpočet obsahu kruhu.
•
Analýza úlohy Vstupní údaje: poloměr R Výstupní údaje: obsah S Analýza: S= πR2
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
•
Sestavení
algoritmu
Slovní popis: 1. Čti R 2. Je R >0 ? ANO - jdi na 3. NE - jdi na 5. 3. S= pi*R*R 4. Piš S a jdi na 6 5. Piš Poloměr musí být kladný 6. Konec Vývojový diagram: Zápis programu var R,S : real; begin readln(R); if R>0 then begin S:=pi*R*R; writeln('Obsah kruhu je : ',S); end else writeln('Poloměr musí být kladný'); end.
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Vývojové diagramy k slovně zapsaným algoritmům Příklad 1. •
Formulace problému Sestavte algoritmus, který určí, kolik ze tří čísel A, B, C je kladných.
•
Analýza úlohy Vstupní údaje: čísla A, B ,C Výstupní údaje: počet kladných čísel P_KL Analýza: výchozí počet kladných čísel je nula, je-li kterékoliv z čísel kladné, zvyš počet kladných čísel o jedna
•
Sestavení algoritmu Vývojový diagram: Zápis programu var A,B,C,P_KL : integer; begin readln(A, B, C); P_KL:=0; if A>0 then P_KL:=P_KL+1; if B>0 then P_KL :=P_KL+1; if C>0 then P_KL :=P_KL+1; writeln('Počet kladných čísel je : ',P_KL ); end.
Příklad 2. •
Formulace problému Sestavte algoritmus, který určí, kolik z daného počtu čísel je kladných.
•
Analýza úlohy Vstupní údaje: počet čísel POCET, jedno z čísel C Výstupní údaje: počet kladných čísel P_KL Analýza: výchozí počet kladných čísel je nula, je-li kterékoliv z čísel kladné, zvyš počet kladných čísel o jedna
•
Sestavení algoritmu
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Vývojový diagram: Zápis programu var C,POCET,P_KL,I : integer; begin readln(POCET); P_KL:=0; for I:=1 to POCET do begin readln(C); if C > 0 then P_KL:=P_KL+1; end; writeln('Počet kladných čísel je : ',P_KL ); end.
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Vývojové diagramy k slovně zapsaným algoritmům Příklad 1. •
Formulace problému Sestavte algoritmus, který vypočítá aritmetický průměr z posloupnosti celých kladných čísel končící nulou, která do posloupnosti nepatří. a) předpokládejte, že posloupnost není prázdná b) posloupnost může být prázdná (hned první přečtené číslo je 0).
•
Analýza úlohy Vstupní údaje: jedno z čísel posloupnosti C Výstupní údaje: aritmetický průměr PRUMER (počet čísel POCET, součet čísel SUMA) Analýza: aritmetický průměr se počítá podělením součtu členů posloupnosti jejich počtem. a) Protože nevíme, kolik čísel bude posloupnost obsahovat (víme jen, že minimálně jedno), budeme průběžně během čtení jednotlivých členů posloupnosti aktualizovat počet a součet čísel. Pro čtení zvolíme cyklus s podmínkou na konci, protože první číslo je určitě členem posloupnosti a bude se tedy zpracovávat. b) V případě, že posloupnost bude prázdná, nelze počítat průměr, protože počet čísel je nula a nulou nelze dělit. Pro čtení posloupnosti zvolíme cyklus s podmínkou na začátku, abychom nezpracovávali nulu, pokud by byla hned první.
•
Sestavení algoritmu a) Vývojový diagram: Zápis programu var C,POCET,SUMA : integer; PRUMER : REAL; begin POCET:=0; SUMA:=0; readln(C); repeat POCET:=POCET+1; SUMA:=SUMA+C; readln(C); until C=0; PRUMER:=SUMA/POCET; writeln('Průměr : ',PRUMER); end.
•
Sestavení algoritmu b)
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Vývojový diagram: Zápis programu var C,POCET,SUMA : integer; PRUMER : REAL; begin POCET:=0; SUMA:=0; readln(C); while c<>0 do begin POCET:=POCET+1; SUMA:=SUMA+C; readln(C); end; if POCET>0 then begin PRUMER:=SUMA/POCET; writeln('Průměr : ',PRUMER); end else writeln('Prázdná posloupnost'); end.
Příklad 2. •
Formulace problému Sestavte algoritmus, který určí největší prvek posloupnosti celých čísel s předem známým počtem prvků.
•
Analýza úlohy Vstupní údaje: počet čísel POCET, jedno z čísel posloupnosti C Výstupní údaje: maximální hodnota MAX Analýza: Maximum nalezneme tak, že postupně porovnáme každý prvek posloupnosti s hodnotou, která byla zatím největší. Problém je u první hodnoty posloupnosti. Řeší se dvěma způsoby: 1. první prvek posloupnosti se uloží jako maximum a s ním se pak porovnávají zbývající prvky posloupnosti 2. jako maximum se uloží nejmenší možné číslo, se kterým se porovnávají všechny prvky posloupnosti
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Zvolíme druhý způsob. (Běžnou chybou je uložit jako výchozí maximum nulu. V případě posloupnosti obsahující pouze záporná čísla, by takový program nenalezl skutečné maximum.) •
Sestavení algoritmu Vývojový diagram: Zápis programu var C,POCET,MAX : integer; begin readln(POCET); MAX:=-MAXINT; for I:=1 to POCET do begin readln(C); if C>MAX then MAX:=C; end; writeln('Maximum : ',MAX); end.
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Ukázka algoritmu vybrané úlohy v prostředí jazyka Visual Basic.
CZ.1.07/1.1.00/14.0143
Táborské soukromé gymnázium, s. r. o.
Ukázka algoritmu vybrané úlohy v prostředí jazyka Visual Basic.
CZ.1.07/1.1.00/14.0143