====== Συνοπτικές Σημειώσεις ======
===== Δομή Προγράμματος =====
Παράδειγμα
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}
--!