Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Faito PASCAL klausimai

Parašė Faitas.· 2011 Kov. 16 21:03:23
#1

Sveiki, pradėjau ciklą FOR ir nelabai man čia gaunasi. Gal kas paaiškintumėt kaip ten kas? Kiek suprantu, tai:


for i := 1 to n do
   begin
       sakiniai
       . . .
   end;


i kintamasis yra pradinė reikšmė, o n kintamasis yra galinė reikšmė? :?

Redagavo Faitas.· 2011 Kov. 16 21:03:10

Parašė s1Nk· 2011 Kov. 16 21:03:52
#2

Taip, for naudojamas kai žinai būtent kiek, ciklas turės kartu suktis. Tas n kintamojo reikšmė kaškur turi būt priskirta, ar ivedama.

Parašė Faitas.· 2011 Kov. 16 21:03:28
#3

Aišku, o dabar pavyzdžiui norėčiau ciklą padaryti, kad skaičių pakeltų kažkuriuo laipsniu? Galėtum, gal kokį pavyzdį parašyti? ?|

Parašė bruzgis· 2011 Kov. 16 22:03:31
#4

//Keliam laipsniu
program laipsnis;
var i, sk, laips, ats : integer;
begin
WriteLn('Iveskite skaiciu');
ReadLn(sk);
WriteLn('Kokiu laipsniu kelsime?');
ReadLn(laips);

//priskiriam pradine reiksme atsakymui
ats := 1;

//sukam cikla
i := 0;
while(i < laips) do
begin
i := i+1;
ats := ats*sk;
end;

writeln('Gautas rezultatas = ', ats);

//paprastesnis variantas nesukant ciklo
//ats := sk**laips;
//writeln('Gautas rezultatas = ', ats);

Readln();
end.

ir variantas su for

 
//Keliam laipsniu
program laipsnis;
    var i, sk, laips, ats : integer;
begin
  WriteLn('Iveskite skaiciu');
  ReadLn(sk);
  WriteLn('Kokiu laipsniu kelsime?');
  ReadLn(laips);
 
  //priskiriam pradine reiksme atsakymui
  ats := 1;
 
  //sukam cikla
  for i:=1 to laips do
    begin
    ats := ats*sk;
    end;
 
  writeln('Gautas rezultatas = ', ats);
 
  //paprastesnis variantas nesukant ciklo
  //ats := sk**laips;
  //writeln('Gautas rezultatas = ', ats);
 
  Readln();
end.

Redagavo bruzgis· 2011 Kov. 16 22:03:18

Parašė Faitas.· 2011 Kov. 17 19:03:08
#5

Dėkui chipass ;) Padariau keleta programų su pascal'iu:

Olimpiados (kas ketverius metus):


program olimpiada;
 var i, s : longint;
begin
  s := 0;
  for i := 1896 to 2011 do
    begin
        if i mod 4 = 0 then
            begin
                s := s + 1;
                WriteLn( i , 'm.' , ' ivyko ' , s , ' olimpiada' );
            end;
    end;
  WriteLn( '=======================================' );
  WriteLn( 'Jau ivyko ' , s , ' olimpiada' );
  Readln;
end.


Visi dviženkliai skaičiai kurie dalijasi iš savo skaitmenų sumos:


program Visi_dvizenkliai_skaiciai;
 
 var i, d, n : integer;
     a, b, sum : integer;
begin
  d := 0;
  n := 0;
  for i := 10 to 99 do
   begin
      a := i div 10;
      b := i mod 10;
      sum := a + b;
      if i mod sum = 0 then d := d + 1
                       else n := n + 1;
   end;
  WriteLn( d , ' dviženkliai(-ių) skaičiai(-ių) dalinasi iš jų skaitmenų sumos'  );
  WriteLn( n , ' dviženkliai(-ių) skaičiai(-ių) nesidalinasi iš jų skaitmenų sumos'  );
  Readln;
end.

Parašė Faitas.· 2011 Kov. 17 20:03:00
#6

Jau perėjau prie while.

Kiek supratau, tai while ciklas sukasi tiek kartų kol sąlyga (pvz: i < 10) yra teisinga (TRUE), o kai sąlyga (pvz: i < 10) yra neteisinga (FALSE), tai ciklas nebesisuka ir pereina prie tolimesnio programos vykdymo? Ar ne taip?

P.S - Ir jei galit kokį pavyzdį numeskit :) Ačiū :p

Parašė Žmogus· 2011 Kov. 26 15:03:49
#7

Oj while mano vienas nemėtgtamiausiu ciklų ;\
Jis skirasi nuo for, kad reikia parašyti pabaigą, kad pvz jei vykdom iki 10 ciklą, tai ciklo gale reikia urodyti, kad kiekviena kartą jis mažėtu, nes taip bus amžinas ciklas

Redagavo Žmogus· 2011 Kov. 26 15:03:51