parengė itmm artūras Šakalys pamoka.pdf · parengė itmm artūras Šakalys kompiuteris nr.3....

15
Parengė ITMM Artūras Šakalys 29 pamoka (Kodo narstymas - hakingas) For ciklas Užduotys. Supraskite pateiktą uždavinį ir kodą (FreePascal) ir perrašykite jį C++ kalboje. Uždavinį renkamės pagal sėdimos prie kompiuterio vietos numerį. Kompiuteris Nr.1. Užduotis. Parašykite programą, kuri apskaičiuotų skaičių sumą nuo 1/1 2 + 1/2 2 + 1/3 2 + … + 1/n 2 , kur n reikšmę nustatytų vartotojas. Sprendimas ********************** program kompiuteris_pirmas; var n, i: word; sum: real; begin write ('n = '); readln (n); sum := 0; for i := 1 to n do sum := sum + 1/(i*i); writeln (sum:6:5); readln end. ********************** Rezultatas Kompiuteris Nr.2. Sprendimas ********************** Užduotis. Rodyti Fibonačio skaičių seką, susidedančios iš N elementų. Paaiškinimas (matematika) Fibonačio skaičių seka - sveikųjų skaičių seka {F n }, nusakoma taip: F 0 = 0, F 1 = 1, F n+1 = F n + F n-1 . Seka prasideda šiais skaičiais: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233. Kiekvienas šios sekos skaičius lygus dviejų prieš jį einančių skaičių sumai.

Upload: others

Post on 09-Mar-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

29 pamoka (Kodo narstymas - hakingas)

For ciklas

Užduotys. Supraskite pateiktą uždavinį ir kodą (FreePascal) ir perrašykite jį C++ kalboje.

Uždavinį renkamės pagal sėdimos prie kompiuterio vietos numerį.

Kompiuteris Nr.1.

Užduotis. Parašykite programą, kuri apskaičiuotų skaičių sumą nuo 1/12 + 1/22 +

1/32 + … + 1/n2, kur n reikšmę nustatytų vartotojas.

Sprendimas

********************** program kompiuteris_pirmas;

var

n, i: word;

sum: real;

begin

write ('n = '); readln (n);

sum := 0;

for i := 1 to n do

sum := sum + 1/(i*i);

writeln (sum:6:5);

readln

end.

**********************

Rezultatas

Kompiuteris Nr.2.

Sprendimas

**********************

Užduotis. Rodyti Fibonačio skaičių seką, susidedančios iš N elementų.

Paaiškinimas (matematika)

Fibonačio skaičių seka - sveikųjų skaičių seka {Fn}, nusakoma taip: F0 = 0, F1 = 1, Fn+1 = Fn + Fn-1.

Seka prasideda šiais skaičiais: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233. Kiekvienas šios sekos

skaičius lygus dviejų prieš jį einančių skaičių sumai.

Page 2: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

Paaiškinimas (kintamųjų)

n – elementų kiekis;

a, b –dviejų paskutinių elementų reikšmės;

c –atsarginis kintamasis;

i – skaitliukas.

***********************************

Sprendimas

program antras_kompiuteris;

var

a,b,c,i,n: integer;

begin

write('n = ');

readln(n);

a := 0;

write(a,' ');

b := 1;

write(b,' ');

for i:=3 to n do begin

write(a+b,' ');

c := b;

b := a + b;

a := c

end;

readln;

end.

Rezultatas

Page 3: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

Kompiuteris Nr.3.

Užduotis. Parengti programą, kad rodytų natūralių skaičių faktorialą.

Faktorialo skaičius yra visų sveikųjų skaičių nuo 1 iki šio skaičiaus imtinai. Pavyzdžiui, iš 7

faktorialas yra keičiamas taip: 1 * 2 * 3 * 4 * 5 * 6 * 7

Po faktorialo dedamas šauktukas.

Su skaičiaus didėjimu didėja ir faktorialas. Taigi, jei 3! = 6, tai jau 10! = 3.628.800.

Natūralių skaičių daugiau nei 12 į Pascal programavimo kalba tiesiog neįmanoma

apskaičiuoti faktorialo.

Natūraliojo skaičiaus n faktorialu vadinama visų natūraliųjų skaičių nuo 1 iki n sandauga:

n! = 1 · 2 · 3 · … · n

Sutarta, kad skaičiaus 0 faktorialas lygus 1 (0! = 1).

Formaliai faktorialo funkciją galima apibrėžti taip:

