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: AX 2 + 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ý.
Zadaní v anglickém jazyce 1. Create algorithm for calculation of an expression: = + + 2. Create algorithm for calculation of an expression: = + +
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. Vezmi kladivo a hřebík 2. Přilož hřebík k desce 3. Uhoď kladivem na hlavičku 4. Je hřebík zatlučen? ANO - pokračuj bodem 5 NE - vrať se na bod 3 5. Ukonči činnost a odlož kladivo
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é 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. Čti A, B, C, D 2. SOUČET= A+B+C+D 3. Piš SOUČET 4. Konec var A,B,C,D,S : integer; readln(a,b,c,d); S:=A+B+C+D; writeln(s); 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= πr 2
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 var R,S : real; readln(r); if R>0 then S:=pi*R*R; writeln('obsah kruhu je : ',S); end else writeln('poloměr musí být kladný');
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 Příklad 2. var A,B,C,P_KL : integer; 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 ); 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
var C,POCET,P_KL,I : integer; readln(pocet); P_KL:=0; for I:=1 to POCET do readln(c); if C > 0 then P_KL:=P_KL+1; end; writeln('počet kladných čísel je : ',P_KL );
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) var C,POCET,SUMA : integer; PRUMER : REAL; 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); Sestavení algoritmu b)
var C,POCET,SUMA : integer; PRUMER : REAL; POCET:=0; SUMA:=0; readln(c); while c<>0 do POCET:=POCET+1; SUMA:=SUMA+C; readln(c); end; if POCET>0 then PRUMER:=SUMA/POCET; writeln('průměr : ',PRUMER); end else writeln('prázdná posloupnost'); 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
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 var C,POCET,MAX : integer; readln(pocet); MAX:=-MAXINT; for I:=1 to POCET do readln(c); if C>MAX then MAX:=C; end; writeln('maximum : ',MAX);
Ukázka algoritmu vybrané úlohy v prostředí jazyka Visual Basic.
Ukázka algoritmu vybrané úlohy v prostředí jazyka Visual Basic.