====== Συνοπτικές Σημειώσεις ====== ===== Δομή Προγράμματος ===== Παράδειγμα program testprog1; {Τίτλος προγράμματος} uses crt; {Προαιρετικά: Βιβλιοθήκες για extra εντολές} const {Δηλώσεις σταθερών } stathera1='keimeno'; stathera2=10; pi=3.14; var {Δηλώσεις μεταβλητών } metabliti1 : integer; { όνομα μεταβλητής : τύπος μεταβλητής } metabliti2, metabliti3 : string; {..} BEGIN {Κυρίως πρόγραμμα} writeln('Hello World'); // εντολή1; {εντολή2; .. εντολήΝ; } END. {Τέλος προγράμματος} ===== Βασικές εντολές ===== * **writeln('κείμενο');** : //Εμφανίζει στην Οθόνη// κείμενο και αλλάζει γραμμή μετά. * **write('κείμενο');** : Ομοίως //χωρίς αλλαγή γραμμής//. * **writeln('κείμενο1 ', //metabliti1//, ' κείμενο2 ', //metabliti2// );** : Εμφανίζει κείμενα και τιμές μεταβλητών. Χωρίζουμε με κόμμα. * **writeln(//metabliti:15:2//);** : Εμφανίζει την //metabliti// με //2 δεκαδικά ψηφία// και σε χώρο //15 θέσεων// με //δεξιά στοίχιση//. * **writeln(//metabliti:0:2//);** : Αν ορίσουμε //0 θέσεις// ή γενικά λιγότερες από όσες θέλει η metabliti για να εμφανιστεί, θα εμφανιστεί κανονικά αλλά //χωρίς στοίχιση//. * **readln(metabliti);** : //Διαβάζει από το πληκτρολόγιο//, και το //αποθηκεύει στην metabliti// * **readln(metabliti3, metabliti4);** : //(__Δεν συστήνεται για διάβασμα από το πληκτρολόγιο)__//. Διαβάζει 2 τιμές που χωρίζονται με κενό και μετά περιμένει αλλαγή γραμμής (ENTER) * **read(metabliti3);** : //(__Δεν συστήνεται για διάβασμα από το πληκτρολόγιο)__//. Διαβάζει 1 τιμή χωρίς να περιμένει αλλαγή γραμμής (ENTER) * **read(metabliti3, metabliti4);** : //(__Δεν συστήνεται για διάβασμα από το πληκτρολόγιο)__//. Διαβάζει 2 τιμές που χωρίζονται με κενό χωρίς να περιμένει αλλαγή γραμμής (ENTER) ===== Δηλώσεις Σταθερών ===== * **const** : Ξεκινάνε δηλώσεις (στην επόμενη γραμμή). * **a = 5;** : Δηλώνει την σταθερά //a// ως //ακέραια// με τιμή //5//. * **b = 7.2;** : Δηλώνει την σταθερά //b// ως //πραγματικό// με τιμή //7.2//. * **c = 'hello';** : Δηλώνει την σταθερά //c// ως //κείμενο// με τιμή //'hello'// . * **d = 'Χ';** : Δηλώνει την σταθερά //d// ως //χαρακτήρα// με τιμή //'Χ'//. * **e = true;** : Δηλώνει την σταθερά //e// ως //λογική// με τιμή //true//. ===== Δηλώσεις μεταβλητών ===== * **var** : Ξεκινάνε δηλώσεις (στην επόμενη γραμμή). * **a : integer;** : Δηλώνει την μεταβλητή //a// ως //ακέραιο//. * **b : real;** : Δηλώνει την μεταβλητή //b// ως //πραγματικό//. * **c1 : string;** : Δηλώνει την μεταβλητή //c// ως //κείμενο// (255 χαρακτήρων). * **c2 : string[40];** : Δηλώνει την μεταβλητή //c// ως //κείμενο// (40 χαρακτήρων) . * **d : char;** : Δηλώνει την μεταβλητή //d// ως //χαρακτήρα//. * **e : boolean;** : Δηλώνει την μεταβλητή //e// ως //λογική (true/false)//. * **f, g, h : integer;** : Δηλώνει πολλές μεταβλητές μαζί. Π.χ. τις //f, g, h// ως //ακέραιες//. ===== Αναθέσεις τιμών ===== * **metabliti1:='κείμενο';** : Αποθηκεύει το //κείμενο// στην //metabliti1// * **metabliti2:=5;** : Αποθηκεύει έναν αριθμό π.χ. το //5// στην //metabliti2// * **metabliti3:=metabliti4 + metabliti5;** : Κάνει μια πράξη π.χ. προσθέτει την //metabliti4// με την //metabliti5// και αποθηκεύει το αποτέλεσμα στην //metabliti3// * **i:=i+1;** : Αυξάνει την τιμή της μεταβλητής i κατά 1. ===== Σχόλια ===== {Μέσα σε αγκύλες βάζουμε σχόλια. Μπορεί να είναι πολλές γραμμές.} (* Άλλος τρόπος για σχόλια. Μπορεί να είναι πολλές γραμμές.*) //Μετά τις 2 καθέτους βάζουμε σχόλια μέχρι το τέλος της γραμμής ===== Extra εντολές ===== //(Χρειάζονται την βιβλιοθήκη crt)// Για να βάλουμε και κάποια εφέ στα προγράμματά μας υπάρχουν κάποιες ενδιαφέρουσες εντολές * **textcolor(lightgreen);** : * **textbackground(blue);** : * **clrscr;** : * **randomize** * **random** * if **keypressed** then .. else .. : * epilogi:=**readkey;** : * **gotoxy(30,4);** : * **delay(2000);** : ===== Εντολές Διακλάδωσης ===== ==== if .. then .. else ==== * **χωρίς else** με 1 εντολή if {συνθήκη} then {εντολή1}; * **χωρίς else** με πολλές εντολές if {συνθήκη} then begin {εντολή1; εντολή2;} end; * **με else** με 1 εντολή στο then και μία στο else if {συνθήκη} then {εντολή1} else {εντολή2;} * **με else** με πολλές εντολές if {συνθήκη} then begin {εντολή1; εντολή2;} end else begin {εντολή3; εντολή4;} end; * **Εμφωλιασμένες if (if μέσα σε if)** //(Τα begin..end είναι προαιρετικά εδώ, αλλά βοηθάνε)// if {συνθήκη1} then begin if {συνθήκη2} then {εντολή1} else {εντολή2;} end else begin if {συνθήκη3} then {εντολή3} else {εντολή4;} end; ==== case .. of ==== * **Γενικά** case {μεταβλητή} of {τιμή μεταβλητής}: {εντολή ή εντολές μέσα σε begin .. end} {άλλη τιμή μεταβλητής}: {εντολή ή εντολές μέσα σε begin .. end} {λίστα τιμών μεταβλητών}: {εντολή ή εντολές μέσα σε begin .. end} else : {εντολή ή εντολές μέσα σε begin .. end} end; * **Παράδειγμα1: με ακέραια μεταβλητή, με 1 εντολή ανά περίπτωση** case metabliti1 of 5 : {εντολή1;} 8 : {εντολή2;} end; * **Παράδειγμα2: με ακέραια μεταβλητή, με πολλές εντολές και else** case metabliti1 of 10 : begin {εντολή1; εντολή2;} end; 12 : {εντολή3;} else : {εντολή4;} end; * **Παράδειγμα3: με μεταβλητή χαρακτήρα** case metabliti1 of 'a' : begin {εντολή1; εντολή2;} end; 'b' : {εντολή3;} '4' : {εντολή4;} else : begin {εντολή5; εντολή6;} end; end; * **Παράδειγμα4: με λίστα τιμών, π.χ. χαρακτήρων** case metabliti1 of 'a', 'Α', '1' : {εντολή1;} 'b', 'c' : begin {εντολή3; εντολή4;} end; 'd' : {εντολή5;} else : {εντολή6;} end; * **Παράδειγμα5: (σπάνια χρήση) Με συνθήκη - όμοια με if .. then .. else ** case {συνθήκη} of // if {συνθήκη} then true : {εντολή1;} // {εντολή1} false : {εντολή2;} // else end; // {εντολή2;} ===== Εντολές Επανάληψης ===== ====repeat .. until==== Για επαναλήψεις που θα εκτελεστούν έστω μία φορά χρησιμοποιούμε **repeat..until** * Ο έλεγχος γίνεται **μετά την επανάληψη** άρα η επανάληψη θα εκτελεστεί **τουλάχιστον μία φορά** * Η συνθήκη πρέπει να είναι **false** για να συνεχίζεται η επανάληψη Μη γνωρίζοντας ακριβή αριθμό επαναλήψεων repeat { εντολές .. } until {συνθήκη}; Γνωρίζοντας τον ακριβή αριθμό επαναλήψεων π.χ. 5 (συστήνεται η απλότερη for) i:=1; repeat { εντολές .. } i:=i+1; until i>5; ==== while ==== Η πιο γενική επανάληψη γίνεται με **while** * Ο έλεγχος γίνεται πριν την επανάληψη άρα μπορεί να μην εκτελεστεί καμία φορά * Η συνθήκη πρέπει να είναι **true** για να συνεχίζεται η επανάληψη Μη γνωρίζοντας ακριβή αριθμό επαναλήψεων while {συνθήκη} do begin { εντολές .. } end; Γνωρίζοντας τον ακριβή αριθμό επαναλήψεων π.χ. 5 (συστήνεται η απλότερη for) i:=1; while i<=5 do begin { εντολές .. } i:=i+1; end; ==== for ==== Η πιο απλή επανάληψη όταν γνωρίζουμε από πριν τον αριθμό των επαναλήψεων * Ο έλεγχος γίνεται πριν την επανάληψη άρα (από λάθος συνθήκη) μπορεί να μην εκτελεστεί καμία φορά Για αύξουσα μέτρηση π.χ. 5 επαναλήψεις for i:=1 to 5 do begin { εντολές .. } end; Για φθίνουσα μέτρηση π.χ. 5 επαναλήψεις for i:=5 downto 1 do begin { εντολές .. } end; !-- var {ξεκινάνε δηλώσεις (στην επόμενη γραμμή)} a : integer; {Δηλώνει την μεταβλητή a ως ακέραια} writeln('κείμενο'); {Εμφανίζει στην Οθόνη κείμενο και αλλάζει γραμμή μετά} write('κείμενο'); {Ομοίως χωρίς αλλαγή γραμμής} writeln('κείμενο1 ', metabliti1, ' κείμενο2 ', metabliti2 ); {Εμφανίζει κείμενα και τιμές μεταβλητών. Χωρίζουμε με κόμμα} readln(x); {Διαβάζει από το πληκτρολόγιο, και το αποθηκεύει στην μεταβλητή x} --!