Είναι πολύ πιθανό να παραξενευτείτε βλέποντας σύµβολα όπως { και *ptr++.



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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Η γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

scanf() scanf() stdin scanf() printf() int float double %lf float

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

επιµέλεια Θοδωρής Πιερράτος

Διαδικασιακός Προγραμματισμός

Ανάπτυξη και Σχεδίαση Λογισμικού

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

a = 10; a = k; int a,b,c; a = b = c = 10;

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

LAB1 ΛΥΣΗ. Ευρετήριο απαντήσεων ανά τµήµα: Ευρετήριο απαντήσεων ανά µήνυµα λάθους/προειδοποίησης

Προγραμματισμός Ι (ΗΥ120)

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Εισαγωγή στον Προγραμματισμό

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

8 FORTRAN 77/90/95/2003

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

char name[5]; /* define a string of characters */

for for for for( . */

Δομημένος Προγραμματισμός (ΤΛ1006)

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Προγραμματισμός Η/Υ (ΤΛ2007 )

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

2.2.3 Η εντολή Εκτύπωσε

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Ανάπτυξη και Σχεδίαση Λογισμικού

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

Δομημένος Προγραμματισμός

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠαράδειγµαΠρογραµµατισµού

Εισαγωγή στον Προγραμματισμό

Επεξεργασία Αρχείων Κειµένου

Κεφάλαιο 5ο: Εντολές Επανάληψης

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στον Προγραμματισμό

ιορθώσεις επί της 2 ης έκδοσης εκτύπωσης 2002

Εισαγωγή στον Προγραµµατισµό «C»

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Προγραμματισμός ΙI (Θ)

Δομημένος Προγραμματισμός

Ανάπτυξη και Σχεδίαση Λογισμικού

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

είκτες και Πίνακες (2)

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Pascal. 15 Νοεμβρίου 2011

Διαδικασία Ανάπτυξης Λογισμικού

Διαδικασιακός Προγραμματισμός

Προγραµµατιστικές Τεχνικές

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Βασικές Αρχές Προγραμματισμού

Transcript:

2 Εισαγωγή στη C Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 2 ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης Είναι πολύ πιθανό να παραξενευτείτε βλέποντας σύµβολα όπως { και *ptr++. 2.1 Ένα απλό παράδειγµα τής C Ας δούµε τώρα ένα απλό παράδειγµα τής C. Βέβαια αυτό το παράδειγµα δεν είναι πολύ πρακτικό, αλλά βοηθάει στο νά δούµε µερικά από τα βασικά χαρακτηριστικά ενός προγράµµατος C. /*simple.c*/ #include <stdio.h> main() /* ένα απλό πρόγραµµα */ { int num; /* ορισµός µεταβλητής µε το όνοµα num */ num = 1; /* καταχώριση τιµής στην num */ printf( Είµαι ένας απλός ); /* χρήση τής συνάρτησης printf() */ printf( υπολογιστής\n ); printf( Ο αγαπηµένος µου αριθµός είναι ο %d γιατί είναι πρώτος. \n,num); } Λίστα 2.1 Είµαι ένας απλός υπολογιστής Το πρώτο βήµα πού πρέπει νά κάνετε είναι νά χρησιµοποιήσετε ένα επεξεργαστή κειµένου για νά δηµιουργήσετε ένα αρχείο, πού νά περιέχει ότι φαίνεται παραπάνω Λίστα 2.1. Πρέπει το όνοµα τού αρχείου νά έχει προέκταση.c και νά ικανοποιεί τις ειδικές απαιτήσεις τού συστήµατος πού χρησιµοποιείτε. Το αποτέλεσµα δεν είναι τόσο συναρπαστικό. Όµως τι συνέβη µε τα \n τα %d τού προγράµµατος; τι να σηµαίνει άραγε µερικές από τις γραµµές τού προγράµµατος, πού φαίνονται περίεργες; 2.2 Η Εξήγηση Θα εξετάσουµε το πρόγραµµα δύο φορές. Την πρώτη, θα δώσουµε έµφαση στη σηµασία κάθε γραµµής. Τη δεύτερη θα δούµε πιο αναλυτικά τις λεπτοµέρειες τής κάθε γραµµής. στην εικόνα 2.1 φαίνεται η ανατοµία ενός προγράµµατος C 1

Εικόνα 2: Ανατοµία ενός προγράµµατος C Πρώτη Φορά: Σύντοµη Περίληψη Ή πρώτη γραµµή λέει στον υπολογιστή νά συµπεριλάβει τις πληροφορίες, πού υπάρχουν στο αρχείο stdio.h, Το οποίο αποτελεί µέρος τού πακέτου τής γλώσσας C. #include <stdio.h> <= Συµπερίλαβε άλλο αρχείο Τα προγράµµατα C αποτελούνται από µία ή περισσότερες συναρτήσεις, πού είναι οι βασικές ενότητες ενός προγράµµατος C. Αυτό το πρόγραµµα αποτελείται από µία συνάρτηση, πού καλείται main. Οι παρενθέσεις δηλώνουν ότι το main() είναι το όνοµα µίας συνάρτησης: main( ) <= Όνοµα συνάρτησης 2

Μπορείτε νά χρησιµοποιήσετε τα σύµβολα /* και */ για νά συµπεριλάβετε κάποια σχόλια, πού θα βοηθήσουν νά κάνετε το πρόγραµµα σας ευανάγνωστο. Αυτά τα σχόλια αγνοούνται από τον Η/Υ. /* a simple program */ <= Σχόλιο Ή αγκύλη δηλώνει την αρχή των προτάσεων, πού αποτελούν τη συνάρτηση. Ο ορισµός τής συνάρτησης τελειώνει µε την αγκύλη (}): { <= Αρχή τού σώµατος τής συνάρτησης Η πρόταση δήλωσης µα λέει ότι θα χρησιµοποιήσουµε µία µεταβλητή µε το όνοµα num και ότι η num είναι ακέραια µεταβλητή (integer): int num; <= Πρόταση ήλωσης Η πρόταση καταχώρησης δίνει την τιµή 1 στη num: num = 1; <= Πρόταση καταχώρησης Η επόµενη γραµµή είναι για την εκτύπωση τής φράσης, πού βρίσκεται µεταξύ των (Είµαι ένας απλός). printf( Είµαι ένας απλός ); <= Πρόταση απεικόνισης Η επόµενη γραµµή είναι για την εκτύπωση τής λέξης υπολογιστής στο τέλος τής προηγούµενης φράσης, πού εκτυπώθηκε. Το \n λέει στον Η/Υ νά ξεκινήσει µία νέα γραµµή: printf( υπολογιστής.\n ); <= Άλλη πρόταση απεικόνισης Η επόµενη γραµµή είναι για την εκτύπωση της τιµής num (πού είναι 1) ανάµεσα στη φράση, πού βρίσκεται µεταξύ των. Η εντολή %d λέει στον Η/Υ πού και µε ποια µορφή νά εκτυπώσει την τιµή τής num: printf( Ο αγαπηµένος αριθµός είναι ο %d γιατί είναι πρώτος. \n, num); Όπως είπαµε προηγουµένως, Το πρόγραµµα τελειώνει µε την αγκύλη ( } ): } <= Τέλος προγράµµατος εύτερη Φορά: Οι Λεπτοµέρειες Τώρα ας δούµε Το πρόγραµµα πιο προσεκτικά. #include Αρχεία Επικεφαλίδας Το αρχείο stdio.h αποτελεί µέρος του µεταγλωτιστή τής C και περιέχει πληροφορίες σχετικές µε συναρτήσεις εισόδου και εξόδου (όπως η printf( )), που χρησιµοποιεί ο µεταγλωττιστής: 3

#include <stdio.h> Το όνοµα προέρχεται από τις λέξεις standard input/output header. Οι χρήστες τής C αναφέρουν ως επικεφαλίδα µία συλλογή πληροφοριών, πού βρίσκονται στην αρχή ενός αρχείου. Το αποτέλεσµα της #include <stdio.h> είναι το ίδιο µε το να αντιγράφουµε όλο το περιεχόµενο του αρχείου stdio.h στο δικό µας αρχείο, στη θέση, πού εµφανίζεται αυτή η γραµµή προγράµµατος. δεν χρειάζεται όλα τα προγράµµατα νά συµπεριλάβουν Το stdio.h. Για παράδειγµα, η printf() απαιτεί Το αρχείο stdio.h. Επειδή ο µεταγλωττιστής χρησιµοποιεί τις πληροφορίες που βρίσκονται στο stdio.h, για τη δηµιουργία ενός προγράµµατος, κάθε πληροφορία, πού ο µεταγλωττιστής δεν χρησιµοποιεί, δεν γίνεται µέρος τού προγράµµατος. Γι αυτό συµπεριλαµβάνοντας ένα µη απαραίτητο αρχείο Το τελικό πρόγραµµα δεν γίνεται µεγαλύτερο. στην πραγµατικότητα αυτή ή γραµµή τού προγράµµατος δεν είναι καν µία πρόταση τής γλώσσας C. Το σύµβολο # σηµαίνει ότι τη γραµµή αυτή τη διαχειρίζεται ο προεπεξεργαστής τής C, ο οποίος διαχειρίζεται κάποιες εργασίες πριν τον µεταγλωττιστή. Η Συνάρτηση main( ) Η εκτέλεση ενός προγράµµατος σε C αρχίζει πάντα µε µια συνάρτηση, πού καλείται main( ): Είµαστε ελεύθεροι νά επιλέξουµε τα ονόµατα των άλλων συναρτήσεων, που ίσως χρησιµοποιήσουµε, αλλά θα πρέπει υποχρεωτικά νά υπάρχει ή συνάρτηση main( ) στην αρχή τού προγράµµατος. Οι παρενθέσεις δηλώνουν αν η main( ) είναι µία συνάρτηση. Οι συναρτήσεις είναι βασικές µονάδες ενός προγράµµατος σε C. Γενικά οι παρενθέσεις περικλείουν πληροφορίες, πού θα περάσουν µέσα στη συνάρτηση. Για το δικό µας απλό παράδειγµα, τίποτα δεν περνά µέσα στις συναρτήσεις και έτσι οι παρενθέσεις παραµένουν άδειες. Σχόλια Όταν συµπεριλαµβάνουµε σχόλια, τότε είναι πιο εύκολο σε κάποιον να καταλάβει Το πρόγραµµα σας. Ένα σηµαντικό προσόν τής C είναι αν τα σχόλια µπορούν νά τοποθετηθούν στην ίδια γραµµή µε τις εντολές, πού επεξηγούν. Ένα µεγάλο σχόλιο µπορεί νά τοποθετηθεί σε µία δική του γραµµή ή νά επεκταθεί σε περισσότερες από µια γραµµές. Οτιδήποτε υπάρχει µεταξύ του συµβόλου ανοίγµατος /* και τού συµβόλου κλεισίµατος */ αγνοείται από Το µεταγλωττιστή: /* ένα απλό πρόγραµµα */ Αγκύλες, Σώµατα, Μπλοκ {.. Οι αγκύλες ( {, } ) δηλώνουν την αρχή και το τέλος τού σώµατος µίας συνάρτησης: 4

. } Οι παρενθέσεις και οι αγκύλες δεν εξυπηρετούν τον ίδιο σκοπό. Οι αγκύλες µπορούν επίσης νά χρησιµοποιηθούν για νά συµπεριλάβουν µαζί προτάσεις µέσα σε µια οµάδα ή σε ένα µπλόκ τού προγράµµατος. Προτάσεις ήλωσης Η πρόταση δήλωσης είναι µία από τις πιο σηµαντικές προτάσεις τής C. Όπως είπαµε και προηγουµένως στο παράδειγµα µας δηλώνει δύο πράγµατα: int num; Πρώτον ότι κάπου µέσα στη συνάρτηση χρησιµοποιούµε µία µεταβλητή µε Το όνοµα num. Στη C, όλες οι µεταβλητές πρέπει νά δηλώνονται, πράγµα που σηµαίνει ότι εσείς πρέπει να δίνετε ένα κατάλογο µε όλες τις µεταβλητές, που χρησιµοποιείτε σε ένα πρόγραµµα και να δίνετε τον «τύπο» τής κάθε µίας. εύτερον η λέξη int δηλώνει ότι η µεταβλητή num είναι ακέραια. Η λέξη int είναι µια λέξη-κλειδί τής C, πού χαρακτηρίζει έναν από τους βασικούς τύπους δεδοµένων της C. Οι λέξεις κλειδιά είναι λέξεις που χρησιµοποιούνται για να εκφράσουν µία γλώσσα, και οι οποίες δεν µπορούν νά χρησιµοποιηθούν για άλλους σκοπούς. Για παράδειγµα δεν µπορείτε νά χρησιµοποιήσετε την int ως όνοµα µιας συνάρτησης ή µίας µεταβλητής Ο µεταγλωττιστής χρησιµοποιεί την πληροφορία τής πρότασης δήλωσης για νά κανονίσει για τον κατάλληλο χώρο αποθήκευσης τής µεταβλητής num στη µνήµη. Το ερωτηµατικό στο τέλος τής γραµµής δηλώνει ότι ή γραµµή αποτελεί µια πρόταση η εντολή τής C. (Σηµείωση: Το ερωτηµατικό είναι µέρος τής πρότασης) Τύποι εδοµένων Η C ασχολείται µε διάφορα είδη (τύπους) δεδοµένων: ακέραιους, χαρακτήρες, κινητής υποδιαστολής αριθµούς, κ.α. ηλώνοντας ότι µια µεταβλητή είναι ακέραια ή χαρακτήρας, ο υπολογιστής µπορεί νά αποθηκεύσει, νά αποκτήσει και νά ερµηνεύσει κατάλληλα τα δεδοµένα Επιλογή Ονόµατος Προτείνουµε νά χρησιµοποιείτε για τις µεταβλητές ονόµατα µε σηµασία. για Το όνοµα µιας µεταβλητής µπορείτε νά χρησιµοποιήσετε µικρά γράµµατα, κεφαλαία γράµµατα, Ψηφία αριθµών και την υπογράµµιση (_), που θεωρείται σαν ένα γράµµα. Παράδειγµα: Επιτρεπτά Ονόµατα wiggles cat1 Hot_Tub _kcab Μη Επιτρεπτά Ονόµατα $Z]** 1cat Hot-Tub don t 5

