Professional Documents
Culture Documents
Παραδείγματα PASCAL - ΕΡΓΑΣΤΗΡΙΟ
Παραδείγματα PASCAL - ΕΡΓΑΣΤΗΡΙΟ
. . ϊ
Ver.0.2.6
Pascal ί ώ ά ό N. Wirth 1968, ί ά
ύ ώ. ά ί , Pascal ί έ ό ί
ί έ έ ύ ί:
ά ό Pascal ί ά έ ή ό ά:
end.
ό ώ, ύ, ή ώ έ ή ώ ή, ώ, ά
έ ή ώ ά ό.
ό Turbo Pascal ά έ ή ό Abs, ClrScr, Eof, Sqrt, Write,
WriteLn έ ή ί ύ ό
ή. ό ί έ ά ή Turbo Pascal
(ώ F1), ή internet (ό ά ύ
http://www.clipx.net/ng/pascal/index.php)
H Pascal ί ί ή ύ ά ώ. ά
ά ί έ ό ό (ώ ί 1 ό ύ
ό 1 έ 100) έ ά έ. ά
ά έ έ, ό έ ό ά ί.
Pascal Javascript
program unitdiv; <html>
uses wincrt; <body>
var <script type="text/javascript">
i:integer; var i=0
r:real; var r=0
begin
for i:=1 to 100 do for (i=1;i<=100;i++)
begin {
r:=1/i; r = 1/i;
write(' ',i,' ί ',r); document.write("Έ " + i + " ί ",r)
writeln; document.write("<br />")
end; }
end. </script>
</body>
</html>
«ώ» Java
public class unitdev
unitdev {
public static void main(String args[])
{
: i int i;
: r float r;
i 1 100 for(i=1;i<=100;i++)
{
r:=1/i r=1/(float)i;
' ',i,' ί ',r System.out.print(" "+i+" ί "+r);
System.out.println();
_ }
_ unitdev }
}
C/C++ C#
using System;
#include <stdio.h> namespace unitdev { class unitdev {
main() static void Main(string[] args)
{ {
int i; int i;
float r; float r;
for(i=1;i<=100;i++) for(i=1;i<=100;i++)
{ {
r=1.0/i; r=1/(float)i;
printf("E ά %d ί %f",i,r) Console.Write(" "+i+" ί "+r);
printf("\n") Console.WriteLine();
} }
} }
}}
ή: ά έ έ read readln έ
ά ή ά ή ό ό. Έ ή ή
ί ί ή read(x), ό ή ή ύ ή x.
έ write writeln έ «ά» έ ό. ί -
ln έ ί έ line (ή), ί ό έ
ό ά ό
(readln) ή ά (writeln) ί έ ή ά έ ή.
ό:
program name;
uses wincrt;
var ono,epo : string[20];
var ili : integer;
begin
clrscr;
write('DWSE ONOMA:');
readln(ono);
write('DWSE EPONYMO:');
readln(epo);
write('DWSE HLIKIA:');
readln(ili);
writeln('ONOMA: ',ono);
writeln('EPWNYMO:',epo);
writeln('HLIKIA: ',ili,' ETWN');
end.
DWSE ONOMA:Bond
DWSE EPONYMO:James
DWSE HLIKIA:33
ONOMA: Bond
EPWNYMO: James
HLIKIA: 33 ETWN
ό ά ό ό ή ό ύ ύ x
ί ή ά
ό:
program expression;
uses wincrt;
var x,y : real;
begin
clrscr;
write('DWSE ARI8MO:');
readln(x);
y := ( exp(-x)+sqr(x)+sqrt(x) ) / ( ln(x)+abs(x) );
writeln('TO APOTELESMA THS EXISWSHS EINAI ', y:0:2);
end.
DWSE ARI8MO:4
TO APOTELESMA THS EXISWSHS EINAI 3.35
writeln('TO APOTELESMA THS EXISWSHS EINAI ', y:0:2); ί y ί έ ή
ή. y ί
ό 2 ά ί
ό:
program seconds;
uses wincrt;
var secs,o,l,d : integer;
begin
clrscr;
write('DWSE DEYTEROLEPTA POY 0ES NA METATRAPOYN: ');
readln(secs);
o := secs DIV 3600;
d := secs MOD 3600;
l := d DIV 60;
d := d MOD 60;
write('TA ',secs,' DEYTEROLEPTA ANTISTOIXOYN SE ');
writeln(o,' WRES ',l,' LEPTA KAI ',d,' DEYTERA');
end.
ή: ά έ ή IF έ ά
ή ώ ύ ά ά ή.
έ έ IF ί:
(ά: EAN ( TO) < ή > TOTE <ή 1> <ή 2>;)
έ έ ί ί ί ό true (έ) ή false
(έ). ή (ή ώ « ή») ί έ, ή 1 ί,
ώ ά ( ά ELSE) ί ή 2. έ ί
ά ό ή ύ BEGINEND ί
ώ. Ό ά Pascal, ύ ύ ; ί
ώ ή IF. ; ί ί ά ί ί ό έ
ά έ ί. IF ί ; ELSE ύ ί ά
ή IF έ ί ά ά ELSE ή 2.
ό:
program findmax;
uses wincrt;
var a,b,c,max: integer;
begin
clrscr;
writeln('Dwste 3 ari0moys kai meta RETURN');
readln(a,b,c);
max:=0;
if (a>=b) then max:=a else max:=b;
if (c>=max) then max:=c;
writeln('Megalyteros = ',max);
end.
if (a>=b) then max:=a else max:=b; ί a b ά
max ή ύ ό
ύ.
έ ή έ ό ί ύ ώ ή
a x + b = 0. (ή: ύ ί x = -b/a, ό =0. =0
b=0 ί ί ό, ώ =0 b0 ί ί ύ)
ό:
program eksisosh;
uses wincrt;
var
a:real; b:real;
x:real;
begin
clrscr;
writeln('EPILYSH EKSISWSHS ax+b = 0');
writeln('DWSE a ');
read (a);
writeln('DWSE b ');
read (b);
if (a<>0) then
begin
x:=-b/a;
writeln('Yparxei lysh gia x = ',x:10:4);
end
else
if (b=0) then
writeln ('aoristh')
else
writeln('adynath'); end.
begin ‐//‐
x:=-b/a; ‐//‐
writeln('Yparxei lysh gia x = ',x:10:4); ‐//‐
end ‐//‐
else ί ( =0)...
if (b=0) then ... b=0 ί ί ό
writeln ('aoristh') ‐//‐
else ... b0 ί ί ύ
writeln('adynath'); ‐//‐
end. (έ ύ έ
ά)
ό:
PROGRAM MAX_AVE;
VAR A,B : REAL;
BEGIN
WRITELN('DWSE ENA ARITHMO');
READLN(A);
WRITELN('DWSE ENA ARITHMO');
READLN(B);
IF (A=B) THEN
WRITELN('OI ARITMOI EINAI ISOI')
ELSE
IF(A>B) THEN
WRITELN('MEGALYTERO TO ',A :0:2)
ELSE
WRITELN('MEGALYTERO TO ',B :0:2);
WRITELN('MESOS OROS ',(A+B)/2 :0:2); END.
Ό ί ά, ά ί ό ί ά έ ό.
ά, ά ώ ί ό ά (έ ό
ό ά έ <).
PROGRAM MAX_AVE_2;
VAR A,B,T : REAL;
BEGIN
WRITELN('DWSE ENA ARITHMO');
READLN(A);
WRITELN('DWSE ENA ARITHMO');
READLN(B);
IF(A<B)THEN
BEGIN T:=A;
A:=B; B:=T;
END;
IF (A=B) THEN WRITELN('OI ARITMOI EINAI ISOI')
ELSE WRITELN('MEGALYTERO TO ',A :0:2);
WRITELN('MESOS OROS ',(A+B)/2 :0:2); END.
ί ό ί f(t) t ί ό ή.
ό:
program if_equat;
var t,f :real;
begin
writeln('Parakalw dwste to t');
read(t);
if(t>2) then f := 2 * (sqr(t) + t) + 3 * ln(t) - 6;
if(t<2) then f := 1;
if(t=2) then f := sqr(t) - 3 * t + exp(t) + 1;
writeln('f(t) = ',f:10:3);
end.
Parakalw dwste to t
34
f(t) = 2384.579
ό:
program CONVERT;
VAR A: REAL;
BEGIN
WRITELN ('DWSE ENTASE SE Amperes (A)');
READLN (A);
WRITE('TA Amperes POY DWSATE ANTOISTIXOYN SE ');
IF (A>=1000) THEN WRITELN (A/1000:8:2,'kA')
ELSE IF(A>=1) THEN WRITELN (A:8:2,'A')
ELSE IF(A>=0.001) THEN WRITELN (A*1000:8:2,'mA')
ELSE IF (a<0) then writeln('APNHTIKH TIMH')
ELSE writeln(A*1000000:8:7,'uA'); END.
WRITE('TA Amperes POY DWSATE ANTOISTIXOYN SE '); ί έ ό ( ί
ό ά ί)
ά ό ό average ί ά ό ό έ ό n
, ί n! ή 1·2·3··n. ί ί
1!+2!+3!..+n!
ή: ά έ ή FOR έ
ά ή (ή ά ώ) έ ό ή.
έ έ FOR ί:
(ά: <ή>:= <ή ή> <ή ή> <ή>;>;)
ή ί ή integer ( ί ί real). ά έ
ί ί ή x ί έ ό, FOR x:=5 15
DO writeln(x); ί ή x ή ή (5), ί ή
writeln, ά ή ή x ά 1, ί ά ή writeln,
ά ή ή x ά 1, έ x ί ύ 15.
έ ί ά ό ή ύ BEGINEND
ί ώ.
ό:
PROGRAM PARAG;
VAR I,N,P,SUM:INTEGER;
BEGIN P:=1;
SUM:=0;
WRITE('#');
READLN(N);
FOR I:=1 TO N DO
BEGIN
P:=P*I;
SUM:=SUM+P;
END;
WRITELN('TO ',N,' PARAGONTIKO EINAI ',P);
WRITELN('TO A8POISMA TWN PARAGONTIKWN EINAI ',SUM); END.
#4
TO 4 PARAGONTIKO EINAI 24
TO A8POISMA TWN PARAGONTIKWN EINAI 33
WRITELN('TO A8POISMA TWN PARAGONTIKWN EINAI ',SUM); sum έ 1!+2!+...+n!
END. έ ά
ό:
program average;
uses wincrt;
var n,x,min,minpos,sum,i:integer;
begin
clrscr;
writeln('Posoi ari8moi?');
readln (n);
if(n>0) then ό ά ώ ή
begin ή ή min ( έ ί
writeln('dose 1o arithmo'); ά ί +, ύ ό ά ό).
readln (x);
ί ύ ύ ά min
sum:=x; ί ύ ό «ά» ό ή
min:=x; ώ ό, ό ό ί
minpos:=1; ί έ min.
for i:=2 to n do
begin
writeln('dose ',i,'o arithmo');
readln (x);
if min>x then
begin
min:=x;
minpos:=i;
end;
sum:=sum+x;
end;
writeln('o mesos oros einai', sum/n :6:2);
writeln('o mikroteros einai o ',minpos,'os ari0mos dhladh to ',min);
end;
end.
Posoi ari8moi?
3
dose 1o arithmo
34
dose 2o arithmo
-3
dose 3o arithmo
23
o mesos oros einai 18.00
o mikroteros einai o 2os ari0mos dhladh to -3
writeln('o mesos oros einai', sum/n :0:2); (έ FOR (ή15))
έ ά
ή: ά έ ή WHILE έ
ά ή (ή ά ώ) ό ί ή ί ή.
ή WHILE ί:
Ό IF, έ έ <ί> ί ί ό true
(έ) ή false (έ). έ ί ί ί έ ώ.
ό ή ί έ, ή ί. ί ά
έ ή ί έ. έ ί ά ό ή
ύ BEGINEND ί ώ.
ό:
program ba0moi;
var ba0mos, best : real;
pli0os, i : integer;
begin
best:=0;
pli0os:=0;
for i:=1 to 5 do
begin
write ('Dwse ba0mo gia ',i,'o ma0hth:');
readln (ba0mos);
while(ba0mos<0) or (ba0mos>20) do
begin
write ('Akyros ba8mos, parakalw dwse swsto ba0mo:');
readln (ba0mos);
end;
if(ba0mos>best) then best:=ba0mos;
if(ba0mos>=18.5) then pli0os:=pli0os+1;
end;
writeln('O kalyteros ba0mos einai to ',best:2:1);
writeln(pli0os,' ma8htes eixan 18.5 kai panw'); end.
pli0os, i : integer;
Begin
best:=0; ύ
ό ί 0
pli0os:=0; ό
18.5
ά ί 0.
Begin
write ('Dwse ba0mo gia ',i,'o ma0hth:'); ή ..
readln (ba0mos); ...ά
ό
end;
if(ba0mos>best) then best:=ba0mos; ώ
ύ ό
if(ba0mos>=18.5) then pli0os:=pli0os+1; έ
ύ
end;
writeln('O kalyteros ba0mos einai to ',best:2:1); ί
writeln(pli0os,' ma8htes eixan 18.5 kai panw'); έ
end.
ί ό ( ί ά ό ό 5 ί ώ )
ί ί ώ ή REPEAT.
ή: ά έ ή REPEAT (ό WHILE)
έ ά ή (ή ά ώ) ό ί
ή ί ή. ή REPEAT ί:
ί ό WHILE, ώ έ ύ ά ά έ
ί ί ά έ ώ. Ό IF/WHILE,
έ έ <ί> ί ί ό true (έ) ή false
(έ). ή ί έ ό ύ ( ί έ) ή.
Έ ά ά ώ έ ώ ή ί έ έ
ύ ά ί ά έ ή ί έ (
ύ). ί: REPEAT ά ί BEGINEND ( ώ)
έ έ έ.
ό:
program ba0moi;
var ba0mos, best : real;
pli0os, i : integer;
begin
best:=0;
pli0os:=0;
for i:=1 to 5 do
begin
repeat
write ('Dwse ba0mo gia ',i,'o ma0hth:');
readln (ba0mos);
if (ba0mos<0) or (ba0mos>20) then write ('Akyros ba8mos.');
until (ba0mos>=0) and (ba0mos<=20);
if(ba0mos>best) then best:=ba0mos;
if(ba0mos>=18.5) then pli0os:=pli0os+1;
end;
writeln('O kalyteros ba0mos einai to ',best:2:1);
writeln(pli0os,' ma8htes eixan 18.5 kai panw'); end.
pli0os, i : integer;
begin
best:=0; ύ έ
ή ό
ί 0
begin
repeat έ
ά...
write ('Dwse ba0mo gia ',i,'o ma0hth:'); ά ό
readln (ba0mos);
if (ba0mos<0) or (ba0mos>20) then ί ά ί
write ('Akyros ba8mos.'); ή
until (ba0mos>=0) and (ba0mos<=20); ί ά
ύ ή
( repeat)
έ.
if(ba0mos>best) then best:=ba0mos; ώ ύ
ό
if(ba0mos>=18.5) then pli0os:=pli0os+1; έ
ύ
end;
writeln('O kalyteros ba0mos einai to ',best:0:1); ί
writeln(pli0os,' ma8htes eixan 18.5 kai panw'); έ
end.
ί ό ί ά ό ό 10 έ ά
ί ί ά (ό ή ί ώ).
ή:
ί ή ί ά ί ό 10 string
(ά ή έ, ί) ά:
ί, ί ή ί ά ί ό 10
έ ά:
ί ή ί ά ί 10x10 έ
ώ ά:
ό:
program reverse;
const
n=10;
var
w:array[1..n] of string;
i:integer;
begin
for i:=1 to n do
begin
write ('Dwse le3h :');
readln(w[i]);
end;
for i:=n downto 1 do
writeln(w[i]); end.
i:integer;
begin
for i:=1 to n do i = 1,2,3,..,10 έ...
begin
write ('Dwse le3h :');
readln(w[i]); ... ά έ
ώ w[i]
end;
for i:=n downto 1 do i = 10,9,8,..,1 έ...
writeln(w[i]); w[i]
end.
ό:
program scores;
uses wincrt;
var
s,g:integer;
score:array [1..5,1..2] of integer;
begin
for g:=1 to 5 do
for s:=1 to 2 do
begin
write('DWSE GOALS ',s,'hs OMADAS STON ',g,'o AGWNA:');
readln(score[g,s]);
end;
writeln;
writeln(' APOTELESMATA:');
writeln(' 1o 2o Sxolio');
writeln;
for g:=1 to 5 do
begin
for s:=1 to 2 do
write(score[g,s]:4);
write(' ');
if score[g,1] = score[g,2] then write ('ISOPALIA')
else if score[g,1] > score[g,2] then write ('NIKH GHPEDOYXOY')
else write ('NIKH EPISKEPTH');
writeln;
end;
end.
APOTELESMATA:
1o 2o Sxolio
1 0 NIKH GHPEDOYXOY
0 0 ISOPALIA
2 2 ISOPALIA
2 1 NIKH GHPEDOYXOY
0 3 NIKH EPISKEPTH
end;
writeln; ά ί έ
ί
writeln(' APOTELESMATA:'); ‐//‐
Begin
for s:=1 to 2 do ά
write(score[g,s]:4); ύ ά
write(' '); .. έ ό
end;
end. έ ά
ό:
program sort;
uses wincrt;
const
n = 10;
var
i, j, temp : integer;
pinakas : array [1..n] of integer;
begin
for i:= 1 to n do
begin
write ('Dwse ',i,'o ari8mo :');
readln(pinakas[i]);
end;
for i := 1 to n do
for j := (i+1) to n do
if pinakas[j] < pinakas[i] then
begin
temp := pinakas[j];
pinakas[j] := pinakas[i];
pinakas[i] := temp;
end;
for i := 1 to n do
write(pinakas[i],' ');
end.
begin
ώ ά
ύ ί
ί
readln(pinakas[i]); ‐//‐
end;
ά ύ...
begin
temp := pinakas[j]; ...ά ί j
ί i.
ή pinak pinaka pinaka pinaka pinaka pinaka pinaka pinaka pinaka pinaka
as[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10]
ή 39 72 323 53 2 5 -35 634 -34 2305
i=1 2 72 323 53 39 5 -35 634 -34 2305
i=1 -35 72 323 53 39 5 2 634 -34 2305
i=2 -35 53 323 72 39 5 2 634 -34 2305
i=2 -35 39 323 72 53 5 2 634 -34 2305
i=2 -35 5 323 72 53 39 2 634 -34 2305
i=2 -35 2 323 72 53 39 5 634 -34 2305
i=2 -35 -34 323 72 53 39 5 634 2 2305
i=3 -35 -34 72 323 53 39 5 634 2 2305
i=3 -35 -34 53 323 72 39 5 634 2 2305
i=3 -35 -34 39 323 72 53 5 634 2 2305
i=3 -35 -34 5 323 72 53 39 634 2 2305
i=3 -35 -34 2 323 72 53 39 634 5 2305
i=4 -35 -34 2 72 323 53 39 634 5 2305
i=4 -35 -34 2 53 323 72 39 634 5 2305
i=4 -35 -34 2 39 323 72 53 634 5 2305
i=4 -35 -34 2 5 323 72 53 634 39 2305
i=5 -35 -34 2 5 72 323 53 634 39 2305
i=5 -35 -34 2 5 53 323 72 634 39 2305
i=5 -35 -34 2 5 39 323 72 634 53 2305
i=6 -35 -34 2 5 39 72 323 634 53 2305
i=6 -35 -34 2 5 39 53 323 634 72 2305
i=7 -35 -34 2 5 39 53 72 634 323 2305
i=8 -35 -34 2 5 39 53 72 323 634 2305
ό:
program tetragwna;
uses wincrt;
var i : integer;
begin
for i := 1 to 10 do
Writeln ('to tetragwno toy ',i,' einai ',tetragwno (i):6:2);
WriteLn; end.
WriteLn; ‐//‐
end. (έ ύ έ
ά)
ό:
___
___
___
Dialexe grammi:33
Dialexe stili:3
** LA0OS EPILOGH **
3anadialexe grammi:3
3anadialexe stili:3
SKEFTOMAI...
_O_
___
__X
Dialexe grammi:3
Dialexe stili:1
SKEFTOMAI...
_O_
___
XOX
Dialexe grammi:1
Dialexe stili:1
SKEFTOMAI......
XO_
O__
XOX
Dialexe grammi:2
Dialexe stili:2
XO_
OX_
XOX
KERDISES!
const έ
KANENAS = 0; 0 ί έ
ί
COMPUTER = 1; 1 computer
AN0ROPOS = 2; 2 ά‐ί
AGNWSTOS = 3; 3 ά ή (ή
ί ί)
for s:=1 to 3 do
begin
c:= t[1][s];
EMFANISE_PINAKA;
if(nikiths=KANENAS) then writeln('ISOPALIA!');
if(nikiths=AN0ROPOS) then writeln('KERDISES!');
if(nikiths=COMPUTER) then writeln('EXASES!');
end.
ή CASE, ύ (SET) , έ (RECORD) , /ά ί έ έ , έ έ
/ά ί, ί , έ έ ύ ά.
1. ΑΣΚΗΣΗ
Να δώσετε το διάγραμμα ροής και το πρόγραμμα για τον υπολογισμό του αθροίσματος
2. ΑΣΚΗΣΗ
Να δώσετε το διάγραμμα ροής και πρόγραμμα για τον υπολογισμό και εμφάνιση
3. ΑΣΚΗΣΗ
β) το πρόγραμμα για τον υπολογισμό και την εμφάνιση των Ν πρώτων όρων του
αθροίσματος
∑ (1/i) 2 =(1/1) 2+(1/2) 2+(1/3) 2+…+ (1/N) 2 για i=1,2,3…μέχρι Ν. Όπου Ν είναι θετικός
ακέραιος αριθμός και θα δίδεται από το πληκτρολόγιο.
4. ΑΣΚΗΣΗ
Να αναπτύξετε πρόγραμμα σε γλώσσα Pascal, το οποίο θα διαβάζει την τιμή της πραγματικής
μεταβλητής x και θα υπολογίζει και τυπώνει τη τιμή y της παρακάτω συνάρτησης. Η
εκτύπωση να γίνεται ως εξής: y(..x..) = ..y..
(Όπου ..x.. :η τιμή x που δόθηκε και ..y.. : η τιμή της y που υπολογίστηκε)
5 x , x 0
y 7 x 2 16 x ,0 x 20
, x 20
3 x 6
5. ΑΣΚΗΣΗ
Να δώσετε
6. ΑΣΚΗΣΗ
Πάγιο 40 €
8. ΑΣΚΗΣΗ
Να αναπτυχθεί
9. ΑΣΚΗΣΗ
Να γραφεί πρόγραμμα σε γλώσσα Pascal το οποίο:
α) να διαβάζει και να τυπώνει τους δύο μονοδιάστατους πίνακες ΟΝΟΜΑ[50] και
BATHMOS[50] με τα ονόματα και τους αντίστοιχους βαθμούς 50 φοιτητών. (οι πίνακες
να τυπωθούν σε στήλες, ο ένας δίπλα από τον άλλο.)
β) να βρίσκει και τυπώνει το όνομα, και το βαθμό του φοιτητή με τη καλύτερη επίδοση.
γ) να τυπώνει ξεχωριστά τα ονόματα των φοιτητών με βαθμό μεγαλύτερο ή ίσο του 6.5.
στ) να υπολογίζει και τυπώνει τη μέσο όρο της βαθμολογίας των φοιτητών χωρίς να
λαμβάνονται υπόψη οι βαθμοί που είναι μικρότεροι του 5.
10. ΑΣΚΗΣΗ
Να αναπτύξετε πρόγραμμα το οποίο:
ε) για κάθε μήνα, να υπολογίζει και να εμφανίζει τον αύξοντα αριθμό του
διαμερίσματος (1-10) και το πλήθος των διαμερισμάτων που είχαν κατανάλωση ίση
με τη μέγιστη κατανάλωση του μήνα.
11. ΑΣΚΗΣΗ
Να αναπτύξετε πρόγραμμα το οποίο: