Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 32

Γενική Μορφή

Η Γενική μορφή ενός προγράμματος C++ είναι η εξής:

#include <iostream.h>
#include <stdlib.h>

void main()
{

...
ΕΝΤΟΛΕΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
...

• Βιβλιοθήκες (Libraries): Στην αρχή με πράσινα γράμματα φαίνονται οι βιβλιοθήκες


που θα χρησιμοποιήσουμε μέσα στο πρόγραμμα. Οι βιβλιοθήκες δεν είναι τίποτα
άλλο παρά αρχεία που περιέχουν κώδικα γραμμένος σε C++. Συγκεκριμένα τα αρχεία
αυτά έχουν την κατάληξη .h και βρίσκονται μέσα στον φάκελο που εγκαταστήσαμε
τον compiler (Ισχύει για όλους τους compiler και όχι μόνο για τον Dev-C++).
Με την εντολή #include είναι σαν να συμπεριλαμβάνουμε όλον τον κώδικα που
βρίσκεται σε αυτό το αρχείο καταναλώνοντας μόνο μια γραμμή μέσα στο πρόγραμμά
μας.
Αν και μπορεί ο κάθε προγραμματιστής, να δημιουργήσει δικές του βιβλιοθήκες, σε
αυτή τη σειρά μαθημάτων θα χρησιμοποιήσουμε τις έτοιμες βιβλιοθήκες που μας
παρέχει ο Compiler. Oι δύο βιβλιοθήκες που φαίνονται πάνω (iostream.h
και stdlib.h) είναι οι δύο βασικές βιβλιοθήκες που περιέχουν τις εντολές που θα
χρησιμοποιήσουμε στα μαθήματα. Θα τις συμπεριλαμβάνουμε σε κάθε πρόγραμμα
μας.
• Η συνάρτηση main: Κάτω από τις βιβλιοθήκες υπάρχει η συνάρτηση main. Η
συνάρτηση αυτή, είναι το κύριο μέρος του προγράμματος. Οι αγκύλες υποδηλώνουν,
την αρχή και το τέλος της συνάρτησης. Μέσα στις αγκύλες, γράφουμε τις εντολές του
προγράμματος.

Case Sensitive: Η C++ είναι μια γλώσσα case sensitive. Αυτό σημαίνει οτι ξεχωρίζει τα
κεφαλαία από τα πεζά γράμματα και έτσι θα πρέπει να είμαστε προσεκτική στο τί γράφουμε,
γιατί αν γράψουμε μια εντολή με κεφαλαία ενώ θα έπρεπε να την γράψουμε με πεζά, δεν θα
γίνει κατανοητή από τον compiler, και θα βγάλει μήνυμα σφάλματος.

Page 1
Η εντολή εξόδου COUT
Πάμε να γράψουμε το πρώτο μας πρόγραμμα. Ένα πρόγραμμα το οποίο θα τυπώνει στην
οθονη την φράση "ftou skoulikomirmigotrypa"

#include <iostream.h>
#include <stdlib.h>

void main()
{

cout<<"ftou skoulikomirmigotrypa"<<endl;
system("PAUSE");

• cout: Είναι η εντολή εξόδου. Με αυτήν εκτυπώνουμε στην οθόνη.

cout << τιμή

• endl: Στο πρόγραμμά μας, μετά από την εντολή cout, ακολουθεί η εντολή endl; Αυτή
η εντολή μας μεταφέρει τον κέρσορα, μια γραμμή ποιο κάτω. Είναι σαν να πατάμε
Enter στο MS Word. Χρησιμεύει για να ξεχωρίζουμε τα αποτελέσματά μας στην
οθόνη.
• system("PAUSE"): Δε ξέρω για τους άλλους compilers, στον Dev-C++ πάντος αυτή
η εντολή, χρειάζεται υποχρεωτικά στο τέλος του προγράμματος, για να μπορέσουμε
να δούμε τα αποτελέσματα μάς. Αν δε τον συμπεριλάβουμε, τότε το παράθυρο θα
κλείσει σε χρόνο dt, χωρίς να μπορέσουμε να δούμε τι κάναμε. Σε φυσιολογικές
συνθήκες, το πρόγραμμα μας θα έχει τελειώσει όταν δούμε στην οθόνη το μύνημα
"Press any key to continue".
• Το ελληνικό ερωτηματικό (;): Συμβολίζει το τέλος της κάθε εντολής. Πολλές φορές
όταν το ξεχνάμε χτυπάει ο compiler *

Λεξιλόγιο
*χτυπάει ο compiler = μας βγάζει μύνημα οτι κάτι έχουμε κάνει λάθος

Page 2
Μεταβλητές

Φανταστείτε τις μεταβλητές σαν κουτάκια τα οποία μπορούν να


πάρουν τιμές μέσα.

Όπως λέει και το όνομά, οι τιμές αυτές τις περισσότερες φορές μεταβάλονται. Η τιμή αυτή
μπορεί να είναι απο ένας θετικός ή αρνητικός αριθμός μέχρι μια λέξη, ή μια ολόκληρη
πρόταση. Έτσι ανάλογα με τί τιμή μπορεί να πάρει κάθε μεταβλητή τις χωρίζουμε σε
διάφορους τύπους.
Στον παρακάτω πίνακα αναφέρονται οι τύποι των μεταβλητών, το μέγεθος των byte που
χρησιμοποιούν, καθώς και η εμβέλεια των τιμών που μπορούν να πάρουν.

Τύπος Χαρακτηρισμός Bytes Εμβέλεια τιμών


int Ακέραιος Αριθμος 4
unsigned int -||- 4
short -||- 2 –32,768 έως 32,767
unsigned short -||- 2 0 έως 65,535
long -||- 4 –2,147,483,648 έως 2,147,483,647
unsigned long -||- 4 0έως 4,294,967,295
float Δεκαδικός Αριθμός 4 3,4e-38 έως 3,4e38 (7 ψηφία)

double -||- 8 1,7e-308 έως 1,7e308 (15 ψηφία)


long double -||- 12
char Χαρακτήρας 1 –128 έως 127
unsigned char -||- 1 0 έως 255
bool Boolean 1 false ή true

Παρατηρήστε τη διαφορά μερικών τύπων μεταβλητών, με κάποιών άλλων οι οποίοι έχουν το


ίδιο όνομα με τον χαρακτηρισμό unsigned μπροστά. Η εμβέλεια είναι η ίδια, αλλά η διαφορά
είναι η εξής: Οι unsigned μεταβλητές, μπορούν να έχουν ώς τιμές, μεγαλύτερους αριθμούς
απ'ότι οι μη unsigned, αλλα ταυτόχρονα έχουν το μειονέκτημα ότι δεν μπορούν να πάρουν
καθόλου αρνητικούς αριθμούς.

Ονοματολογία
Επίσης στις μεταβλητές δίνουμε και ονόματα. Βεβαίως δε θα μπορούσαμε να ονομάσουμε μια
μεταβλητή Αλέξανδρο, Σούζυ ή Μπάμπη. Συνήθως τα ονόματα που δίνουμε στις μεταβλητές,
χαρακτηρίζουν την ιδιότητα της τιμής που αποθηκεύουν, έτσι ώστε να θυμίζει και στον
προγραμματιστή.
Πχ. αν θέλουμε μια μεταβλητή η οποία να αποθηκεύει την ηλικία του χρήστη, τότε θα την
ονομάσουμε ilikia ή age.

Υπάρχουν ορισμένοι κανόνες ονοματολογίας που θα πρέπει να προσέξουμε έτσι ώστε να


αποφεύγουμε άσκοπα λάθη. Απλά να ξέρετε οτι για ένα όνομα μεταβλητής μπορείτε να
χρησιμοποιείτε όλους τους χαρακτήρες απο a-z και 0-9 καθώς επίσης και την παύλα ( _ ).
Επίσης, ένα όνομα μεταβλητής απαγορεύεται να αρχίζει με αριθμό.

Δήλωση μεταβλητών και ανάθεση τιμών σε αυτές


Πρίν χρησιμοποιήσουμε μια μεταβλητή, θα πρέπει να την δηλώσουμε μέσα στο πρόγραμμα.

Page 3
Τις μεταβλητές τις δηλώνουμε, δηλώνοντας πρώτα τον τύπο της μεταβλητής, το όνομά της,
και αν θέλουμε ορίζουμε και μια αρχική τιμή.

τύπος όνομα;

τύπος όνομα = τιμή;

Η ανάθεση όπως φένεται από το δείγμα, γίνεται με το σύμβολο του ίσον (=). Από τη στιγμή
που ο compiler θα δεί μια τέτοια ισότητα, θα πάει στο "κουτάκι" που προαναφέραμε και θα το
γεμίσει με την τιμή που βρίσκεται δεξιά από το ίσον. Πχ

int arithmos = 235;

και το κουτάκι θα
διαμορφωθεί ως εξής:

Από δώ και στο εξής, οπουδήποτε χρησιμοποιήσουμε την μεταβλητή arithmos, θα είναι σα
να χρησιμοποιούμε τον αριθμό 235.

Επίσης, μπορούμε σε οποιοδήποτε μέρος του προγράμματος να αλλάξουμε την τιμή της
μεταβλητής arithmos, με μια καινούρια τιμή, πάλι με ανάθεση, αρκεί δηλαδή να γράψουμε

arithmos = 14;

και το κουτάκι θα διαμορφωθεί


ως εξής:

Σημειώστε οτι αυτή τη φόρά δε χρειάζεται να συμπεριλάβουμε την λέξη int στην εντολή μας,
γιατί την μεταβλητή την έχουμε ήδη δηλώσει πιο πάνω στο πρόγραμμα.

Προσέξτε το παρακάτω πρόγραμμα:

#include <iostream.h>
#include <stdlib.h>

void main(){

char frouto[10]="peponi";

cout<< frouto <<endl;

system("PAUSE");

Στην αρχή δηλώνουμε μια μεταβλητή τύπου char με το όνομα frouto η οποία μπορεί να
πάρει το πολύ μέχρι 10 χαρακτήρες.
Στην ίδια γραμμή, ορίζουμε ως αρχική τιμή για την μεταβλητή frouto, το string "peponi".
Στην συνέχεια ζητάμε από το πρόγραμμα να μας εκτυπώσει στην οθόνη τα περιεχόμενα της
μεταβλητής frouto, δηλαδή, αυτό που θα δούμε τελικά στην οθόνη θα είναι η λέξη "peponi".

Page 4
Άλλα παραδείγματα δηλώσεων μεταβλητών και αναθέσεων τιμών σε
αυτές:

• int x;
x=3459;

Δηλώνουμε έναν ακέραιο με το όνομα x. Στη συνέχεια αναθέτουμε την τιμή


3459.

• int y;z;

Δηλώνουμε δύο ακαίραιους με τα όνοματα y και z. Βολεύει πολύ τις


μεταβλητές του ίδιου τύπου να τις δηλώνουμε στην ίδια γραμμή απ' ότι, τη
μία κάτω από την άλλη.

• unsigned short age=18;

Δηλώνουμε έναν ακαίραιο με το όνομα age και ταυτόχρονα του δίνουμε την
τιμή 18. Επιλέξαμε short γιατί χρησιμοποιεί λιγότερα bytes απ' ότι ο τύπος int
και μας βοηθάει στην εξοικονόμηση μνήμης.

• float price;
price=5.2;

Δηλώνουμε έναν δεκαδικό με το όνομα price. Στη συνέχεια δίνουμε στην


price την τιμή 5.2

• float pi=3.14;

Δηλώνουμε έναν δικαδικό με το όνομα pi και ταυτόχρονα του αναθέτουμε


αρχική τιμή το 3.14

• double eti_fotos;

Δηλώνουμε έναν δεκαδικό μεγάλης εμβέλειας και του δίνουμε το όνομα


eti_fotos. Ο λόγος που επηλέξαμε double είναι προφανής

• char onoma[10]="Maria";

Δηλώνουμε μια ακολουθία 10 χαρακτήρων onoma, και της δίνουμε για αρχική
τιμή τη λέξη "Maria".

Σημείωση 1: Πάντα όταν χρησιμοποιούμε μεταβλητές τύπου char θα αναθέτουμε


ακολουθία χαρακτήρων και όχι μεμονωμένους χαρακτήρες. Ο αριθμός μέσα στην
αγκύλη υποδηλώνει τον μέγιστο αριθμό χαρακτήρων που μπορεί να πάρει η
μεταβλητή. Έτσι και αναθέσουμε μια τιμή με περισσότερους χαρακτήρες, τότε ο
compiler, θα "χτυπήσει".

Page 5
Σημείωση 2: Οι ακολουθίες χαρακτήρων (ή αλλιώς strings), πάντα πρέπει να
βρίσκονται μέσα σε διπλά εισαγωγικά (αυτάκια). Έτσι και δε συμπεριλάβουμε αυτάκια,
δηλαδή έτσι και γράψουμε

char onoma[10]=Maria;

αυτό που θα καταλάβει ο compiler είναι οτι αναθέτουμε στην μεταβλητή όνομα, την τιμή
μιας άλλης υποτιθέμενης μεταβλητής με το όνομα Maria.

• char countdown[15]="321";

Όπως και πάνω, δηλώνουμε μια ακολουθία 15 χαρακτήρων με το όνομα


countdown, και της δίνουμε για αρχική τιμή τη λέξη "321".

Προσοχή!!! Το 321, το λαμβάνει σαν φράση και όχι σαν αριθμό, επειδή βρίσκεται
μέσα σε εισαγωγικά.

• int x=5+4;

Δηλώνουμε την ακαίραια μεταβλητή x της οποίας η τελική τιμή είναι το


αποτέλεσμα της πράξης 5+4, δηλαδή 9.

• bool condition=true;

Εδώ ορίζουμε μια μεταβλητή τύπου Boolean. Αυτός είναι ένας περίεργος
τύπος μεταβλητής. Οι μεταβλητές αυτές, μπορούν να πάρουν μόνο 2 τιμές,
τις τιμές true (1) ή false (0).

Page 6
Πράξεις και Μεταβλητές
Σημείωση: Για εξοικονόμηση χώρου και χρόνου, από δώ και στο εξής, όπου αναφέρω
παραδείγματα σε κώδικα C++, θα παραλείπονται σκοπίμως, εκτός από μερικές
περιπτώσεις, μερικές στοιχειώδεις και αυτονόητες εντολές της C++, όπως οι #include,
η function main(), και καμιά φορά και η δήλωση μεταβλητών.

Με τις μεταβλητές και τους αριθμούς μπορούμε να παίξουμε. Έχουμε πχ

int x,y,z,miso;

x=7;
y=3;
z=x+y;

miso=z/2;

Η τιμή του z είναι το άθροισμα των τιμών του x και y δηλαδή 10, ενώ η τιμή της μεταβλητής
miso είναι η τιμή του z διά 2, δηλαδή 10/2=5.
Θυμίζουν τις εξισώσεις που κάναμε στο γυμνάσιο, με μία σημαντική διαφορά όμως, σε καμία
φορά οι παραπάνω αναθέσεις δε θα μπορούσαν να γίνουν αντίστροφα, δηλαδή σε καμία
περίπτωση ΔΕΝ θα μπορούσαμε να πούμε

7=x;
3=y;
x+y=z;
z/2=miso;

Επίσης ισχύει και το εξής: Προσέξτε το παρακάτω παράδειγμα:

int x;

x=5;

x=x+10;

Στην αρχή ορίζουμε την μεταβλητή x και της δίνουμε την τιμή 5. Απο κάτω ένας μαθητής του
λυκείου θα έλεγε οτι πρέπει να λύσουμε την εξίσωση για να βρούμε το x!!
Αυτό που ισχύει πραγματικά είναι ότι αναθέτουμε μια καινούρια τιμή στη μεταβλητή x. Η τιμή
αυτή θα είναι ίση με την ήδη υπάρχουσα τιμή που έχει το x (δηλαδή 5) σύν τον αριθμό 10. Η
καινούρια τιμή του x είναι 15.

Σημείωση: Περιττό να πούμε οτι η παλιά τιμή του x, δηλαδή το 5, αποτελεί πλέον
παρελθόν και δε μπορεί να ανακτηθεί.

Οι πράξεις που μπορούμε να κάνουμε στη C++ είναι πάνω κάτω αυτές που ξέρουμε και
χρησιμοποιούμε τα εξής σύμβολα:

+ Πρόσθεση

 Αφαίρεση

* Πολλαπλασιασμός

/ Διαίρεση

Υπόλοιπο Ακαίρεας
% Διαίρεσης

Page 7
Οι πράξεις με το σύμβολο του ποσοστού %, μας επιστρέφει το υπόλοιπο της ακέραιας
διαίρεσης. Διαιρεί δηλαδή τους συντελεστές της πράξης και μας δίνει το υπόλοιπο. Έχουμε
πχ

• w= 87%4;
• x=15%5;
• y = 200%2;
• z = 23%7;

Στην πρώτη ανάθεση, το 4 χωράει 21 φορές στο 87 (4x21=84) και περισσεύουν 3. Άρα ο w
πέρνει την τιμή 3

Στην δεύτερη ανάθεση το 15 διαιρείται ακριβώς με το 5, άρα δεν έχουμε υπόλοιπο. Οπότε ο x
πέρνει την τιμή 0.

Στην τρίτη ανάθεση το ίδιο με την δεύτερη.

Στην τέταρτη ανάθεση το 7 χωράει 3 φορές στο 23 (3x7=21) και περισσεύουν 2. Άρα ο z
πέρνει την τιμή 2.

Αύξηση μιας τιμής κατά 1

Επίσης κάτι άλλο που θα έπρεπε να σημειώσουμε ειναι η συντομογραφία της αύξησης της
τιμής μιας αριθμητικής μεταβλητής κατά 1. Σε κανόνικές συνθήκες θα έπρεπε να γράψουμε

x=x+1;

Επειδή η παραπάνω ανάθεση χρησιμοποιήται αρκετά συχνά στα προγράμματα γι'αυτο


καθορίστηκε μια συντομογραφία η οποία είναι η εξής:

x++;

Παρόμοια συντομογραφία έχουμε και για την μείωση κατα 1:

x--;

Page 8
H εντολή εισόδου CIN
Ας γράψουμε τώρα ένα πρόγραμμα το οποίο θα μας ζητάει το όνομά μας και στη συνέχεια θα
το εκτυπώνει στην οθόνη.

#include <iostream.h>
#include <stdlib.h>

void main(){

char onoma[15];

cout<<"pos se lene?";
cin>>onoma;
cout<<"To onoma sou einai "<<onoma<<endl;

system("PAUSE");

• Δηλώνουμε μια μεταβλητή τύπου char μήκους 15 χαρακτήρων.


• Εκτυπώνουμε στην οθόνη το μήνυμα "pos se lene".
• cin: Είναι η εντολή εισόδου

cin >> μεταβλητη;

όταν ο compiler βλέπει αυτήν την εντολή, τότε το πρόγραμμα σταματάει, και
περιμένει ανταπόκριση από τον χρήστη, μέχρι να πληκτρολογίσει κάτι και
να πατήσει το Enter. Στη συνέχεια, την τιμή που πληκτρολογουμε την
αναθέτει στην μεταβλητή που γράφουμε στα δεξιά της εντολής.

• Στη συνέχεια εκτυπώνουμε το μύνημα "To onoma sou einai " ακολουθούμενο
από την τιμή της μεταβλητής onoma, η οποία είναι πλέον αυτό που έχει
πληκτρολογήσει ο χρήστης.

Page 9
Η εντολή επανλάληψης FOR
Η εντολή for μας επιτρέπει να επαναλάμβάνουμε τις εντολές τις οποίες συμπεριλαμβάνει για
συγκεκριμένο αριθμό επαναλήψεων.

Σύνταξη

for (αρχική_τιμη_μετρητή; συνθήκη_λήξης; βήμα){


...
Εντολές
...

• αρχική_τιμή_μετρητή: ορίζουμε την αρχική τιμή από την οποία θα αρχίσει η εντολή
να μετράει
• συνθήκη_λήξης: Μια απλή ή σύνθετη συνθήκη κατά την οποία όσο ισχύει, θα
εκτελούνται οι εντολές της for
• βήμα: Ένας μετρητής ο οποίος αυξάνεται η μειώνεται κάθε φορά που γίνεται
καινούρια επανάληψη. Αυτός ο μετρητής είναι απαραίτητος έτσι ωστε μετά ορισμένο
αριθμό επαναλήψεων, να ισχύσει η συνθήκη_λήξης, και να βγούμε από τον βρόχο
της for.

Σημείωση: Αν υπάρχει μία μονο εντολή που πρέπει να εκτελέσει η for, τότε μπορούμε
να παραλείψουμε τα άγγιστρα {}, που υποδηλώνουν την αρχή και το τέλος της for

Ας γράψουμε ένα πρόγραμμα το οποίο θα τυπώνει τους αριθμούς από το 1 μέχρι το 100

#include <iostream.h>
#include <stdlib.h>

void main()
{

int i;

for (i=1;i<=100;)
<< i <<endl;

system("PAUSE");

• Στην αρχή δηλώνουμε έναν ακέραιο i, τον οποίο θα τον χρησιμοποιήσουμε μέσα στην
for, αμέσως μετά.
• Ορίζουμε ώς αρχική τιμή του μετρητή το 1.
• Εκτελείται η εντολή που έχουμε μέσα στην for, και εκτυπώνεται στην οθόνη ο αριθμός
1.
• Κάθε φορά που η for φτάνει στο τέλος (συγκεκριμένα κάθε φορά που εκτελέιται η
εντολή cout), γίνεται έλεγχος της συνθήκης_λήξης. Αν ισχύει δηλαδή, αν το i είναι
ίσο ή μικρότερο του 100, τότε θα εκτελεστεί το i++, και αμέσως μετά ξανά η εντολή
cout. Αυτή τη φορά θα εκτυπωθεί ο αριθμός 2 γιατί το i έχει αυξηθεί κατά 1. Αυτό
συνεπώς θα συνεχίζεται μέχρι το i να πάρει την τιμή 100

Page 10
Η Boolean λογική
Οι Boolean είναι μεταβλητές οι οποίες μπορούν να πάρουν δύο μόνο τιμές. TRUE ή FALSE.
Πέρα από τις Boolean μεταβλητές χρησιμοποιούμε την λεγόμενη Boolean μεθοδο για να
προσδιορίσουμε αν μια συνθήκη είναι αληθής ή ψευδής μέσα σε ένα πρόγραμμα. Τέτοιες
συνθήκες συνήθως είναι όταν βάζουμε το πρόγραμμα να ελέγχει ισότητες και ανισότητες.
Παρακάτω αναφέρονται τα σύμβολα που χρησιμοποιούμε για τον έλεγχο αυτό

== Ισο

> μεγαλύτερο

>= μεγαλύτερο ή ίσο

< μικρότερο

<= μικρότερο ή ίσο

!= άνισο

Παράδειγμα έστω οτι έχουμε την συνθηκη x>=5. Αν όντος το x είναι μεγαλύτερο ή ίσο του 5,
τότε αυτή η συνθήκη είναι TRUE, αλλιώς είναι FALSE.

Η παραπάνω συνθήκη είναι απλή. Πέρα από τις απλές έχουμε και τις σύνθετες συνθήκες. Οι
σύνθετες συνθήκες συνδιάζουν δύο ή και περισσότερες συνθήκες όπως η παραπάνω. Οι
συνθήκες αυτές συνδέονται με κάποια συνδετικά. Ανάλογα με αυτά τα συνδετικά, και το αν οι
επι μέρους συνθήκες είναι αληθείς ή ψευδείς, ολόκληρη η σύνθετη συνθήκη μπορεί να είναι
αληθής ή ψευδής. Τα συνδετικά αυτά είναι:

&& AND Λογικο ΚΑΙ

|| OR Λογικό Η

^ XOR Λογικο Ή

! NOT Λογικό ΟΧΙ

Έτσι μπορεί να έχουμε συνθήκες όπως η εξής

• (x>50) && (x<100): Ελέγχουμε αν το x είναι μεγαλύτερο από το 50 ΚΑΙ ταυτόχρονα


μικρότερο του 100.
• (x=40) || (x>150): Ελέγχουμε αν το x είναι ίσο με 40 Ή μεγαλύτερο από το 150.
• ! ((x>=0) && (x<=20)): Ελέγχουμε αν το x ΔΕΝ είναι μεγαλύτερο ίσο του 0 και
ταυτόχρονα μικρότερο ίσο του 20. Με άλλα λόγια αυτή η συνθήκη είναι αληθής μόνο
αν το x είναι μικρότερο από 0 ή μεγαλύτερο από 20.
• Το XOR: Είναι το λογικό Ή (ήτα διαζευτικό). Για να είναι αληθής μια τέτοια σύνθετη
συνθήκη πρέπει ΜΟΝΟ ΚΑΙ ΜΟΝΟ ΜΙΑ από τις επιμέρους συνθήκες να είναι
αληθής.

Παρακάτω παρουσιάζονται όλες οι περιπτώσεις σύνθετων συνθηκών που μπορούμε να


έχουμε ανάλογα με το συνδετικό, και το αποτέλεσμα της κάθε συνθήκη

συνθήκη Α συνθήκη Β αποτέλεσμα


TRUE AND TRUE = TRUE
TRUE AND FALSE = FALSE
FALSE AND TRUE = FALSE
FALSE AND FALSE = FALSE

Page 11
συνθήκη Α συνθήκη Β αποτέλεσμα
TRUE OR TRUE = TRUE
TRUE OR FALSE = TRUE
FALSE OR TRUE = TRUE
FALSE OR FALSE = FALSE

συνθήκη Α συνθήκη Β αποτέλεσμα


TRUE XOR TRUE = FALSE
TRUE XOR FALSE = TRUE
FALSE XOR TRUE = TRUE
FALSE XOR FALSE = FALSE
συνθήκη Α αποτέλεσμα
NOT TRUE = FALSE
NOT FALSE = TRUE

Για να γίνουν πιο κατανοητές αυτές οι πράξεις, παρακάτω χρησιμοποιούμε ένα πιο
καθημερινό παράδειγμα:

συνθήκη Α AND συνθήκη Β

Λέει η Μαρία στη μαμά της:


Θα πάω στο σχολείο KAI μετά θα πάω για καφέ
|------ συνθήκη Α ------| |------- συνθήκη Β --------|

Η Μαρία λοιπόν
α) πήγε στο σχολείο ΚΑΙ πήγε για καφέ Άρα είπε ΑΛΗΘΕΙΑ
β) πήγε στο σχολείο ΚΑΙ δεν πήγε για καφέ Άρα είπε ΨΕΜΑΤΑ
γ) δεν πήγε στο σχολείο ΚΑΙ πήγε για καφέ Άρα είπε ΨΕΜΑΤΑ
δ) δεν πήγε στο σχολείο ΚΑΙ δεν πήγε για καφέ Άρα είπε ΨΕΜΑΤΑ

! Δεν μας απασχολεί που μπορεί να πήγε η Μαρία αφού ούτε στο σχολείο πήγε ούτε και για
καφέ ;)

συνθήκη Α OR συνθήκη Β

Λέει η Μαρία στη μαμά της:

Θα πάω στο σχολείο ή θα πάω για καφέ


|----- συνθήκη Α ------| |---- συνθήκη Β ---|

Η Μαρία λοιπόν:
α) πήγε στο σχολείο και μετά πήγε για καφέ Άρα είπε ΑΛΗΘΕΙΑ
β) πήγε στο σχολείο αλλα δεν πήγε για καφε Άρα είπε ΑΛΗΘΕΙΑ