Apytiksliai suskaičiuoti didelių skaičių faktorialą galima naudojant Stirlingo formulę.

7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5040

***

Sprendimas

***

program trecias_kompiuteris;

var

factorial: longint;

n, i: byte;

begin

write('n = '); readln(n);

factorial := 1;

for i:=2 to n do

factorial := factorial * i;

writeln('n! = ', factorial);

readln;

Page 4: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

end.

****

Rezultatas

**********************

Kompiuteris Nr.4.

*********************

Sirakūzų hipotezės patikrinimas.

Paimame bet kokį natūralų skaičių. Jei jis lyginis – padaliname jį perpus, jei nelyginis – dauginame

iš triju, pridedame 1 ir daliname perpus. Pakartojame šiuos veiksmus su gautu skaičiumi. Hipotezės

tvirtinimas, kad nesvarbu kokį pasirinksite pirmą skaičių anksčiau ar vėliau gausime 1.

Užduotis. Patikrinkime šią hipotezę skaičių atkarpai nuo 20 iki 30.

Matematinis sprendimas. Cikle atliksime šiuos veiksmus žingsnių: jei jis yra lyginis, tada padalinti

iš dviejų, kitaip - dauginti iš 3, pridėti vieną ir padalinti iš 2 Šie veiksmai bus atlikti, tol kol skaičius

tampa lygus vienetui.

Sprendimas

program ketvirtas_kompiuteris;

var

n, i: word;

begin

for i:=20 to 30 do begin

n := i;

while n <> 1 do begin

if (n mod 2) = 0 then

n := n div 2

else

n := (3*n + 1) div 2;

write(' |',n,'|');

end;

writeln; writeln;

Page 5: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

end;

readln;

end.

*****

Rezultatas

***********

Kompiuteris Nr. 5.

***********

Užduotis. Parengti programą, kuri spausdintų ASCII lentelę.

Paaiškinimas.

ASCII [ˈæski] (American Standard Code for Information Interchange, „Amerikietiškas informacijos

mainų koduotės standartas“) yra simbolių koduotė, pritaikyta anglų kalbos abėcėlei.

ASCII kodai naudojami tekstui kompiuteriuose, mobiliuosiuose telefonuose ir

kituose komunikacijos įrenginiuose įrašyti, saugoti ir atvaizduoti. Dauguma

dabartinių koduočių buvo sukurtos papildant ASCII, rečiau pakeičiant dalį simbolių.

Programa

program penktas_kompiuteris;

var

i: byte;

begin

for i := 0 to 255 do begin

if (i mod 5) = 0 then

writeln;

Page 6: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

write (i:3,' - ', chr(i), '; ')

end;

readln

end.

**************

Rezultatas

***************

Kompiuteris Nr.6.

Užduotis. Parašykite programą, kuri suskaičiuotų skirtingų raidžių kiekį žodyje.

Sprendimas

program sestas_kompiuteris;

var s:string;

r:real;

i,j,n:integer;

begin

r:=0;

readln(s);

for i:=1 to length(s) do begin

n:=0;

Page 7: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

for j:=1 to length(s) do begin

if s[i]=s[j] then inc(n);

end;

r:=r+1/n;

end;

writeln('Skirtingu raidziu zodyje suma = ', r:1:0);

Readln();

end.

******

Rezultatas

**********

Kompiuteris Nr.7.

Užduotis. Parengti programą, kuri suskaičiuotų teigiamų skaičių (elementų) sumą.

Programa

program septintas_kompiuteris;

var

i,n,x,s : integer;

begin

WriteLn('iveskite for ciklo skaiciu kieki');

Readln(n);

s := 0;

For i := 1 to n do

begin

WriteLn('iveskite skaiciu');

Readln(x);

if x >0 then

Page 8: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

s := s + x;

end;

Writeln('suma >0 = ',s);

Readln;

end.

***

Kompiuteris Nr.8.

Užduotis. Parengti programą, kuri suskaičiuotų teigiamų skaičių (elementų) sandaugą.

program astuntas_kompiuteris;

var

i,n,x,s : integer;

begin

WriteLn('iveskite for ciklo skaiciu kieki');

Readln(n);

s := 1;

For i := 1 to n do

begin

WriteLn('iveskite skaiciu');

Readln(x);

if x >0 then

s := s * x;

Page 9: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

end;

Writeln('sandauga >0 = ',s);

Readln;

end.

***

Kompiuteris Nr.9.

Užduotis. Nustatykite, kokius skaičius programa išvesk į ekraną.

Sprendimas