οι ρουτίνες βιβλιοθήκης συχνά χρησιµοποιούν ονόµατα, πού αρχίζουν µε το σύµβολο τής υπογράµµισης. Αντισταθείτε στον πειρασµό νά ξεκινάτε τα ονόµατα µε σύµβολο την υπογράµµιση για να αποφύγετε µία σύγχυση µε τα ονόµατα της βιβλιοθήκης. Τέσσερις καλοί τρόποι για τη δήλωση των µεταβλητών 1. Συγκεντρώνοντας όλες τις µεταβλητές µαζί σε ένα σηµείο είναι πιο εύκολο για τον αναγνώστη να καταλάβει τι κάνει το πρόγραµµα. Αυτό αληθεύει, ιδιαίτερα, αν δίνετε στις µεταβλητές ονοµασία µε σηµασία ( όπως taxrate αντί για r), καθώς επίσης νά χρησιµοποιείτε σχόλια για νά επεξηγείτε τι αναπαριστούν οι µεταβλητές. Η τεκµηρίωση ενός προγράµµατος κατά αυτόν τον τρόπο είναι µία από τις βασικές τεχνικές για τον καλό προγραµµατισµό 2. Εάν σκεφτείτε τι θα βάλετε στο τµήµα δήλωσης των µεταβλητών, µπορείτε νά ανακαλύψετε µερικά χρήσιµα στοιχεία πού θα σάς βοηθήσουν στον προγραµµατισµό. τι πληροφορίες χρειάζεται Το πρόγραµµα για να ξεκινήσει; τι ακριβώς θέλω το πρόγραµµα νά βγάζει ως αποτέλεσµα; 3. ηλώνοντας τις µεταβλητές, µπορείτε νά ανακαλύψετε πιο εύκολα διάφορα λάθη, πού προέρχονται από τη λανθασµένη γραφή τού ονόµατος των µεταβλητών. Για παράδειγµα, υποθέστε ότι σε γλώσσα, πού δεν δηλώνονται οι µεταβλητές, γράφετε την πρόταση: RADIUS1 = 20.4; και ότι κάπου αλλού στο πρόγραµµα γράφετε κατά λάθος: CIRCUM = 6.28 * RADIUSL; Έτσι αντικαταστήσατε τον αριθµό 1 µε το γράµµα L. Το πρόγραµµα θα δηµιουργήσει, γι αυτό µία νέα µεταβλητή µε Το όνοµα RADIUSL και θα χρησιµοποιήσει κάποια τιµή για αυτή(ίσως µηδέν, ίσως τυχαίο αριθµό). Τότε η CIRCUM θα πάρει λάθος τιµή, και ίσως περάσετε δύσκολες στιγµές µέχρις ότου νά βρείτε Το γιατί. Ευτυχώς αυτό δεν µπορεί νά συµβεί στη C εκτός και αν δηλώσετε δύο παρόµοια ονόµατα µεταβλητών γιατί ο µεταγλωττιστής θα παραπονεθεί όταν συναντήσει την αδήλωτη µεταβλητή RADIUSL 4. Το πρόγραµµα σας σε C δεν θα τρέξει σωστά, αν δεν δηλώσετε τις µεταβλητές σας Καταχώρηση Η πρόταση καταχώρησης είναι µία από τις πιο βασικές. στο παράδειγµα µας, η πρόταση καταχώρησης σηµαίνει «δώσε στη µεταβλητή num την τιµή 1»: num = 1; Η γραµµή int mum δεσµεύει χώρο στον υπολογιστή για τη µεταβλητή num και στην παραπάνω γραµµή δίνεται η τιµή της. Μπορούµε νά δώσουµε στη num αργότερα µία άλλη τιµή, εάν θέλουµε. Άλλωστε αυτός είναι ο λόγος πού καλούµε τη num µεταβλητή. 6