Page 12
γ) δεν πήγε στο σχολείο αλλά πήγε για καφέ Άρα είπε ΑΛΗΘΕΙΑ
δ) δεν πήγε ούτε σχολείο ούτε για καφέ Άρα είπε ΨΕΜΑΤΑ

συνθήκη Α XOR συνθήκη Β


Λέει η Μαρία στη μαμά της:

ή θα πάω στο σχολείο ή θα πάω για καφέ


|----συνθήκη Β
|---- συνθήκη Α ------|
----|

Η Μαρία λοιπόν
α) πήγε στο σχολείο και μετά πήγε για καφέ Άρα είπε ΨΕΜΑΤΑ
δεν πήγε για
β) πήγε στο σχολείο αλλά Άρα είπε ΑΛΗΘΕΙΑ
καφέ
γ) δεν πήγε στο σχολείο αλλά πήγε για καφέ Άρα είπε ΑΛΗΘΕΙΑ

δ) δεν πήγε ούτε στο σχολείο ούτε για καφέ Άρα είπε ΨΕΜΑΤΑ

NOT συνθήκη Α
Λέει η Μαρία στη μαμά της:

δεν θα πάω για καφέ


|---- συνθήκη Α ------|

Η Μαρία λοιπόν
α) πήγε για καφέ Άρα είπε ΨΕΜΑΤΑ
β) δεν πήγε για καφέ Άρα είπε ΑΛΗΘΕΙΑ

