Zobrazují se příspěvky se štítkemrepeat. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemrepeat. Zobrazit všechny příspěvky

úterý 10. listopadu 2009

Program Cykly 3

námět na zkoušení:
Upravte tento program tak, aby se nejdříve zeptal, kolik znaků a pak jaké znaky a pak tyto znaky v počtu, který byl zadán namaloval vedle sebe!


program cykly3;
uses crt;
var a,i,  klavesa: integer;
begin
  repeat
     writeln ('for -----------------------------------------');
     for i:=1 to 5  do
          write ('for');
     writeln (' ');
     writeln ('repeat -----------------------------------------');
     a:=0;
     repeat
         write ('rep');
         a:=a+1;
     until a>5;

     writeln (' ');
     writeln ('while -----------------------------------------');
     a:=0;
     while a<=5 do
        begin
          write ('whi');
         a:=a+1;
        end;
     writeln (' ');
     writeln ('stiskni 1, kdyz pokracovat, jinak nulu a program skonci');
     readln (klavesa);
   until klavesa<>1;
  {zde konci cyklus repeat}
 end.

pondělí 9. listopadu 2009

Tři typy cyklů

V tomto programu jsou použity všechny 3 typy cyklů. Každý z nic dělá totéž.
Zkoušení bude spočívat v tom, že dostanete podobný program, kde však bude jediný typ cyklu a vy budete muset dopsat zbylé dva.

Všimněte si prosím záludného použití proměnné POM !
(ideální by bylo udělat simulační tabulku tohoto programu...)


program nasobilka;
uses crt;
var a, b, c, i,j,pom, klavesa: integer;

begin
  repeat {to je zacatek cyklu, ktery konci tim until dole:
         program se bude motat dokola, dokud nekdo nezmackne klavesu 1}
     clrscr;  {to je vymazani obrazovky}
     writeln ('zadej cislo, kterym se zacne nasobit');
     readln  (A);
     clrscr;  {to je vymazani obrazovky}
     writeln ('zadej cislo, kterym se skonci nasobit');
     {writeLN napise text a ukonci radek (na rozdil od write)}
     readln  (B);
     writeln ('zadej cislo, ktere se bude nasobit');
     {writeLN napise text a ukonci radek (na rozdil od write)}
     readln  (C);
     pom:=a;
     writeln ('for -----------------------------------------');
     for i:=A to B  do
         writeln (i,  ' x  ',c , ' =',i * c);
        {napise obsah promenne i, pak znacku nasobeni...}
     writeln ('repeat -----------------------------------------');
     repeat
         writeln (a,  ' x  ',c , ' =',a * c);
         a:=a+1;
     until a>b;
     writeln ('while -----------------------------------------');
     a:=pom;
     while a<=b do
         begin
                  writeln (a,  ' x  ',c , ' =',a * c);
                  a:=a+1;
         end;
     writeln ('stiskni 1, kdyz pokracovat, jinak nulu a program skonci');
     readln (klavesa);
   until klavesa<>1;
  {zde konci cyklus repeat}
 end.

úterý 3. listopadu 2009

Program porovnávající cykly

úkol: 
Sestavte program, který vypíše násobilku z klávesnice zadaného čísla.  
Program vypíše pouze násobky z intervalu, který budete požadovat (zadáte z klávesnice jeho začátek a konec).

Konkrétně: 
Zadáte z klávesnice, že požadujete násobky od 3 do 5 pro číslo 6. Program vypíše: 
3 x 6 = 18 
4 x 6 = 24 
5 x 6 = 30  
V programu uveďte řešení pomocí 3 různých metod cyklů (for, repeat, while). 
Tato řešení oddělte ve výpisu vodorovnou čarou.  
------------------------------------------------------------- 


...a řešení:  
program nasobilka; 
uses crt; var a, b, c, i,j, klavesa: integer;  
begin  
repeat {to je zacatek cyklu, ktery konci tim until dole:  
program se bude motat dokola, dokud nekdo nezmackne klavesu 1}  
clrscr; {to je vymazani obrazovky}  
writeln ('zadej cislo, kterym se zacne nasobit');  
readln (A);  
clrscr; {to je vymazani obrazovky}  
writeln ('zadej cislo, kterym se skonci nasobit');  
{writeLN napise text a ukonci radek (na rozdil od write)}  
readln (B);  
writeln ('zadej cislo, ktere se bude nasobit');  
{writeLN napise text a ukonci radek (na rozdil od write)}  
readln (C);  
for i:=A to B do  
writeln (i, ' x ',c , ' =',i * c);  
{napise obsah promenne i, pak znacku nasobeni...}  
writeln ('-----------------------------------------');  
repeat  
writeln (a, ' x ',c , ' =',a * c);  
a:=a+1;  
until a>=b;  
writeln ('stiskni 1, kdyz pokracovat, jinak nulu a program skonci');  
readln (klavesa);  
until klavesa<>1;  
{zde konci cyklus repeat}  
end.

úterý 27. října 2009

Zajímavá násobilka potřetí: opečovaný vstup

Co dělat, když nějaký šmoula hodlá zadat začátek násobení od vyššího čísla než konec násobení?
Nutno opečovat vstup:

program nasobilka;
uses crt;
var a, b, c, i, klavesa: integer;

begin
  repeat {to je zacatek cyklu, ktery konci tim until dole:
         program se bude motat dokola, dokud nekdo nezmackne klavesu 1}
   repeat
     clrscr;  {to je vymazani obrazovky}
     writeln ('zadej cislo, ktere budes nasobit');
     readln  (A);
     writeln ('zadej cislo, od ktereho chces nasobit');
     readln  (B);
     writeln ('zadej cislo, do  ktereho chces nasobit');
     readln  (C);
    until c>b;
     clrscr;  {to je vymazani obrazovky}
     for i:=b to c  do
     {cyklus pro i od a  do b  dělej... -> cyklus probehne (b - a) krat}
         writeln (i,  ' x  ',a , ' =',i * a);
        {napise obsah promenne i, pak znacku nasobeni...}
     writeln ('stiskni 1, kdyz pokracovat, jinak nulu a program skonci');

     readln (klavesa);
   until klavesa<>1;
  {zde konci cyklus repeat}
 end.

pondělí 26. října 2009

Nejjednodušší základní program vylepšený o nekonečné opakování

Solidní program se nakonec zeptá, zda-li má pokračovat nebo skončit.
Tudy na to:

program nasobilka;
uses crt;
var a, b, i, klavesa: integer;

begin
  repeat {to je zacatek cyklu, ktery konci tim until dole:
         program se bude motat dokola, dokud nekdo nezmackne klavesu 1}

     writeln ('zadej cislo');
     readln  (A);
     clrscr;  {to je vymazani obrazovky}
     writeln ('zadej dalsi cislo');
     {writeLN napise text a ukonci radek (na rozdil od write)}
     readln  (B);
     writeln ('soucet cisel ',a,  ' a  ',b , ' je ',a+b);

     if a = b then
     {kdyz - tak, to znas:)}
        writeln ('cisla ',a,  ' a  ',b , ' jsou stejna')
     else
     {jinak...}
         writeln ('cisla ',a,  ' a  ',b , ' nejsou stejna');

     for i:=1 to 10  do
     {cyklus pro i od 1 do 10 dělej... -> cyklus probehne 10x}
         writeln (i,  ' x  ',a , ' =',i * a);
        {napise obsah promenne i, pak znacku nasobeni...}
     writeln ('stiskni 1, kdyz pokracovat, jinak nulu a program skonci');

     readln (klavesa);
   until klavesa<>1;
  {zde konci cyklus repeat}

 end.

pondělí 19. října 2009

repeat cyklus

repeat
;
;
...............

until

příklad:
repeat
write ('Zadej kladné číslo: ');
read (cislo);
if cislo <= 0 then write ('Cislo ', cislo, 'neni kladne!'); until cislo >0;

cvičení:

Napiš tuto část programu za pomocí cyklu while!
... a řešení:
Porovnání cyklu while oproti cyklu repeat until:
program while_versus_repeat_until;

uses wincrt; {nutné proto, aby fungoval príkaz "repeat until keypressed"}
var cislo : Real;

begin
clrscr; {smaze na zacátku obrazovku - aby nezustával text z predchozích aplikací}
writeln ('*********************************************************');

(* ----------cyklus repeat - until ---------*)
writeln ('Testovani cyklu repeat: ');
repeat
writeln ('Zadej kladné císlo a cyklus repeat skonci: ');
readln (cislo);
if cislo <= 0 then writeln ('Cislo ', cislo, 'neni kladne! Cyklus repeat pokracuje...'); until cislo >0;
(* -------- cyklus repeat - until konec --------*)

writeln ('stiskni cokoli a program pokracuje k testovani cyklu while');
repeat until keypressed;
{PC ceká na stisk libovolné klávesy - aby zustal videt výsledek na obrazovce}

(* --------cyklus while--------------- *)
cislo :=-100 (* quli nasledujici podmince musim nadefinovat promennou cislo jako zapornou*);
while cislo < 0 do begin writeln ('Zadej kladné císlo a cyklus while skonci: '); readln (cislo); end; (*-------- cyklus while konec -----------*) writeln ('bylo zadano kladne cislo, stiskni cokoli a program skonci'); writeln ('*********************************************************'); repeat until keypressed; {PC ceká na stisk libovolné klávesy - aby zustal videt výsledek na obrazovce} clrscr; {smaze na konci obrazovku} end.


Poznámka:
Repeat cyklus se provede alespoň jednou.
While se nemusí provést ani jednou!
While cyklus běží tak dlouho, dokud platí jeho podmínka.
Repeat se chová opačně - jakmile podmínka platí, skončí!

pondělí 12. října 2009

První program lépe a radostněji

Když první program spustíme, tak v pohodě zadáme dvě čísla, program porovná, které je větší, větší číslo vypíše, ale ve finále skončí a my z toho nic nemáme.
Je třeba, aby program po vypsání výsledku čekla na stisk klávesy a skončil až potom. To vyřešíme řádkem obsahující trik repeat until keypressed;


program VetsiCislo ( Input, Output );
uses crt; {nutné proto, aby fungoval příkaz "repeat until keypressed"}
var A, B : Integer;
begin
Write ( 'Urceni vetsiho cisla ' );
Write ( 'Zadejte dve cisla ' );
Read ( A, B );
if A > B then
Write ( 'vetsi je ', A )
else
Write ( 'vetsi je ', B );
repeat until keypressed;

end.

Upravte tento program tak, aby řešil situaci, kdy se zadají stejná čísla!
Pokud někdo zadá z klávesnice stejná čísla, program vypíše: "čísla jsou stejná!"