Ο τελεστής καταχώρησης είναι το =. Παρατηρήστε ότι η πρόταση καταχώρησης, όπως η πρόταση δήλωσης ολοκληρώνεται µε ένα ερωτηµατικό. Η συνάρτηση printf( ) Στις παρακάτω γραµµές χρησιµοποιείται µία τυποποιηµένη συνάρτηση τής C, πού καλείται printf( ): printf( είναι ένας απλός ); printf( υπολογιστής\n ); printf( Ο αγαπηµένος µου αριθµός είναι ο %δ γιατί είναι πρώτος. \n, num); Οι παρενθέσεις µάς δηλώνουν ότι πρόκειται για συνάρτηση. Τα στοιχεία πού περιέχονται µεταξύ των παρενθέσεων είναι οι πληροφορίες, πού περνάνε από τη συνάρτηση main( ) στη συνάρτηση printf( ). για παράδειγµα, η πρώτη γραµµή περνά τη φράση «Είµαι ένας απλός» στη συνάρτηση printf( ). Αυτή η πληροφορία λέγεται όρισµα τής συνάρτησης. τι κάνει όµως η συνάρτηση printf( ) µε αυτό Το όρισµα; Προφανώς εξετάζει τι βρίσκεται µεταξύ εισαγωγικών και το απεικονίζει στην οθόνη ενός τερµατικού. Η γραµµή printf( Είµαι ένας απλός ) µας δίνει ένα παράδειγµα για το πώς καλούµε στη C µια συνάρτηση. Το µόνο που χρειάζεται νά κάνουµε είναι νά πληκτρολογήσουµε το όνοµα της συνάρτησης και να συµπεριλάβουµε το επιθυµητό όρισµα µέσα στις παρενθέσεις. Όταν Το πρόγραµµα φθάσει σ αυτή τη γραµµή, τότε ο έλεγχος περνά στη συνάρτηση πού συναντά (σε αυτή την περίπτωση είναι ή printf( )). Όταν η ενεργοποίηση τής συνάρτησης τελειώσει ο έλεγχος επιστρέφει στο αρχικό πρόγραµµα. τι γίνεται όµως µε την επόµενη γραµµή; Αυτή περιέχει τούς χαρακτήρες \n, πού περιλαµβάνονται µεταξύ εισαγωγικών, και δεν απεικονίζονται πουθενά. Οι χαρακτήρες αυτοί στην πραγµατικότητα, είναι µια εντολή για το ξεκίνηµα µιας νέας γραµµής. Ο συνδυασµός \n αντιπροσωπεύει έναν απλό χαρακτήρα, πού καλείται χαρακτήρας νέας γραµµής. Η σηµασία του είναι να «αρχίζει µία νέα γραµµή από το αριστερό περιθώριο». Ο χαρακτήρας νέας γραµµής είναι ένα παράδειγµα αυτού που καλείται ακολουθία διαφυγής, που χρησιµοποιείται για να παριστάνει δύσκολους ή αδύνατον να πληκτρολογηθούν χαρακτήρες. Άλλα παραδείγµατα είναι το \t για τη στηλοθέτηση και το \b για ένα διάστηµα προς τα πίσω. Σε κάθε περίπτωση η ακολουθία διαφυγής ξεκινά µε τον χαρακτήρα (\). Αυτό εξηγεί γιατί οι τρεις προτάσεις απεικόνισης παράγουν µόνο δύο γραµµές, µια και η πρώτη εντολή δεν περιέχει ένα χαρακτήρα νέας γραµµής. Ο αριθµός 1 αντικαθιστά την οµάδα συµβόλων %d όταν ή γραµµή απεικονίζεται στην οθόνη, και ο 1 είναι η τιµή τής µεταβλητής num.το %d δείχνει σε πιο σηµείο θα εµφανισθεί η τιµή τής µεταβλητής num. Το σύµβολο % έχει την έννοια του ότι µια µεταβλητή πρέπει νά εµφανιστεί σε αυτό το σηµείο και το d ότι ή µεταβλητή είναι ένας αριθµός. 2.3 Η οµή Ενός Απλού Προγράµµατος Ένα πρόγραµµα αποτελείται από µία ή περισσότερες συναρτήσεις, µία από τις οποίες πρέπει νά ονοµάζεται main( ). Μία συνάρτηση αποτελείται από µία επικεφαλίδα και 7

ένα σώµα (Βλ. Εικ. 2.4) Η επικεφαλίδα περιέχει τις προτάσεις του προεπεξεργαστή, όπως π.χ. #include, και Το όνοµα τής συνάρτησης. Εικόνα 2.4 : Μια συνάρτηση έχει µία επικεφαλίδα και ένα σώµα Μπορεί νά αναγνωρίσετε Το όνοµα µιας συνάρτησης από τις παρενθέσεις, πού µπορεί όµως να είναι και άδειες. Το σώµα τής συνάρτησης βρίσκεται µέσα στις αγκύλες { } και αποτελείται από µία σειρά προτάσεων, που ή κάθε µία τελειώνει σε ένα ελληνικό ερωτηµατικό (;). To παράδειγµα µας είχε µία πρόταση δήλωσης µε το όνοµα και το τύπο τής µεταβλητής πού χρησιµοποιούσαµε. Μετά, υπήρχε µία πρόταση καταχώρησης, πού έδινε µία τιµή στη µεταβλητή. Τέλος, υπήρχαν τρεις προτάσεις εκτύπωσης, που η κάθε µία χρησιµοποιούσε την συνάρτηση printf( ). Αυτές είναι παραδείγµατα προτάσεων πού καλούν συναρτήσεις. 2.4 Τρόποι για να Κάνετε τα Προγράµµατα σας Ευανάγνωστα Το να κάνετε τα προγράµµατα σας ευανάγνωστα είναι µια καλή πρακτική προγραµµατισµού. Ήδη έχουµε αναφέρει δύο τεχνικές: την επιλογή ονοµάτων µεταβλητών µε σηµασία και τη χρήση σχολίων. Μια άλλη τεχνική είναι νά χρησιµοποιείται κενές γραµµές για νά ξεχωρίζετε ένα τµήµα του προγράµµατος από ένα αλλο. Η C δεν απαιτεί µια κενή γραµµή, όµως µάς δίνει την ελευθερία νά τη χρησιµοποιούµε αν εµείς Το θέλουµε. Μία τέταρτη τεχνική είναι νά χρησιµοποιούµε µία γραµµή ανά πρόταση. Και αυτό δεν απαιτείται από τη C, καθώς η C δίνει ελευθερία στη µορφή, πού χρησιµοποιούµε. Μπορείτε νά τοποθετήσετε πολλές προτάσεις σε µία γραµµή ή νά χωρίσετε µία πρόταση σε πολλές γραµµές. Παρακάτω δίνεται ένα παράδειγµα επιτρεπτού κώδικα: main ( ) { int four; four = 4 ; printf( %d\n, four);} 8

Το ελληνικό ερωτηµατικό λέει στο µεταγλωττιστή, πού τελειώνει µια πρόταση και πού αρχίζει η επόµενη. Όµως ή λογική ενός προγράµµατος είναι πιο σαφής αν χρησιµοποιείτε τη σύµβαση µια γραµµή ανά πρόταση. στην Εικ. 2.5 δίνονται κάποιες οδηγίες για το γράψιµο ευανάγνωστων προγραµµάτων C. Εικόνα 2.5 : Πώς νά κάνετε Το πρόγραµµα πιο ευανάγνωστο 2.5 Ακόµη Ένα Βήµα Το επόµενο πρόγραµµα µας είναι το ίδιο εύκολο όσο και Το πρώτο µας. Σ αυτό Το παράδειγµα, δίνεται µία περιγραφή του τι κάνει Το πρόγραµµα, δηλώνονται περισσότερες από µία µεταβλητές, εκτελείται κάποιος πολλαπλασιασµός και δίνονται σαν αποτέλεσµα οι τιµές δύο µεταβλητών. Ας εξετάσουµε Το πρόγραµµα αυτό µε περισσότερη προσοχή. /* fathm_ft.c µετατρέπει δυο οργιές σε πόδια */ #include <stdio.h> main( ) { int feet, fathoms; fathoms = 2; feet = 6 * fathoms; printf( There are %d feet in %d fathoms! \n, feet, fathoms); } Λίστα 2.2 Τεκµηρίωση Το πρόγραµµα ξεκινά µε ένα σχόλιο, στο οποίο δίνονται Το όνοµα τού αρχείου και ο στόχος τού προγράµµατος. Αυτός ο τρόπος τεκµηρίωσης δεν είναι χρονοβόρος και βοηθά πολύ όταν, µετά από κάποιο χρονικό διάστηµα, θέλετε νά ασχοληθείτε ξανά µε κάποια παλιά σας αρχεία Πολλαπλές ηλώσεις Μεταβλητών Σ αυτό Το πρόγραµµα, δηλώνουµε δύο µεταβλητές αντί µόνο µιας. Αυτό, πού είναι αναγκαίο στην περίπτωση αυτή, είναι νά ξεχωρίσουµε τις δύο µεταβλητές ( feet και fathoms) µε ένα κόµµα στην πρόταση δήλωσης. 9

Πολλαπλασιασµός Το πρόγραµµα εκτελεί έναν υπολογισµό. Εκµεταλλευτήκαµε τη δυνατότητα τού Η/Υ µας να εκτελεί πράξεις, για νά πολλαπλασιάσουµε το 2 µε το 6. Στη C, όπως σε πολλές γλώσσες, Το σύµβολο * είναι Το σύµβολο τού πολ/σµού. Έτσι, η πρόταση: feet = 6 * fathoms; Σηµαίνει «πάρε την τιµή της µεταβλητής fathoms, πολλαπλασίασέ την µε 6 και καταχώρησε Το αποτέλεσµα αυτού του υπολογισµού στη µεταβλητή feet». Εκτύπωση Πολλών Μεταβλητών Τιµών Στο πρόγραµµα αυτό γίνεται πιο κοµψή χρήση τής printf( ). Αν τρέξετε Το πρόγραµµα, θα δώσει ως αποτέλεσµα: There are 6 feet in 2 fathoms! Αυτή τη φορά έχουµε δύο αντικαταστάσεις. Η πρώτη είναι αντικατάσταση τού %d µε την τιµή τής πρώτης µεταβλητής (feet), από αυτές πού ακολουθούν τα εισαγωγικά. Το δεύτερο %d αντικαταστάθηκε µε την τιµή τής δεύτερης µεταβλητής (fathoms). Παρατηρούµε ότι οι µεταβλητές, που οι τιµές τους πρόκειται νά εκτυπωθούν, βρίσκονται στο τέλος τής πρότασης. 2.6 Πολλαπλές Συναρτήσεις Εδώ δίνεται ένα ακόµα παράδειγµα (Λίστα 2.3). Μέχρι τώρα χρησιµοποιούσαµε την τυποποιηµένη συνάρτηση printf( ). Τώρα θα δείξουµε πώς µπορούµε νά συµπεριλαµβάνουµε και νά χρησιµοποιούµε µία δική µας συνάρτηση: /* two_func.c a program that uses two functions in one file */ #include <stdio.h> main( ) { printf( I ll call the function of butler. \n ); butler( ); printf( Yes. Bring me some tea and a few diskets. \n ); } butler( ) { printf( Did you ring, sir? \n ); } Λίστα 2.3 Το αποτέλεσµα είναι Το ακόλουθο: I ll call the function of butler. Did you ring sir? 10

Yes. Bring me some tea and a few diskettes. Η συνάρτηση butler( ) ορίζεται µε τον ίδιο τρόπο, όπως και ή main( ), µε το σώµα της να βρίσκεται ανάµεσα σε αγκύλες. Η συνάρτηση καλείται δίνοντας απλά Το όνοµα της µαζί µε τις παρενθέσεις. Όταν η butler( ) τελειώνει τη δουλειά της, το πρόγραµµα προχωρεί στην επόµενη πρόταση τής main( ). Όπως µπορείτε νά δείτε η χρήση δικών σας συναρτήσεων είναι εύκολη. Σηµείωση: Το πότε εκτελείται ή συνάρτηση butler( ) καθορίζεται από τη θέση της κλήσης της µέσα στη main( ) και όχι από τη θέση τού ορισµού της στο αρχείο. Μπορείτε π.χ. να βάλετε τον ορισµό της butler( ) πιο πριν από τον ορισµό τής main( ), αλλά το πρόγραµµα θα τρέξει µε τον ίδιο τρόπο, εκτελώντας τη butler( ) ανάµεσα στις δύο εκτελέσεις τής printf( ) µέσα στη main( ). Στη C πρέπει νά δηλώνουµε τις συναρτήσεις όπως και τις µεταβλητές. Πράγµα πού σηµαίνει, ότι έπρεπε νά δηλώσουµε τον τύπο της butler( ) και να δηλώσουµε τη συνάρτηση πριν αυτή χρησιµοποιηθεί µέσα στη main( ). Αυτή η σύµβαση αποκτά µεγαλύτερη σηµασία στην ANSI C. 11