Zobrazují se příspěvky se štítkemwhile. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemwhile. 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.

pondělí 19. října 2009

Program NejvetsiSpolDelitel radostněji

program NejvDelitel;
uses crt; {nutné proto, aby fungoval příkaz "repeat until keypressed"}
var A, B, C, D : Integer;
begin
   Writeln ( 'Nejvetsi spolecny delitel ' );
   Writeln ( 'Zadejte dve cisla ' );
   Readln ( A, B );
   clrscr;
   C:=A;
   D:=B;
   while A <> B do
      if A > B then A := A - B
   else B := B - A;
   Writeln ( 'Nejvetsi spolecny delitel cisel ', C, ' a ', D, ' je ', A );
   Writeln ( '***stiskni cokoli a program skonci***');
   repeat until keypressed;
end.

while cyklus

while A <> B do
if A > B then A := A - B
else B := B - A;

úterý 13. října 2009

Proměnné a jejich deklarace

proměnná = místo na uložení dat

deklarace proměnných: klíčové slovo var :

příklad:
var Radek, Sloupec : Integer;

Prumer : Real;

Integer jsou celá čísla, Real jsou reálná čísla

poznámka:
velká a malá písmenka jsou Pascalovi lhostejná, zde je uvádím pro přehlednost, piš si to jak chceš!
Čerstvě delkarovaná hodnota má počítačem náhodně vygenerovanou hodnotu, nejdřív do ní musíme vložit počáteční hodnotu!!!! Udělá to:
3.1 Přiřazovací příkaz
:=

příklad:
Radek := 4;

Sloupec := Radek + 1;

Radek := Radek + 1; -------> ve výrazu se může vyskytnout cílová proměnná!!!!


program NejvDelitel;
var A, B : Integer;
begin
Write ( 'Největší společný dělitel ' );
Write ( 'Zadejte dvě čísla ' );
Read ( A, B );
while A <> B do
if A > B then A := A - B
else B := B - A;
Write ( 'Největší společný dělitel je ', A );
end.

co by se mohlo hodit?
Borland editor pod DOSem:
CTRL + INSERT - kopíruj blok (copy)
SHIFT + INSERT - vlož blok (paste)
CTRL + KH - zruš označení bloku
ALT 60 je < ALT 62 je >
cvičení:
Jak to dopadne, zadáš-li zápornou hodnotu proměnných A a B? Napiš sledovací tabulku pro použité proměnné!
Vytvoř test, zda-li je opravdu zadáváno kladné číslo a program takto uprav!


řešení:
Největší dělitel - verze obrněná proti idiotským vstupům
pro úspěšné řešení neumíš jedinou věc - ABS(A) je absolutní hodnota čísla A!

program NejvDelitel;
var A, B : Integer;
begin
Write ( 'Největší společný dělitel ' );
Write ( 'Zadejte dvě čísla ' );
Read ( A, B );
if A * B = 0 then
Writeln ( 'Nula nemá dělitele' )
else
begin
A := Abs(A);
B := Abs(B);
while A <> B do
if A > B then A := A - B
else B := B - A;
Write ( 'Největší společný dělitel je ', A );
end;
end.