******

program astuntas_kompiuteris;

var

k, n : integer;

begin

for k:=1 to 2 do

for n:=4 to 5 do begin

write(k);

write(' ');

writeln(n);

Readln();

end;

end.

*****

Rezultatas

****

********************

Kompiuteris Nr.10.

Užduotis. Parengti laipsnio kėlimo lentelę, kurioje laipsnio skaičių įves vartotojas.

Page 10: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

Paaiškinimas (matematika)

Bet kokio laipsnio ieškojimui naudojama ši formulė:

ab =exp(b*(In(a)))

Sprendimas

Programa

program laipsniai;

uses crt ;

var

i, size : integer ;

step : real ;

begin

clrscr ; {Ekrano isvalymas}

writeln('Programma laipsniui pakelti .'); { Del }

writeln('---------------------------') ; { Groziui }

write('Iveskite max. laipsni : ') ; readln(size);

for i:=1 to size do

begin

step := exp(i*(ln(2)));

writeln('2 v : ',i:2, step:10:0);

end;

readln; {kad programa neuzsidarytu}

end.

Page 11: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

*******************

Rezultatas

*******************

Kompiuteris Nr.11.

**************

Užduotis.Parašyti programą, kuri ekrane rodytų ,,elektroninį laikrodį“, kuris dirba tik tik nurodytą

minučių laiką, arba vartotojas sustabdo rodymą nuspausdamas bet kurį klaviatūros klavišą.

***

Kaip spręsti šią užduotį?

Mums reiks dviejų ciklų minutėms ir sekundėms nurodyti. Pradžioje darome ciklą sekundėms, nuo 0 iki 60.

Kitas ciklas reikalingas minutėms nurodyti, nuo 0 kuri įves vartotojas, nurodant -1. Jei nebus -1 ciklas

skaičiuos viena minute daugiau.

***************

Programa

program laikrodis;

uses crt ;

var

i , sec , min : integer;

begin

write('Iveskite minuciu kieki : '); readln(min);

for i:=0 to min-1 do

begin

for sec := 0 to 60 do

begin

writeln(i,' : ',sec);

Delay(1000);

Page 12: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

clrscr;

if KeyPressed then Halt ;

end;

end;

end.

***

Rezultatas

Kompiuteris Nr.12.

Užduotis. Rasti suma pirmų n nelyginių elementų su ciklu for, elementų skaičių įveda vartotojas

***

Programa

program suma;

uses crt ;

var

sum , i , count : integer ;

begin

clrscr ; {išvalo ekrana}

write('Enter the amount of numbers : '); readln(count);

sum := 0 ;

for i := 1 to count do

begin

if (i mod 2 <> 0) then

sum := sum + i ;

Page 13: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

end;

writeln('Summa = ', sum); {isvedame suma . }

readln ; {kad langas nepradingtu .}

end.

***Rezultatas

Kompiuteris Nr.13.

Užduotis. Parašykite programą, kuri šešioliktainės sistemos skaičius verstų į dešimtainę sistemą.

Sprendimas

program antras;

var

hexa: string; {sesioliktainis skaicius}

n: byte; {jo ilgis}

ch: char; {simbolis}

digit: byte; {skaicius}

m: byte; {laipsnis 16}

decimal: integer; {desimtainis skaicius}

i: byte;

function pow16(m: byte):integer;

var i: byte;

begin

pow16 := 1;

for i := 1 to m do

pow16 := pow16 * 16;

end;

Page 14: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

begin

write('Iveskite sesioliktaine sistema: ');

readln(hexa);

n := length(hexa);

decimal := 0;

m := n;

for i:=1 to n do begin

ch := hexa[i];

if ch in ['A'..'F'] then

case ch of

'A': digit := 10;

'B': digit := 11;

'C': digit := 12;

'D': digit := 13;

'E': digit := 14;

'F': digit := 15

end

else

digit := ord(ch) - ord('0');

m := m - 1;

decimal := decimal + digit * pow16(m);

end;

writeln('Decimal: ',decimal);

readln

Page 15: Parengė ITMM Artūras Šakalys pamoka.pdf · Parengė ITMM Artūras Šakalys Kompiuteris Nr.3. Užduotis.Parengti programą, kad rodytų natūralių skaičių faktorialą. Faktorialo

Parengė ITMM Artūras Šakalys

end.

Rezultatas

Kompiuteris Nr.14.

Panaudota

http://acmp.ru/?main=tasks

http://pas1.ru/id-range

http://cyberlesson.ru/