Peter Rechenberg Εισαγωγή στην Πληροφορική. Κλειδάριθμος, 1992.
1 3 4 2 5 9 2 7 16 2 9 25 2 11 36
10 11 21 6 17 38 6 23 61 6 29 90
Clock A Clock B Clock C 1 3 2 +3 +2 4 5 2 +5 +2 9 7 2 +7 +2 16 9 2
(Βασισμένο στο σύστημα ταξινόμησης ACM Computing Reviews.)
Α .- Β -... Γ --. Δ -.. Ζ --.. Ε . Θ -.-.
A 193 B 194 C 195 D 196
A 64 B 65 C 66 D 67
Α 193 Β 194 Γ 195 Δ 196
Αραβικό γράμμα SEEN μόνο 65201 Αραβικό γράμμα SEEN αρχικό 65202 Αραβικό γράμμα SEEN μέσο 65203 Αραβικό γράμμα SEEN τελικό 65204
!A = Y - - 0 1 1 0
A * B = Y - - - 0 0 0 0 1 0 1 0 0 1 1 1
A * B = Y - - - 0 0 0 0 1 1 1 0 1 1 1 1
A * B = Y - - - 0 0 0 0 1 1 1 0 1 1 1 0
0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15
Είσοδος: Ν : Φυσικός αριθμός Εξοδος: Χ : Φυσικός αριθμός Κ : Φυσικός αριθμός Χ <- 1 Κ <- Ν Οσο Κ > 0 Χ <- Χ * Κ Κ <- Κ - 1 Τέλος (όσο)
Είσοδος: πλευρά_α, πλευρά_β, πλευρά_γ : Φυσικός αριθμός Εξοδος: εμβαδό : Φυσικός αριθμός αριθμός_πλακών : Φυσικός αριθμός συνολικό_βάρος : Πραγματικός αριθμός είναι_ισοσκελές : Λογική τιμή
Πριν: Ν Φυσικός αριθμός Μετά: Χ = Ν!
ύψος <- συν(κλίση) * πλευρά μέσο <- ύψος / 2
Οσο υπόλοιπο_χρημάτων > 0 δώσε_χαρτονόμισμα Τέλος (όσο) Επανάλαβε μείωσε_αέρα Οσο στροφές_κινητήρα < 900 Για πάντα έλεγξε_παραμέτρους_λειτουργίας_εργοστασίου Τέλος (για πάντα)
Αν ζωές_παίκτη > 0 Τότε ξεκίνα_νέο_παιγνίδι Αλλιώς εμφάνισε "Game Over" Τέλος (Αν) Αν στροφές > 8700 Τότε διάκοψε_την_τροφοδοσία Τέλος (Αν) Αν ομάδα ΠΑΟ Τότε χρώμα <- πράσινο Αλλιώς Αν ομάδα Ολυμπιακός Τότε χρώμα <- κόκκινο Αλλιώς Αν ομάδα ΑΕΚ Τότε χρώμα <- κίτρινο Τέλος (Αν)
89 D9 B8 01 00 83 F9 00 74 05 F7 E1 49 EB F6
; Παραγοντικό του BX στο AX MOV CX, BX MOV AX, 1 LOOP: CMP CX, 0 JZ DONE MUL CX DEC CX JMP LOOP DONE:
/* Παραγοντικό */ int factorial(int n) { int result; int count; count = n; result = 1; while (count > 0) { result = result * count; count = count - 1; } return (result); } int factorial(int n) { int result = 1; for (; n; n--) result *= n; return (result); }
factorial(0, 1). factorial(N, N_Factorial) :- N > 0, M is N - 1, factorial(M, M_Factorial), N_Factorial is M_Factorial * N.
(define (factorial n) (if (= n 1) 1 (* n (factorial (- n 1)))))
' Παραγοντικό του Ν FUNCTION Factorial(N AS INTEGER) AS INTEGER DIM Count AS INTEGER DIM Result AS INTEGER Count = N Result = 1 WHILE Count > 0 Result = Result * Count Count = Count - 1 WEND END FUNCTION
(* Παραγοντικό του Ν *) function factorial(N : Integer) : Integer; var Count, Result : Integer; begin Count := N; Result := 1; While Count > 0 Do begin Result := Result * Count; Count := Count - 1 end; Factorial := Result end (* Factorial *);
public int παραγοντικό(int ν) { int αποτέλεσμα; int μετρητής; μετρητής = ν; αποτέλεσμα = 1; while (μετρητής > 0) { αποτέλεσμα = αποτέλεσμα * μετρητής; μετρητής = μετρητής - 1; } return (αποτέλεσμα); }
(* Άθροισμα στοιχείων του πίνακα n στοιχείων a *) var a : array [1..10] of integer; n, i, sum : integer; begin sum := 0; for i := 1 to 10 do begin sum := sum + a[i]; end; end.
var point : record x : integer; (* Συντεταγμένη x *) y : integer; (* Συντεταγμένη y *) end; var customer : record name : array [1..50] of char; (* Όνομα πελάτη *) balance : integer; (* Υπόλοιπο λογαριασμού *) end; begin point.x := 1; point.y := 4; end.
type link = ^integer_list; integer_list = record value : integer; next : link; end;
program fun; (* Παραγοντικό του Ν *) function factorial(N : Integer) : Integer; var Count, Result : Integer; begin Count := N; Result := 1; While Count > 0 Do begin Result := Result * Count; Count := Count - 1 end; Factorial := Result end (* Factorial *); procedure clear_screen; const number_of_lines = 24; var i : integer; begin for i := 0 to number_of_lines do writeln(''); end (*clear_screen*); begin clear_screen; writeln(factorial(5)); end.
class Point extends Object { private int x; private int y; public void MoveTo(int x, int y) { this.x = x; this.y = y; } public int GetX() { return (x); } }
program recursive; (* Αναδρομικός ορισμός δεδομένων *) type link = ^integer_list; integer_list = record value : integer; next : link; end; (* Αναδρομική διαδικασία *) procedure russian_doll(size : integer); var i : integer; begin write('['); for i := 1 to size do write('-'); writeln(']'); if size > 1 then russian_doll(size - 1); end (* russina_doll *) ; (* Αναδρομική συνάρτηση *) function factorial(n : integer) : integer; begin if n = 0 then factorial := 1 else factorial := n * factorial(n - 1) end (* factorial *); begin writeln(factorial(5)); russian_doll(10); end.
120 [----------] [---------] [--------] [-------] [------] [-----] [----] [---] [--] [-]
ΑΔ ::= ΑΔ + ΠΓ | ΑΔ - ΠΓ | ΠΓ ΠΓ ::= ΠΓ * Β | ΠΓ / Β | Β Β ::= αριθμός | (ΑΔ)
υπολογισμός | μετατροπή σε λέξη | φωνητική ανάγνωση bc | number | speak
Μετατροπή κειμένου σε λέξεις | φιλτράρισμα λέξεων | ταξινόμηση | μέτρηση κοινών γραμμών | ταξινόμηση tr -cs A-Za-z '\012' | grep '^A-Za-z' | sort | uniq -c | sort -rn
Επανάλαβε Πιάσε το αριστερό πηρούνι Πιάσε το δεξί πηρούνι Φάε Άφησε τα πηρούνια Σκέψου Τέλος
Επανάλαβε Πιάσε το αριστερό πηρούνι Αν δεν υπάρχει δεξί πηρούνι Άσε το αριστερό πηρούνι Επανάλαβε Τέλος Πιάσε το δεξί πηρούνι Φάε Άφησε τα πηρούνια Σκέψου Τέλος
Επανάλαβε Περίμενε να ελευθερωθούν και τα δύο πηρούνια Πιάσε το αριστερό και το δεξί πηρούνι Φάε Άφησε τα πηρούνια Σκέψου Τέλος
Αν υπάρχει θέση Κράτησε ένα εισητήριο Τέλος
P(Κράτηση) Αν υπάρχει θέση Κράτησε ένα εισητήριο Τέλος V(Κράτηση)
Νησί(Σάμος). Διπλάσιο(4, 8). Αγαπά(Γιώργος, Μαρία). Δρομολόγιο(Αθήνα, Σάμος). Δρομολόγιο(Σάμος, Αθήνα). Δρομολόγιο(Αθήνα, Ηράκλειο). Δρομολόγιο(Ηράκλειο, Αθήνα). Δρομολόγιο(Α, Β) :- Δρομολόγιο(Α, Αθήνα), Δρομολόγιο(Αθήνα, Β). ? Δρομολόγιο(Σάμος, Αθήνα). ? Δρομολόγιο(Σάμος, Ηράκλειο). ? Δρομολόγιο(Σάμος, Αλεξανδρούπολη).
len([], 0). len([H | T], L) :- len(T, L1), L is L1 + 1.
λχ.+(χ 2) 1 = 3
len [] = 0 len (h : t) = 1 + len t
map f [] = [] map f (h : t) = (f h) : (map f t) map ((+) 1) [5, 8, 10] = [6, 9, 11]
class σχήμα { int χρώμα; void χρωμάτισε(int χρώμα) { this.χρώμα = χρώμα; ζωγράφισε(); } }; class τετράγωνο extends σχήμα { int x1, y1, x2, y2; void ζωγράφισε(void) { line(x1, y1, x1, y2, χρώμα); line(x1, y1, x2, y1, χρώμα); line(x2, y2, x1, y2, χρώμα); line(x2, y2, x2, y1, χρώμα); } int εμβαδό(void) { return (abs(x2 - x1) * abs(y2 - y1)); } } class κύκλος extends σχήμα { int x, y, ακτίνα; void ζωγράφισε(void) { circle(x, y, ακτίνα, χρώμα); } int εμβαδό(void) { return (2 * π * ακτίνα * ακτίνα); } }
Είσοδος: Α(1..Ν): πίνακας ακεραίων N : ακέραιος Έξοδος: Β(1..Ν): πίνακας ακεραίων Προϋποθέσεις: Ν >= 1 Μετασυνθήκες: Β(1..Ν) περιέχει τις τιμές του Α(1..Ν) Μεταβλητές Ι : Ακέραιος I := 1 Όσο Ι <= Ν Β(Ι) := Α(Ι) Αναλοίωτη συνθήκη: Β(1..Ι) := Α(1..Ι) Συνθήκη σύγκλισης: Ν - Ι Ι := Ι + 1 Τέλος
Τερματίζει(Πρόγραμμα, Δεδομένα) Είσοδος: Πρόγραμμα, Δεδομένα Έξοδος: Αληθές αν το πρόγραμμα τερματίζει με τα δεδομένα, αλλιώς ψευδές. Δοκιμή(Πρόγραμμα, Δεδομένα) Αν Τερματίζει(Πρόγραμμα, Δεδομένα) Τότε Όσο αληθές Τέλος (Όσο) Αλλιώς Δοκιμή := ψευδές Τέλος (Αν) Δοκιμή(Δοκιμή ..., Δοκιμή ...)
Για πάντα Πέτα νόμισμα και περίμενε το ανάλογο πηρούνι Αν υπάρχει και το άλλο πηρούνι Τότε πάρε το άλλο πηρούνι φάε Αλλιώς Άσε τα πηρούνια Τέλος Τέλος
cd home cd cs96 cd cs96.....
program hello; begin writeln('hello, world') end.Μπορούμε να το αλλάξουμε για να τυπώσει:
writeln('Hello'); writeln('my name is Giannis')
'hello, world' 'John''s PC'
3.1415127 1.0 1.6384E4
42 -5 +4096
+
-
*
/
div
mod
( )
sqr(x)
sqrt(x)
ln(x)
exp(x)
sin(x)
cos(x)
tan(x)
arctan(x)
abs(x)
program, begin, writeln, arctan, exp, var, end
κ.λπ.
program DeclarationExample; var Steps : integer; {Ακέραιος} Area : real; {Πραγματικός} SideA, SideB : real; {Πραγματικός} Grade : char; {Χαρακτήρας} const G = 9.81; {Επιτάχυνση της βαρύτητας} StudentNumber = 112; {Αριθμός φοιτητών} begin ...
program AssignmentExample; var Steps : integer; Area : real; begin Steps := 15 * 8; Area := (5.3 * 8.2) / 2.0 end.
trunc(x)
round(x)
ord(x)
succ(x)
pred(x)
chr(x)
readln
.
Readln(x, ...)
Basi: 10 Ypsos: 4 Embado = 20
Kodikos xaraktira: 67 O xaraktiras 67 einai o C O proigoumenos xaraktiras einai o B O epomenos xaraktiras einai D
program CylinderVolume; { Read and print a cylinder volume } var Height, R: real; const p = 3.1415127; begin write('Height:'); readln(Height); write('R:'); readln(R); writeln; writeln('Height:', Height); writeln('R:', R); writeln('Volume:', 2.0 * p * sqr(R) * Height) end.
var isprime: boolean;
program example; var a, b: integer; AreSame, AreDifferent: boolean; CopyOfAreSame: boolean; begin readln(a, b); AreSame := (a = b); AreDifferent := (a <> b); CopyOfAreSame := AreSame end.
if
μπορούμε να εκτελέσουμε εντολές
κατ' επιλογή ανάλογα με μια συνθήκη τύπου boolean.
if
έχει την παρακάτω μορφή:
if συνθήκη then εντολή1 else εντολή2
program CheckGrade; var Grade: integer; begin write('Δώστε το βαθμό:'); readln(Grade); if Grade >= 5 then writeln('Πέρασες') else writeln('Κόπηκες') end.
begin
και end
.
begin εντολή; εντολή; εντολή end
then
και το else
.
program CheckGrade2; var Grade: integer; begin write('Δώστε το βαθμό:'); readln(Grade); if Grade >= 5 then begin writeln('Πέρασες'); writeln(':-)') end else begin writeln('Κόπηκες'); writeln(':-(') end end.
while
μπορούμε να εκτελέσουμε εντολές
κατ' επανάληψη ανάλογα με μια συνθήκη τύπου boolean.
while
έχει την παρακάτω μορφή:
while συνθήκη do εντολή
program PrintSquares; {Εκτυπώνει τα τετράγωνα από το 1..10} var i: integer; begin i := 1; while i <= 10 do begin writeln(i, sqr(i)); i := i + 1 end end.
procedure όνομα; begin εντολή; εντολή; ... end;
program PrintSquare; var lines : integer; procedure SquareEnd; begin writeln('********') end; procedure SquareMiddle; begin writeln('* *') end; begin SquareEnd; lines := 1; while lines < 5 do begin SquareMiddle; lines := lines + 1 end; SquareEnd end.
function όνομα(όρισμα : τύπος1) : τύπος2; begin όνομα := έκφραση με βάση το όρισμα end;
program PrintCubes; var count : integer; procedure Cube(x : integer) : integer; begin Cube := x * x * x end; begin count := 1; while count < 5 do begin Writeln(count, '^3=', cube(count)); count := count + 1 end end.
Τμήμα
Μαθηματικών
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
(1η Πρόοδος)
Διδάσκων: Δ. Σπινέλλης | 27 Νοεμβρίου 1996 |
Θέμα 1ο:
Στα παραπάνω
πρέπει να φαίνεται
με σαφήνεια
ο τρόπος με
τον οποίο φτάσατε
στο συγκεκριμένο
αποτέλεσμα.
Θέμα 2ο:
Θέμα 3ο:
Περιγράψτε
τη δομή ενός
απλού επεξεργαστή
(της κεντρικής
μονάδας επεξεργασίας)
και εξηγήστε
σύντομα τον
κύκλο των εντολών
της.
Θέμα 4ο:
Θέμα 5ο:
Να γραφεί ο ψευδοκώδικας για την υλοποίηση της μαθηματικής συνάρτησης f(n) που ορίζεται ως εξής:
n = 0: 1 | |
f(n): | n = 1: 1 |
n > 1: f(n-1) + f(n-2) |
Θέμα 6ο:
Γράψτε τις τιμές των καταχωρητών AX, SI μετά την εκτέλεση κάθε μιας από τις παρακάτω εντολές:
MOV AX, 3 ; Μεταφορά: προορισμός πηγή
MOV SI, 4 ; Μεταφορά: προορισμός πηγή
MOV [SI], AX ; Μεταφορά: προορισμός πηγή
SUB AX, 1 ; Αφαίρεση : προορισμός προορισμός - πηγή
ADD
AX, SI
; Πρόσθεση:
προορισμός
προορισμός
+ πηγή
Διάρκεια εξέτασης 1.5 ώρα. | Καλή επιτυχία |
Τμήμα
Μαθηματικών
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
(1η Πρόοδος)
Διδάσκων: Διομήδης Σπινέλλης | Νοέμβριος 1997 |
Θέμα 1ο:
Στα παραπάνω
πρέπει να φαίνεται
με σαφήνεια
ο τρόπος με
τον οποίο φτάσατε
στο συγκεκριμένο
αποτέλεσμα.
Θέμα 2ο:
Θέμα 3ο:
Θέμα 4ο:
Θέμα 5ο:
Να γραφεί
ο ψευδοκώδικας
που για έναν
ακέραιο αριθμό
βρίσκει το
μέγιστο ακέραιο
διαιρέτη
μικρότερο
από τον αριθμό
αυτό. Θεωρήστε
ότι έχετε στη
διάθεσή σας
τη συνάρτηση
mod(χ, ψ)
η οποία
σας επιστρέφει
το υπόλοιπο
της ακέραιας
διαίρεσης
του χ με
τον ψ.
Θέμα 6ο:
Γράψτε τις τιμές των καταχωρητών BX, DI μετά την εκτέλεση κάθε μιας από τις παρακάτω εντολές:
MOV BX, 12 ; Μεταφορά: προορισμός πηγή
MOV DI, 6 ; Μεταφορά: προορισμός πηγή
MOV [DI+BX], BX ; Μεταφορά: προορισμός πηγή
DEC BX ; Μείωση του προορισμού
ADD
BX, [DI+BX+1]
; Πρόσθεση:
προορισμός
προορισμός
+ πηγή
Διάρκεια εξέτασης 1.5 ώρα. | Καλή επιτυχία! |
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ | Εξεταστική περίοδος
Φεβρουαρίου 1997 |
Διδάσκων: Διομήδης Σπινέλλης |
Θέμα 1ο:
Θέμα 2ο:
Θέμα 3ο:
Θέμα 4ο:
0100 | mov | ax, 3 | ; Move / Ανάθεση τιμής |
0103 | mov | si, 0 | ; Move / Ανάθεση τιμής |
0106 | add | si, ax | ; Add / Πρόσθεση |
0108 | sub | ax, 1 | ; Subtract / Αφαίρεση |
010B | jnz | 106 | ; Jump if Not Zero / Άλμα υπό συνθήκη (διάφορο του 0) |
010D | ... |
Θέμα 5ο:
Γράψτε
σε Pascal ένα πρόγραμμα
που για κάθε
ακέραιο αριθμό
Ν από το 1 έως
το 31 να τυπώνει:
α) τον αριθμό
αυτό (Ν), β) τον
κύβο του (Ν3)
και, γ) τη λέξη
"άρτιος" ή
"περιττός"
ανάλογα με
το αν o αριθμός
είναι άρτιος
ή περιττός.
Ο υπολογισμός
του κύβου να
γίνει σε ξεχωριστή
συνάρτηση
(function) της Pascal.
Διάρκεια εξέτασης 2.5 ώρες. | Καλή επιτυχία! |
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ | Εξεταστική περίοδος
Σεπτεμβρίου 1997 |
Διδάσκων: Διομήδης Σπινέλλης |
Θέμα 1ο:
Θέμα 2ο:
Θέμα 3ο:
Θέμα 4ο:
Θέμα 5ο:
Γράψτε
σε Pascal ένα πρόγραμμα
που για κάθε
ακέραιο αριθμό
Ν από το 1 έως
το 7 να τυπώνει:
α) τον αριθμό
αυτό (Ν), β) το
παραγοντικό
του (Ν!). Ο υπολογισμός
του παραγοντικού
να γίνει σε
ξεχωριστή
συνάρτηση
(function) της Pascal.
Διάρκεια εξέτασης 2.5 ώρες. | Καλή επιτυχία! |
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ | Εξεταστική περίοδος
Ιανουαρίου 1998 |
Διδάσκων: Διομήδης Σπινέλλης |
Θέμα 1ο:
Θέμα 2ο:
Θέμα 3ο:
Θέμα 4ο:
0100 | mov | si, 200 | ; Move / Ανάθεση τιμής |
0103 | mov | ax, 0 | ; Move / Ανάθεση τιμής |
0106 | mov | [si], 2 | ; Move / Ανάθεση τιμής |
010A | add | ax, [si] | ; Add / Πρόσθεση |
010C | sub | [si], 1 | ; Subtract / Αφαίρεση |
010E | jnz | 10a | ; Jump if Not Zero / Άλμα υπό συνθήκη (διάφορο του 0) |
0110 | ... |
Θέμα 5ο:
Το οριζόντιο
βεληνεκές
ενός βλήματος
που εκτοξεύεται
με ταχύτητα
v και γωνία
φ δίνεται από
τον τύπο: (v2
ημ φ) / g. Γράψτε
σε Pascal ένα πρόγραμμα
που για τις
γωνίες 0-π/2 και
ανά π/32 rad να τυπώνει
τη γωνία και
το αντίστοιχο
βεληνεκές.
Η αρχική ταχύτητα
να δίνεται
από το χρήστη.
Ο υπολογισμός
του βεληνεκούς
να γίνει σε
ξεχωριστή
συνάρτηση
(function) της Pascal. Θεωρήστε
π=3,14 και g=9,81 m/s2.
Διάρκεια εξέτασης 1.5 ώρα | Καλή επιτυχία! |
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ |
Εξεταστική περίοδος Σεπτεμβρίου 1998 |
Διδάσκων: Διομήδης Σπινέλλης |
Θέμα 1ο:
Θέμα 2ο:
INC R0 ; Αύξησε κατά ένα την τιμή του καταχωρητή R0
Θέμα 3ο:
Θέμα 4ο:
0100 |
MOV |
AX, 0002 |
; Move / Ανάθεση τιμής |
|
0103 |
MOV |
SI, AX |
; Move / Ανάθεση τιμής |
|
0105 |
ADD |
AX, SI |
; Add / Πρόσθεση |
|
0107 |
MOV |
[SI], AX |
; Move / Ανάθεση τιμής |
|
0109 |
ADD |
SI, 1 |
; Add / Πρόσθεση |
|
010C |
CMP |
SI, AX |
; Compare / Σύγκριση |
|
010E |
JNE |
0107 |
; Jump if Not Equal / Άλμα υπό συνθήκη (διάφορο) |
|
0110 |
... |
Θέμα 5ο:
Η μετατροπή βαθμών θερμοκρασίας από την κλίματα Celsius στην κλίμακα Fahrenheit δίνεται από τον τύπο tF = (tC * 1.8) + 32. Γράψτε σε Pascal ένα πρόγραμμα που να ζητάει από το χρήστη μια θερμοκρασία σε βαθμούς Fahrenheit και στη συνέχεια να τυπώνει την τιμή της θερμοκρασίας σε βαθμούς Celsius καθώς και τόσα αστέρια (Υ*Υ) όσοι και οι αντίστοιχοι βαθμοί. Παράδειγμα:
Fahrenheit: 50
Celsius = 10 **********
Διάρκεια εξέτασης 1.5 ώρα |
Καλή επιτυχία! |