Page 13
Η εντολή διάζευξης IF...ELSE
Η εντολή if μας χρησιμεύει στο να εκτελούμε κάποιες εντολές υπό κάποιες συνθήκες όμως.
Λειτουργεί σαν φίλτρο δηλαδή. Αν η συνθήκη είναι αληθής εκτελούνται οι εντολές που
βρίσκονται στον βρόχο της if. Αν όχι τότε αν υπάρχει, εκτελούνται οι εντολές στον βρόχο της
else

Σύνταξη

if (συνθήκη){
...
Εντολές1
...

}
else
{
...
Εντολές2
...

• συνθήκη: Η συνθήκη κατά την οποία αν είναι TRUE, εφαρμόζονται οι εντολές στα
πλαίσια της if (Εντολες1), αλλιώς, αν είναι FALSE, εφαρμόζονται οι εντολές της
else (Εντολές2)
• Σημειώστε ότι η χρήση του βρόχου else είναι προερετική

Ας γράψουμε ένα πρόγραμμα το οποίο θα μας ζητάει εναν αριθμό. Αν ο αριθμός που του
δώσουμε είναι θετικός (>=0), τότε θα εκτυπώνεται το μύνημα "O arithmos einai
thetikos" ενω αν είναι αρνητικός (<0), τότε θα εκτυπώνεται το μύνημα "O arithmos
einai arnitikos".

#include <iostream.h>
#include <stdlib.h>

void main()
{

int x;

cout<<"Dose arithmo: ";


cin>>x;

if (x>=0)
cout<<"O arithmos einai thetikos"<<endl;
else
cout<<"O arithmos einai arnitikos"<<endl;

system("PAUSE");

Page 14
}

• Ορίζουμε έναν ακέραιο x.


• Εκτυπώνουμε το μύνημα "Dose arithmo:"
• Γίνεται είσοδος αριθμού από τον χρήστη με την cin.
• Αν ισχύει η συνθήκη x>=0, τότε εκτυπώνεται το μύνημα "O arithmos einai
thetikos" αλλιώς εκτελούντε οι εντολές μέσα στον βρόχo της else δηλαδή στη
συγκεκριμένη περίπτωση θα εκτυπωθεί το μύνημα "O arithmos einai
arnitikos".

Page 15
Η εντολή διάζευξης SWITCH
Η εντολή switch είναι περίπου σαν την if. Την χρησιμοποιούμε όμως όταν οι περιπτώσεις
που μπορεί να έχουμε είναι χαρακτηριστικά πολλές.

Σύνταξη

switch (μεταβλητή){

case τιμή_1: ...Εντολές1... ; break;


case τιμή_2: ...Εντολές2... ; break;
case τιμή_3: ...Εντολές3... ; break;
case τιμή_4: ...Εντολές4... ; break;
...
default: ...Εντολές5... ;

• μεταβλητή: Μια μεταβλητή της οποίας την τιμή ελέγχουμε στη συνέχεια.
• case: Στη συνέχεια ο compiler ελέγχει μια προς μια τις τιμές μέσα στον βρόχο της
switch. Αν κάποια από αυτές τις τιμές ισούται με την τιμή της μεταβλητής, τότε
εκτελούνται οι εντολές που βρίσκονται στα δεξιά, και κατόπιν βγένει από τον βρόχο
με την βοήθεια της εντολής break.
• default: Αν καμία από αυτές τις τιμές δεν ισούται με την τιμή της μεταβλητής, τότε
εκτελούνται οι εντολές που ορίζει το default.

Ας γράψουμε ένα πρόγραμμα που θα ζητάει να του δώσουμε έναν βαθμό από το 1-5.
Ανάλογα με τον βαθμό θα διατυπώνεται το ανάλογο μύνημα

#include <iostream.h>
#include <stdlib.h>

void main()
{

int vathmos;

cout<<"dose vathmo(1-5): ";


cin>>vathmos;

switch (vathmos){
case 1: cout<<"poly kakos"<<endl; break;
case 2: cout<<"kakos"<<endl; break;
case 3: cout<<"metrios"<<endl; break;
case 4: cout<<"kalos"<<endl; break;
case 5: cout<<"aristos"<<endl; break;
default: cout<<"eipame apo 1-5"<<endl;
}

system("PAUSE");

Page 16
• Δηλώνουμε μια μεταβλητή vathmos.
• Εκτυπώνουμε το μύνημα "Dose vathmo: "
• Gίνεται είσοδος ενός αριθμού από τον χρήστη με την cin, και αναθέτεται στην
μεταβλητή βαθμός.
• Ελέγχεται αν η τιμή της μεταβλητής vathmos συμπίπτει με κάποια από τις τιμές
μέσα στον βροχο της switch. Αν ναι, τότε τυπώνεται το μύνημα στα δεξιά της
σωστής τιμής.
• Αν όχι, εκτυπώνεται το μύνημα "eipame apo 1-5".

Page 17
Η εντολή επανάληψης Do While
Η εντολή αυτή είναι μια εντολή επανάληψης, όπως η for. Η διαφορά της είναι οτι αυτή τη
φορά, δεν ξέρουμε τον πραγματικό αριθμό των επαναλήψεων. Οι εντολές που βρίσκονται
μέσα στον βρόχο της do while, θα επαναλαμβάνονται μέχρι κάποια συνθήκη να γίνει ψευδής.

Σύνταξη

do { while (συνθήκη){
... ...
Εντολές ή Εντολές
... ...

}while (συνθήκη) }

• συνθήκη: η συνθήκη που μέχρις ότου να ισχύσει θα εκτελούνται οι εντολές.


• Την πρώτη μορφή την χρησιμοποιούμε όταν θέλουμε οποσδήποτε οι εντολές που
βρίσκονται μέσα στον βρόχο, να εκτελεστούν για τουλάχιστον μια φορα, άσχετα απο
το αν είναι αληθής η συνθήκη ή όχι. Στην δεύτερη μορφή, έτσι και η συνθήκη είναι
ψευδής, δεν εκτελούνται οι εντολές καθόλου.

Παραδείγμα 1
Γράψτε ένα πρόγραμμα που θα μας ζητάει έναν αριθμό από το ένα μέχρι το 12. Αν του
δώσουμε αριθμό από το 1-12, θα επαναλαμβάνει την ερώτηση, αλλιώς θα τελειώνει.

#include <iostream.h>
#include <stdlib.h>

void main()
{

int arithmos=0;

do{
cout<<"Dose arithmo: ";
cin>>arithmos;
}while ((arithmos>0)&&(arithmos<=12));

system("pause");

Παραδείγμα 2
Γράψτε ένα πρόγραμμα το οποίο θα μας ζητάει μια σειρά από αριθμούς. Όταν του δώσουμε
το 0, θα σταματήσει να μας ζητάει αριθμούς και θα τυπώνει το άθροισμα

#include <iostream.h>
#include <stdlib.h>

void main()

Page 18
{

int arithmos;
int athroisma=0;

while (arithmos!=0){

cout<<"Dose arithmo: "<<endl;


cin>>arithmos;
athroisma = athroisma + arithmos;

cout<<"To athroisma einai "<<athroisma <<endl;

system("pause");

Page 19
Σχόλια
Πρίν προχωρήσω στους πίνακες θα ήθελα να σου πω δυο λόγια για τα σχόλια μέσα σε ένα
πρόγραμμα.
Πολλές φορές χρειάζεται να προσθέσουμε σχόλια μέσα σε ένα πρόγραμμα, δηλαδη
επεξηγήσεις οι οποίες βοηθούν σε 3 πράγματα:

1. Στο να μπορέσει ο προγραμματιστής να θυμηθεί τον σκοπό κάποιου σημείου μέσα


στον κώδικα, σε περίπτωση που δεν τον έχει δεί για μεγάλο χρονικό διάστημα.
2. Για εκπαιδευτικούς λόγους, δηλαδή να μπορέσούν άλλοι να καταλάβουν τι κάνει
κάποιο σηγκεκριμένο σημείο μέσα στον κώδικα.
3. Να τεστάρουμε το πρόγραμμα μας αγνοώντας προσωρινά ένα μέρος του κώδικα
χωρίς να χρειαστεί να τον σβήσουμε.

Τα σχόλια τα προσθέτουμε μετά από τις δύο κάθέτους //. Για παράδειγμα έστω ότι γράφουμε
μέσα στο πρόγραμμά μας:

int i; //dilonoume tis metavlites


int x;
for (i=1;i<=40;i++){ //edo i edoli FOR typonei
cout<<”hihihi”<<endl; //40 fores "hihihi" stin othoni mas
}

Σ'αυτό το παράδειγμα ο compiler θα αγνοήσει ότι γράφουμε μετά τις γραμμές //.
Άρα δεν έχει σημασία, μπορούμε να γράφουμε ότι θέλουμε μετά τις 2 καθέτους.

Page 20
Πίνακες
Οι πίνακες είναι μεταβλητές που έχουν την ιδιότητα να μπορούν να έχουν πάνω από 1 τιμές
ταυτόχρονα.
Όπως και με τις απλές μεταβλητές, στη C++ τους πίνακες τους δηλώνουμε πρίν τους
χρησιμοποιήσουμε ως εξής:

τύπος όνομα_πίνακα[μέγεθος πίνακα];

πχ η εντολή

int pinakas[10];

δηλώνει έναν πίνακα ο οποίος μπορεί να παίρνει μέχρι 10 ξεχωριστούς ακέραιους αριθμούς.

Όταν θέλουμε να καταχωρήσουμε μία τιμή σε μια θέση του πίνακα δηλώνουμε τη θέση του
πίνακα που θέλουμε να καταχωρηθεί η τιμή.

ΠΡΟΣΟΧΗ: Οι θέσεις του πίνακα αρχίζουν πάντα από το 0 (Μηδέν).

Φαντάσου ότι ένας πίνακας είναι ένα δωμάτιο που έχει μέσα του αριθμιμένες καρέκλες. Ο
pinakas[10] θα είναι ένα δωμάτιο που θα έχει μέσα του 10 καρέκλες οι οποίες όμως θα είναι
αριθμημένες από το 0-9.

Έτσι αν θέλουμε να εισάγουμε τις τιμές 1 μέχρι 10 στον πίνακα θα πρέπει να γράψουμε:

pinakas[0]=1;
pinakas[1]=2;
pinakas[2]=3;
pinakas[3]=4;
pinakas[4]=5;
pinakas[5]=6;
pinakas[6]=7;
pinakas[7]=8;
pinakas[8]=9;
pinakas[9]=10;

Παράδειγμα 1
Έστω ότι θέλουμε ένα πρόγραμμα το οποίο θα χρησιμοποιεί πινακα και θα τυπώνει τους
αριθμούς 1-10 στην οθόνη:

α) Η απλή μέθοδος:

#include <iostream.h>
#include <stdlib.h>

void main(){

int array[10]; //Dilonoume ton Pinaka


array[0]=1; //Dinoume times ston pinaka
array[1]=2;
array[2]=3;
array[3]=4;
array[4]=5;
array[5]=6;
array[6]=7;
array[7]=8;
array[8]=9;

Page 21
array[9]=10;

cout<<array[0]<<endl; //Typonoume ta periexomena tou


cout<<array[1]<<endl; //pinaka
cout<<array[2]<<endl;
cout<<array[3]<<endl;
cout<<array[4]<<endl;
cout<<array[5]<<endl;
cout<<array[6]<<endl;
cout<<array[7]<<endl;
cout<<array[8]<<endl;
cout<<array[9]<<endl;

system("PAUSE");
}

β) Η έξυπνη και πρακτική μέθοδος:

#include <iostream.h>
#include <stdlib.h>

void main(){

int i; //Dilonoume tis metavlites kai


int array[10]; //ton pinaka pou tha xrisimopoioisoume

for (i=0;i<10;i++){ //"Gemizoume" ton pinaka me times


array[i]=i+1; //Giati den vazoume array[i]=i ????
//An valoume array[i]=i tha ton
//gemisoume me arithmous apo to 0-9
//kai oxi apo to 1-10

cout<<array[i]<<endl;//typonoume ta periexomena tou pinaka


}

system("PAUSE");
}

Παράδειγμα 2
Γράψε το παραπάνω πρόγραμμα, με τη μαγκιά να τους τυπώνει ανάποδα!!

#include <iostream.h>
#include <stdlib.h>

void main(){

int i; //Dilonoume tis metavlites kai ton pinaka


int array[10]; //pou tha xrisimopoioisoume

for (i=0;i<10;i++){ //"Gemizoume" ton pinaka me times


array[i]=i+1; //kanonika opos prin

for (i=0;i<10;i++){ //typonoume ta


cout<<array[9-i]<<endl; //periexomenatou pinaka
} //apo to telos pros tin arxi

system("PAUSE");
}

Page 22
Άσκηση
Γράψε ενα πρόγραμμα στο οποόο ο χρήστης θα δίνει 10 τιμές δεκαδικές (float). Οι τιμές αυτές
θα καταχωρούντε σε ένα πίνακα.
Στις τιμές αυτές θα προστίθεται το 18% (...και καλά ΦΠΑ).
Στη συνεχεια θα τυπονονται αναποδα!!!!

Δισδιάστατοι Πίνακες
Πως δηλώνουμε 2D πίνακες;

τύπος όνομα_πίνακα[στήλες][γραμμές];

πχ η εντολή

int pinakas[5][10];

δημιουργεί έναν πίνακα με 5 στήλες και 10 γραμμές

1 2 3 4 5 6 7 8 9 10  j (στήλες)
1
2
3
4
5
 i
(γραμμές) pinakas[5][10]

Για αναφερθούμε στην τιμή μιας θέσης στον πίνακα αρκεί να δηλώσουμε τις «συντεταγμένες»
της θέσης αυτής μέσα στον πίνακα, δηλαδή τη γραμμή που βρίσκεται η θέση αυτή και έπειτα
τη στήλη.

πχ. Αν γράψουμε μέσα στο πρόγραμμά μας

pinakas[4][7]=25;

τότε ο παραπάνω πίνακας θα διαμορφωθεί ως εξής:

1 2 3 4 5 6 7 8 9 10  j
1
2
3
4 25
5

 i pinakas[5][10]

Ένας εύκολος τρόπος να γεμίζουμε με τιμές έναν 2D πίνακα:


Στη περίπτωση που θέλουμε να γεμίσουμε τον πίνακά μας με αρχικές τιμές οι οποίες
διαφέρουν μεταξύ τους μπορούμε να ακολουθήσουμε την εξής μέθοδο όταν δηλώνουμε τον
πίνακα!!.

int pinakas[5][10]={ {3,2,3,4,5,4,1,0,1,0},

Page 23
{0,2,0,0,5,1,7,8,5,8},
{0,0,0,0,0,0,0,0,0,0},
{1,0,3,2,5,4,7,8,9,0},
{7,2,3,2,8,6,7,2,9,8}
};

Και θα δημιουργηθεί αυτόματα ένας πίνακας με τις εξής τιμές:

1 2 3 4 5 6 7 8 9 10  j
1 3 2 3 4 5 4 1 0 1 0
2 0 2 0 0 5 1 7 8 5 8
3 0 0 0 0 0 0 0 0 0 0
4 1 0 3 2 5 4 7 8 9 0
5 7 2 3 2 8 6 7 2 9 8
 i pinakas[5][10]

Αν βέβαια θέλουμε να γεμίσουμε όλον τον πίνακα με μηδενικά πχ. θα χρησιμοποιήσουμε την
εξής μέθοδο:

for (i=0;i<=4;i++){ //”saronoume” mia–mia kathe


//grammi tou pinaka
for (j=0;j<=9;j++){ //”sarronoume” ena-ena ta
// steiheia tis ekastote grammis
pinakas[i][j]=0; //thetoyme to stoiheio tou
//pinaka=0
}
}

Παράδειγμα
Έστω ότι θέλουμε να γεμίσουμε έναν πινακα 10x10 με τους αριθμούς από το 1 μέχρι το 100.
Στη συνέχεια θα τους τυπώνει με την εξής μορφή:

1 2 3 4 ... ... 10
11 12 13 14 ... ... 20
21 22 23 24 ... ... 30
. . . . . .
. . . . . .
. . . . . .
91 92 93 94 . . 100

#include <iostream.h>
#include <stdlib.h>

void main(){

//dilonoume ton pinaka kai tis metavlites


int pinakas[10][10];
int i,j,metritis=0;

//eisagoume tis times ston pinaka


for (i=0;i<=9;i++){
for (j=0;j<=9;j++){
metritis=metritis+1; //o metritis kathe fora
//afxanetai kata 1
pinakas[i][j]=metritis; //eisagoume tin timi tou

Page 24
//metriti sti thesi
} //tou pinaka
}

//ektyponoume ton pinaka stin othoni


for (i=0;i<=9;i++){
for (j=0;j<=9;j++){
cout<<pinakas[i][j]<<" ";
}
cout<<endl; //pigainei stin apokato grammi
}

system("PAUSE");
}

Page 25
Page 26
Functions
Όπως σε όλες τις γλώσσες προγραμματισμού έτσι και στη C++ σημασία έχει η καλή
οργάνωση του προγράμματός μας. Οι functions είναι μικρά «υποπρογράμματα» μέσα
στον κώδικά μας που σκοπό έχουν να μας κάνουν τη ζωή μας ποιο εύκολη.

Φαντάσου ότι θέλουμε ένα πρόγραμμα το οποίο να μας εμφανίζει ξεχωριστά για 3
αγορές που κάναμε κάθε μέρα της περασμένης βδομάδας (όπως φαίνεται
παρακάτω) το συνολικό ποσό που πληρώσαμε + ΦΠΑ18%.

1) Την Δευτέρα αγοράσαμε προϊόντα αξίας 554, 10 και 20 €


2) Την Τρίτη αγοράσαμε προϊόντα αξίας 3.000, 1 και 28 €
3) Την Τετάρτη αγοράσαμε προϊόντα αξίας 24, 5 και 43 €
4) Την Πέμπτη αγοράσαμε προϊόντα αξίας 54, 98 και 187 €
5) Την Παρασκευή αγοράσαμε προϊόντα αξίας 12, 12 και 25 €
6) Το Σάββατο αγοράσαμε προϊόντα αξίας 5, 10 και 7 €
7) Τη Κυριακή δεν αγοράσαμε τίποτα! Ηταν κλειστά τα μαγαζιά. Από βδομάδα πάλι
(0,0 και 0 €)

Αυτό σημαίνει ότι θα πρέπει να επαναλάβουμε την ίδια ακριβώς διαδικασια (δηλαδη
να προσθέτουμε τις τιμές κάθε ημέρας και να προσθέτουμε το 18%) 7 φορές! Κάθε
φορά θα αλλάζουμε τις εκάστοτε τιμές.
Και καλά μου λες εσύ ότι έχεις την γαϊδουρίσια υπομονή να γράψεις τον ίδιο κώδικα 7
φορές. Για φαντάσου να είχες να υπολογίσεις τις αγορές του μήνα!!!

Κατανόηση - Θεωρία

Εδώ έρχεται και μας λύνει τα χέρια η


function.

Φαντάσου την function σαν ένα


μαγικό κουτί που του δίνουμε εμείς
τα δεδομένα που θέλουμε και αυτό
τα επεξεργάζεται και ανάλογα με τα
δεδομένα μας επιστρέφει το
αντίστοιχο αποτέλεσμα.
Σημείωση: Μπορούμε βεβαίως να
έχουμε μια function η οποία να κάνει
κάποια πράγματα χωρίς να μας
επιστρέφει τίποτα

Το καλό με τις functions είναι ότι μπορούν (όχι απαραίτητα) και παίρνουν
παραμέτρους έτσι ώστε να γενικεύουν την επεξεργασία των δεδομένων σε κάθε
περίπτωση.

Μια function είναι άχρηστη από μόνη της. Για να δουλέψει θα πρέπει να την
καλέσουμε μέσα στο πρόγραμμα.

Στο παραπάνω πρόβλημα αν καλούσαμε μια function, τότε η είσοδος δεδομένων θα


ήταν οι εκάστοτε τιμές κάθε φορά (πχ. 553,10 και 20 για την Δευτέρα). Η function θα
πάρει αυτές τις τιμές θα κάνει την κατάλληλη επεξεργασία όπως εμέις ορίσουμε με τις
παραμέτρους δηλαδή θα πεί πχ.

( timi1 + timi2 + timi3 ) * (18/100)

θα αντικαταστήσει τις παραμέτρους με τις εκάστοτε τιμές

(553+10+20)*0,18

και αυτό που θα μας επιστρέψει θα είναι το καθαρό αποτέλεσμα (687,94)


Page 27
Local(Τοπικές) και Global(Σφαιρικές-Ολικές) Μεταβλητές

Όταν δηλώνουμε μια μεταβλητή μέσα σε μια function τότε η μεταβλητή αυτή χρησιμοποιήται μόνο από την ίδια την
function. Για αυτό το λόγο η μεταβλητή ονομάζεται Local.

Υπάρχει περίπτωση να θέλουμε να δηλώσουμε μεταβλητές τις οποίες να μπορούμε να χρησιμοποιήσουμε σε όλο
το πρόγραμμα σε όσες και οποιεσδήποτε function χρειάζεται. Για να μπορούμε να έχουμε μια τέτοια Global
μεταβλητή η οποία θα είναι διαθέσιμη σε οποιοδήποτε μέρος του προγράμματος την χρησιμοποιήσουμε, θα πρέπει
να την δηλώσουμε έξω απο οποιαδήποτε function, ακόμα και από την main.

Παράδειγμα
Φτιάχνουμε ένα πρόγραμμα που τυπώνει "μπάμια" ή "πεπόνι" ανάλογα:

1) Έξοδος (Τι μας γράφει στην


Οθόνη)
#include <iostream.h> peponi
#include <stdlib.h>
Press any key to continue...
void typose(){ //ftiaxnoume mia
FUNCTION
char frouto[25]="peponi"; //Dilonoume LOCAL
//metavliti
cout<<frouto<<endl;
}

void main(){
typose(); //Edo kaloume tin FUNCTION

system("PAUSE");
}

Εδώ δημιουργούμε μια function "typose". Αυτή περιέχει μια Local (Τοπικη) μεταβλητή "frouto" η οποία
είναι διαθέσιμη μόνο για την ίδια την function

2) Έξοδος (Τι μας γράφει


στην Οθόνη)
#include <iostream.h> peponi
#include <stdlib.h>
Press any key to
void typose(){ //ftiaxnoume mia
continue...
FUNCTION
char frouto[25]="peponi"; //dilonoume LOCAL
//metavliti
cout<<frouto<<endl;
}

void main(){
char frouto[25]="mousmoulo"; //Dilonoume LOCAL
//metavliti
typose(); //edo kaloume tin
FUNCTION

Page 28
system("PAUSE");
}

Εδώ δηλώνουμε άλλη μια Local μεταβλητή μέσα στην main με το ίδιο όνομα "frouto". Το πρόγραμμα δεν
μπερδεύει τις δύο μεταβλητές. Χρησιμοποιεί εκείνη που βρίσκεται μέσα στην function από την οποία καλείται.

3) Έξοδος (Τι μας γράφει


στην Οθόνη)
#include <iostream.h> bamia
#include <stdlib.h>
peponi
char zarzavatiko[25]="bamia" ; //dilonoume GLOBAL
bamia
//metavliti Press any key to
continue...
void typose(){ //ftiaxnoume mia
FUNCTION
char frouto[25]="peponi"; //dilonoume LOCAL
//metavliti
cout << frouto << endl;
cout << zarzavatiko << endl;
}

void main(){
char frouto[25]="mousmoulo"; //dilonoume LOCAL
//metavliti
cout << zarzavatiko << endl;
typose(); //edo kaloume tin
FUNCTION

system("PAUSE");
}

Εδώ δηλώνουμε και μια Global μεταβλητή "zarzavatiko" η οποία είναι διαθέσιμη σε όλο το πρόγραμμα.
Τυπώνουμε πρώτα το zarzavatiko και μετά εκτελείται η function.

3) Έξοδος (Τι μας γράφει


στην Οθόνη)
#include <iostream.h> bamia
#include <stdlib.h>
peponi
bamia
char zarzavatiko[25]="bamia" ; //dilonoume GLOBAL
Press any key to
//metavliti continue...

void typose(){ //ftiaxnoume mia


FUNCTION
char frouto[25]="peponi"; //dilonoume LOCAL
//metavliti
cout << frouto << endl;
cout << zarzavatiko << endl;
}

void main(){

Page 29
char frouto[25]="mousmoulo"; //dilonoume
LOCAL
//metavliti
cout << zarzavatiko << endl;
typose(frouto); //edo kaloume tin
FUNCTION

system("PAUSE");
}

Εδώ δηλώνουμε και μια Global μεταβλητή "zarzavatiko" η οποία είναι διαθέσιμη σε όλο το πρόγραμμα.
Τυπώνουμε πρώτα το zarzavatiko και μετά εκτελείται η function.

Page 30
Structures
Υπάρχουν περιπτώσεις όπου χρειαζόμαστε διαφορετικούς τύπους μεταβλητών απ αυτούς
που ξέραμε μέχρι τώρα. Η C++ μας επιτρέπει να δημιουργούμε δικούς μας, σύνθετους,
τύπους μεταβλητών.

Τέτοιου είδους μεταβλητών μας διευκολύνουν να διαχειριζόμαστε τις μεταβλητές σε ορισμένες


περιπτώσεις

Μορφή

struct όνομα_structure{
τύπος μεταβλητή_1;
τύπος μεταβλητή 2;
τύπος μεταβλητή 3;
...
};

Παράδειγμα

struct book{
char name[10];
char author[10];
int price;
};

Την δηλώνουμε πάντα έξω απο την main

Σημαντική σημείωση για χρήση με Strings


Χρειάζεται να συμπεριλάβουμε την βιβλιοθήκη "string.h"

#include <string.h>

Έτσι θα μπορέσουμε να κανουμε ανάθεση τιμών σε μεταβλητές τύπου char με την χρήση της
εντολής strcpy.

Σύνταξη της strcpy:

strcpy (μεταβλητή, τιμή);

Με την strcpy μπορούμε και "αντιγράφουμε" την τιμή που βρίσκεται στα δεξιά της
παρενθέσεως, στην μεταβλητη που βρίσκεται στα αριστερά της παρενθέσεως. Στην ουσία
είναι σαν να κάνουμε το εξής μεταβλητή=τιμη; αλλά με τα stractures δεν λειτουργεί αυτό
(@#$#!^%*$) οπότε αναγκαστικά

Παράδειγμα

Page 31
#include <iostream.h>
#include <stdlib.h>
#include <string.h>

struct book{ //ftiaxnoyme ton typo pou theloume. Vivlio


char name[100]; //oi parametroi toy typou
char author[50];
char eidos[20];
float price;
};

void main(){
book vivlio1,vivlio2,vivlio3; //dilonoume 3 metavlites
//typou "book"

//Katahoroume tis times stis metavlites typou "book"


strcpy (vivlio1.name, "20.000 levges");
strcpy (vivlio1.author, "Ioulios Vern");
strcpy (vivlio1.eidos, "Epistimoniki Fadasia");
vivlio1.price=35.1;

strcpy(vivlio2.name, "O Dolofonos me to Pirouni");


strcpy(vivlio2.author, "Takis Palavos");
strcpy(vivlio2.eidos, "Tromou");
vivlio2.price=30.14;

strcpy(vivlio3.name, "H Siopili Kravgi");


strcpy(vivlio3.author, "Souzy Tsouzy");
strcpy(vivlio3.eidos, "Mythistorima");
vivlio3.price=28.7;

//ektyponoume stin othoni


cout<<"To 1o vivlio to ehei grapsei o "<<vivlio1.author<<endl;
cout<<"To 2o vivlio onomazetai '"<<vivlio1.name<<"'"<<endl;
cout<<"To 3o vivlio kostizei "<<vivlio1.price<<" EU"<<endl;

system("PAUSE");
}

Άσκηση:(Όποιος θέλει την κάνει)


Να γράψετε ένα πρόγραμμα όπου θα φτιάχνετε έναν τύπο μεταβλητής με το όνομα student.
Οι παράμετροι που θα πέρνει αυτός ο τύπος θα είναι το όνομα του μαθητή, το επίθετο, η
ηλικία και ο βαθμός. Θα δημιουργήσετε 3 μεταβλητές τύπου student για 3 μαθητές σας(λεμε
τωρα). Στη συνέχεια θα φένονται αυτά τα στοιχεία στην οθόνη.

Page 32

You might also like