1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ C

Σχετικά έγγραφα
Διαδικασιακός Προγραμματισμός

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

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

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

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

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

Τύποι Δεδομένων Είσοδος/Έξοδος

TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ , Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής. Βασίλης Μποζαντζής

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

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

Δεδομένα, τελεστές, είσοδος/έξοδος

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

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

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

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

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

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

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

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

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

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

5 &6. Τύποι δεδομένων, τελεστές και

Transcript:

1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ C 1.1. Το πιο απλό πρόγραμμα στη γλώσσα C To πιο απλό πρόγραμμα που στη γλώσσα C, είναι το παρακάτω: #include <stdio.h> #include <stdlib.h> void main (int argc, char *argv[]) { /* EDW MPAINEI TO PROGRAMMA MAS, afto einai sxolio kai de ginetai antilipto apo ton ypologisti */ } Το πρόγραμμα αυτό ουσιαστικά δεν κάνει τίποτα κατά την εκτέλεσή του. Όμως αυτός ο κώδικας είναι ο μικρότερος σε μέγεθος κώδικας που μπορούμε να γράψουμε. Στη C, υπάρχουν πολλές έτοιμες εντολές και συναρτήσεις, για να μας βοηθήσουν σε αυτά που θέλουμε να προγραμματίσουμε. Αυτά βρίσκονται σε διάφορα αρχεία-βιβλιοθήκες (headers) και ενημερώνουμε το πρόγραμμα για την ύπαρξη τους γράφοντας #include <onoma_vivliothikis.h>, όπως κάναμε στην πρώτη γραμμή. Αν θέλουμε μπορούμε να βάλουμε περισσότερες βιβλιοθήκες γράφοντας ξανά για την κάθε μια την εντολή include. Αυτά τα αρχεία, ενημερώνουν -για τις εντολές που περιέχουν- το μεταγλωττιστή (compiler), ο οποίος είναι το κομμάτι του προγράμματος, που θα δημιουργήσει το εκτελέσιμο αρχείο (το.exe ή το.out αρχείο), χάρις και στο διασυνδετή (linker). Ουσιαστικά, ο μεταγλωττιστής (compiler) παίρνει το πρόγραμμα από εντολές, που το καταλαβαίνουμε εμείς οι άνθρωποι και το έχουμε σώσει σε ένα.c αρχείο και το κάνει εκτελέσιμο, που είναι το αρχείο που καταλαβαίνει η μηχανή, αλλά αν το δούμε εμείς θα μας φανεί ακαταλαβίστικο. Όμως για να τρέξει το πρόγραμμα που θέλουμε, πρέπει οπωσδήποτε να υπάρχει εκτελέσιμο. ΠΡΟΣΟΧΗ!!! Το πρόγραμμα δε φτιάχνει εκτελέσιμο αρχείο, αν υπάρχουν λάθη στον κώδικα που έχουμε γράψει. Έτσι, η συνάρτηση-εντολή printf για να τυπώσει μια πρόταση στην οθόνη του υπολογιστή. Η συνάρτηση αυτή βρίσκεται στην βιβλιοθήκη <stdio.h>. #include <stdio.h> #include <stdlib.h> main (int argc, char *argv[]) { printf("hello world!!!\n"); system("pause"); return 0; } To αποτέλεσμα του προγράμματος στην οθόνη είναι : 1

Όπως ήδη αναφέρθηκε, ο σκοπός της δήλωσης #include < stdio.h > #include < stdlib.h > είναι να επιτρέψει τη χρήση της συνάρτησης printf() να παρέχει έξοδο στο πρόγραμμα, αφού βρίσκεται στο αρχείο βιβλιοθήκης (header), stdio.h (standard input/output) και stdlib.h (standard library). Κάθε πρόγραμμα στην C, όταν τρέχει (εκτελείται), καλείται αυτομάτως η συνάρτηση main(int argc, char *argv[]), η οποία είναι και η κυρίως συνάρτηση του κώδικά μας. Το πρόγραμμα, πηγαίνει αυτόματα στη main() και εκτελεί τις εντολές που είναι ανάμεσα στα άγκιστρα. Σε αυτές τις εντολές που είναι ανάμεσα στα άγκιστρα βρίσκεται αυτό που θέλουμε εμείς ως προγραμματιστές να δημιουργήσουμε. Όσα είναι πάνω από τα άγκιστρα, απλά βοηθούν τον υπολογιστή να καταλάβει τι του ζητάμε. Τέλος, να σημειώσουμε τις δυο εντολές που είναι μέσα στα άγκιστρα και θα τις βάζουμε ΠΑΝΤΑ ως τελευταίες. Αυτές είναι: system("pause"); return 0; Το πρώτο κρατάει ανοιχτή την οθόνη που εμφανίζεται το αποτέλεσμα του προγράμματος που φτιάξαμε και το δεύτερο χρειάζεται για να μπορεί το πρόγραμμα να μας δείξει τα λάθη που έχουμε κάνει. Τα σημαντικά σημεία στην C που πρέπει να προσέξουμε μέχρι τώρα είναι: οι λέξεις κλειδιά (εντολές συναρτήσεις ορισμοί) γράφονται με πεζά (μικρά γράμματα). οι εντολές ολοκληρώνονται πάντα με ένα ελληνικό ερωτηματικό (;). οι σειρές χαρακτήρων κειμένου (strings) εσωκλείονται στα διπλά εισαγωγικά " ". Η C διακρίνει κεφαλαία και μικρά, χρησιμοποιεί πεζά. Είναι case sensitive. Τα άγκιστρα καθορίζουν την αρχή και το τέλος ενός προγράμματος 2

1.2. Τύποι Μεταβλητών Μια μεταβλητή είναι ένα σύμβολο το οποίο εκπροσωπεί μια θέση αποθήκευσης στη μνήμη του υπολογιστή μας (δηλ. ένα κουτάκι στη μνήμη, όπου αποθηκεύουμε στοιχεία που χρειαζόμαστε). Οι καθορισμένες από τον προγραμματιστή μεταβλητές πρέπει να δηλωθούν πριν να χρησιμοποιηθούν σε ένα πρόγραμμα. Συνίσταται κατά τη δήλωση των μεταβλητών να χρησιμοποιούνται πεζοί χαρακτήρες. Αν δύο μεταβλητές έχουν το ίδιο όνομα, αλλά γράφονται διαφορετικά θεωρούνται διαφορετικές. Ο υπολογιστής καταλαβαίνει ως άλλη μεταβλητή τη met1 και άλλη τη Met1. Η δήλωση μιας μεταβλητής είναι της μορφής: Τύπος_μεταβλητής όνομα_μεταβλητής ; Π.χ. int k; Αρχικοποίηση μίας μεταβλητής σημαίνει να εκχωρηθεί μια πρώτη τιμή στη μεταβλητή κατά τη δήλωση της. Η εκχώρηση τιμής γίνεται με το ίσον ( = ). Π.χ. int k = 38; Αυτό θα ήταν το ίδιο με το να γράψουμε: int k; k = 38; Μια μεταβλητή μπορεί να πάρει διάφορα είδη τιμών. Ανάλογα με το περιεχόμενο που θα αποθηκευτεί σε μια μεταβλητή, μπορούν να ορισθούν πολλούς τύπους. Οι τέσσερις βασικοί τύποι μεταβλητών είναι: integer (ακέραιες μεταβλητές) Σε αυτές αποθηκεύονται ακέραιοι αριθμοί θετικοί και αρνητικοί. Η λέξη κλειδί στην αρχή της δήλωσης είναι το int. Παρακάτω, φαίνονται και τα όρια των τιμών που μπορούμε να δώσουμε σε κάθε τύπο μεταβλητής και πόσο χώρο πιάνει κάθε μεταβλητή στη μνήμη. Η C υποστηρίζει διαφορετικούς τύπους integer. Τύπος Μικρότερη τιμή Μεγαλύτερη τιμή Αριθμός bytes που χρειάζεται int -32768 32767 2 unsigned int 0 65535 2 signed long int -2147483648 2147483647 4 unsigned long int 0 4294967295 4 float (πραγματικές μεταβλητές) Πραγματικοί είναι οι αριθμοί που περιέχουν κλασματικά μέρη, θετικοί και αρνητικοί. Μια τιμή float μπορεί να είναι ένας αριθμός μεταξύ 3.4Ε-38, δηλ. 3.4*10**(-38) και 3.4Ε+38, δηλ. 3.4*10**38. (Το διπλό άστρο (**) δείχνει ότι ο αριθμός που ακολουθεί είναι εκθέτης δύναμης). Η λέξη κλειδί στην αρχή της δήλωσης είναι το float. Οι δεκαδικοί αυτού του τύπου καταλαμβάνει 4 bytes στη μνήμη. 3

Ένα παράδειγμα πραγματικής μεταβλητής με όνομα mikos είναι, float mikos ; mikos = 34.12 ; double (μεταβλητές διπλής ακρίβειας) Αυτοί οι τύποι μεταβλητών χειρίζονται δεδομένα όπως και οι τύπου float με τη διαφορά ότι δεσμεύουν διπλάσιο χώρο στη μνήμη και έτσι μπορούν να αποθηκεύσουν αριθμούς με ακρίβεια διπλασίων ψηφίων από το float. Η λέξη κλειδί στην αρχή της δήλωσης είναι το double. Ένα παράδειγμα μιας double τιμής είναι 3.1E7. Ένα παράδειγμα μια double μεταβλητή αποκαλούμενη big είναι, double big;. big = 3.1Ε+7 ; //pou simainei big=3.1*10**7 char (μεταβλητές χαρακτήρα) Οι μεμονωμένοι χαρακτήρες ή αριθμητικά ψηφία ή άλλοι χαρακτήρες του πληκτρολογίου η γλώσσα C τους χειρίζεται με τη χρήση των char μεταβλητών. Η λέξη κλειδί στην αρχή της δήλωσης είναι το char. Ένα παράδειγμα χαρακτήρα είναι το γράμμα Α. Ένα παράδειγμα με ένα χαρακτήρα στη μεταβλητή με όνομα letter είναι, char gramma; gramma = Α ; ΠΡΟΣΟΧΗ!!! Για να γίνει ανάθεση του χαρακτήρα Α στη μεταβλητή letter πρέπει να το εσωκλείσουμε σε μονά εισαγωγικά. Αν βάλουμε το gramma='1' που είναι τύπου char, τότε με αυτό το '1', δεν μπορούμε να κάνουμε πράξεις, αφού δε θεωρείται ως αριθμός, αλλά ως ένα απλό σύμβολο (ζωγραφιά). Strings (Αλφαριθμητικά) Η C δεν διαθέτει τύπο μεταβλητών string(αλφαριθμητικό). Όμως, μας επιτρέπει τη διαχείριση τους σαν πίνακες (array) χαρακτήρων. Δηλαδή σαν μια σειρά μεταβλητών τύπου char οι οποίες συγκεντρώνονται μαζί σε κάτι το οποίο ονομάζεται πίνακας (array) και θα το δούμε σε επόμενα μαθήματα. Οι χαρακτήρες του string αποθηκεύονται σε διαδοχικές θέσεις της μνήμης. ΣΗΜΕΙΩΣΗ SOS: Από εδώ και πέρα, μέσα στο έγγραφο που διαβάζετε, θα γράφουμε στα παραδείγματα που θα ακολουθήσουν, μόνο τις εντολές που χρειάζονται για να φτιάξουμε κάθε φορά το ζητούμενο. Δηλαδή, τα παραδείγματα θα περιλαμβάνουν μόνο το κομμάτι που έχει αντικατασταθεί παρακάτω από τις τελείες, αλλά στον υπολογιστή θα πρέπει να το γράψετε ολοκληρωμένο έχοντας κάνει την αντικατάσταση. 4

#include <stdio.h> #include <stdlib.h> main (int argc, char *argv[]) { system("pause"); return 0; } 5

1.3. Η συνάρτηση printf (έξοδος στην οθόνη) Το κείμενο που τυπώνεται από την συνάρτηση printf() πρέπει να περικλείεται από διπλά εισαγωγικά ("..."). Η printf είναι μια συνάρτηση στη C η οποία χρησιμοποιείται για εκτύπωση μεταβλητών και κείμενου, στην οθόνη του υπολογιστή μας. Στην απλούστερή της μορφή, η printf () χρησιμοποιείται για να εξάγει ένα αλφαριθμητικό, όπως στην περίπτωση του πρώτου μας προγράμματος. Αν όμως χρησιμοποιήσουμε μεταβλητές, τότε για να μπορέσουμε να εμφανίσουμε τις τιμές των μεταβλητών στην οθόνη και για να έχουμε τη δυνατότητα μορφοποίησης όλων των τύπων δεδομένων, θα πρέπει να ορίσουμε 2 παραμέτρους στην είσοδο της printf(): printf (...,. ). Το πρώτο μέρος που βρίσκεται στα εισαγωγικά, ονομάζεται αλφαριθμητικό ελέγχου. Το αλφαριθμητικό ελέγχου, που περικλείεται σε αποστρόφους, δείχνει στον μεταγλωττιστή τη μορφή με την οποία θα εμφανιστούν τα δεδομένα. Περιλαμβάνει οποιοδήποτε κείμενο θέλουμε να εμφανιστεί στην οθόνη, μαζί με τα σύμβολα τα οποία ονομάζονται προσδιοριστές μορφής. Κάθε προσδιοριστής ξεκινά με το σύμβολο επί τοις εκατό (%) ακολουθούμενο από ένα γράμμα το οποίο υποδηλώνει τον τύπο δεδομένων: %d εμφανίζει έναν ακέραιο αριθμό %u εμφανίζει έναν μη προσημασμένο ακέραιο %f εμφανίζει έναν δεκαδικό αριθμό τύπου float ή double %e εμφανίζει έναν αριθμό με εκθετική σήμανση %c εμφανίζει έναν χαρακτήρα τύπου char %s εμφανίζει ένα string(αλφαριθμητικό) Συνεπώς, το πρώτο μέρος μιας οδηγίας printf () μπορεί να δείχνει ως εξής: printf ("%χαρακτηριστικό_γράμμα", όνομα_μεταβλητής ) Στο πρώτο μέρος, το σύμβολο % λέει στον μεταγλωττιστή ότι θα ακολουθήσει ένας προσδιοριστής μορφής. Ο επόμενος χαρακτήρας,(π.χ. το d) δείχνει να εμφανίσει μια τιμή τύπου int (ακέραιο). Το δεύτερο μέρος της συνάρτησης είναι η λίστα δεδομένων, η οποία περιέχει τις τιμές, τις σταθερές, ή τις μεταβλητές που θέλετε να εμφανίσετε. Διαχωρίζουμε τη λίστα δεδομένων από το αλφαριθμητικό ελέγχου με ένα κόμμα, τοποθετώντας κόμματα και μεταξύ των στοιχείων της λίστας. Το αλφαριθμητικό ελέγχου μπορεί επίσης να περιλαμβάνει κυριολεκτικό κείμενο μαζί με τους προσδιοριστές μορφής για την εμφάνιση δεδομένων. Αν έχουμε αριθμό, δε θέλουμε εισαγωγικά. Π.χ.: printf ( "Eimaste %d filoi\n", 4 ); και θα εμφανιστεί στην οθόνη: 6

Αλλά για να συνδυάσετε κείμενο με μια αριθμητική σταθερά ή μεταβλητή, θα πρέπει να χρησιμοποιήσετε την printf () και έναν προσδιοριστή μορφής, όπως στο ακόλουθο πρόγραμμα: int plithos; plithos =4; printf ("Eimaste %d filoi\n", plithos); Στην οθόνη θα εμφανιστεί: Μπορείτε να περνάτε οποιοδήποτε πλήθος παραμέτρων για να εμφανίζετε πολλαπλά ορίσματα, αλλά θα πρέπει να περιλαμβάνετε έναν προσδιοριστή μορφής για κάθε όρισμα. Οι τιμές στη λίστα δεδομένων πρέπει να εμφανίζονται με την ίδια σειρά όπως και οι προσδιοριστές τους. Για παράδειγμα: int metritis; float kostos; metritis =5; kostos =45.58; printf("the cost is %f for %d items\n", kostos, metritis); Στην οθόνη θα εμφανιστεί: Εδώ, παρατηρούμε ότι ενώ δώσαμε στη μεταβλητή amount τιμή 45.58 το πρόγραμμα μας εμφάνισε 45,580002 και αυτό οφείλεται στο ίδιο το πρόγραμμα και θα το φτιάξουμε σε επόμενα μαθήματα. 7

1.4. Κωδικοί Ελέγχου Μπορείτε να ελέγχετε το δρομέα στην οθόνη, καθώς και ορισμένες άλλες λειτουργίες, χρησιμοποιώντας ειδικούς κωδικούς, οι οποίοι ονομάζονται ακολουθίες διαφυγής (ή συνηθέστερα ακολουθίες escape). Κάθε ακολουθία ξεκινά με τον χαρακτήρα backslash ( \ ). Όταν ο μεταγλωττιστής συναντήσει το backslash, δεν εμφανίζει τον επόμενο χαρακτήρα, αλλά εκτελεί τη λειτουργία που υποδεικνύεται από αυτόν. Ακολουθία Διαφυγής Χαρακτήρας Καμπανάκι \a Οπισθοχώρηση \b Αλλαγή σελίδας \f Νέα γραμμή (SOS) \n Στηλοθέτης (tab) (SOS) \t Ανάποδη κάθετος \\ εισαγωγικό \ Αν παρατηρήσατε στο προηγούμενο πρόγραμμα στο τέλος μέσα στα διπλά εισαγωγικά υπήρχε γραμμένο \n. Αυτό δεν εμφανίστηκε, αλλά έδωσε εντολή στο πρόγραμμα να αλλάξει γραμμή (σαν δηλαδή κάποιος να πάτησε το Enter). Αυτό θα το δούμε πιο καλά και στα επόμενα προγράμματα. Παράδειγμα 1: printf("this is a line of text to output.\n"); printf("and this is another "); printf("line of text.\n\n"); printf("this is a third line.\n"); Στην οθόνη θα εμφανιστεί (με αυτές ακριβώς τις αλλαγές γραμμής) : Παρατηρήσατε ότι εκεί που υπάρχει το \n\n αλλάζουν δυο γραμμές Παράδειγμα 2: int sum, value; sum = 10; value = 15; printf("%d\t%d\n", sum, value); 8

Στην οθόνη θα εμφανιστεί : Παρατηρήσατε ότι εκεί που υπάρχει το \t (dδιαβάζεται ως tab), δημιουργείται ένα μεγάλο κενό ανάμεσα στο πρώτο και στο δεύτερο νούμερο 1.5. Αριθμητικοί Τελεστές Τελεστής (κυρίως για μαθηματικές Πράξη πράξεις) + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός / Διαίρεση % Υπόλοιπο διαίρεσης ακεραίων Παράδειγμα 1: int sum; sum = 500 + 15; printf("the sum of 500 and 15 is %d\n", sum); Στην οθόνη θα εμφανιστεί: Το ίδιο αποτέλεσμα θα παίρναμε αν ορίζαμε δύο μεταβλητές και κάναμε την οποιαδήποτε πράξη μέσα στην printf(, ) int a,b; a = 500; b = 15; printf("the sum of 500 and 15 is %d\n", a+b); Παράδειγμα 2: 9

int mod, div, a,b; a = 13; b=2; mod=a%b; // Εμφανίζει το υπόλοιπο της διαίρεσης div=a/b; // Εμφανίζει το ακέραιο πηλίκο της διαίρεσης printf("to ypoloipo tis diairesis einai %d kai to akeraio piliko %d\n", mod, div); Στην οθόνη θα εμφανιστεί: ΠΡΟΣΟΧΗ!!!!!!! Όταν κάνουμε διαίρεση μεταξύ δύο ακεραίων(τύπου int), τότε το νούμερο που προκύπτει είναι ακέραιος και όχι δεκαδικός. Παράδειγμα για το παραπάνω και τι θα κάνουμε για να αποφύγουμε τυχόν σφάλμα: int a,b; float c; a = 20; b = 6; c=a/b; /* Διαιρούμε float/int, άρα παίρνουμε int (άρα 3) και μετά εκχωρείται σε float(τη μεταβλητή c) και γίνεται 3.000000000, δηλαδή ΛΑΘΟΣ */ printf("to apotelesma einai %f\n", c); Στην οθόνη θα εμφανιστεί: Αν στο προηγούμενο παράδειγμα αλλάζαμε την εντολή (c=a/b;) και γράφαμε στη θέση της τα παρακάτω, θα είχαμε: c=20.0/6; // Διαιρούμε float/int, άρα παίρνουμε float,άρα c= 3.33333333, // δηλαδή ΣΩΣΤΟ c=20/6.0; // Διαιρούμε int/float, άρα παίρνουμε float,άρα // c= 3.33333333, δηλαδή ΣΩΣΤΟ 10

c=(float)20/6; // Διαιρούμε int/int, αλλά λέμε στον υπολογιστή να κάνει την // πράξη σα να ήταν float, άρα c= 3.33333333, δηλαδή ΣΩΣΤΟ Και στις τρεις παραπάνω αλλαγές θα εμφανιζόταν το εξής: Τα παραπάνω σωστά αποτελέσματα θα είχαμε αν διαιρούσαμε μεταβλητές(c=a/b;)και η a ή η b, ήταν float. Τέλος, αν θέλουμε να ξέρουμε πόσες θέσεις θα πιάσει ο αριθμός που θα γράψουμε ή πόσα δεκαδικά ψηφία θέλουμε, θα πρέπει στον προσδιοριστή μορφής (%d ή %c ή %f ή...) να ακολουθήσουμε τα εξής: %5d // Κρατάει 5 θέσεις για τον ακέραιο μας ή περισσότερες αν είναι // το νούμερο μεγαλύτερο από 5ψήφιο %6.2f // Κρατάει 6 θέσεις συνολικά για το δεκαδικό (μαζί με την τελεία) // και εμφανίζει μόνο 2 δεκαδικά ψηφία (αν δεν υπάρχουν βάζει // μηδενικά) Αν σε προηγούμενο παράδειγμα βάζαμε: int count; float amount; count =5; amount =45.58; printf("the cost is %6.2f for %d items\n", amount, count); Στην οθόνη θα εμφανιστεί: Βρείτε πιο πάνω το αντίστοιχο παράδειγμα, χωρίς το %6.2f και δείτε τη διαφορά. 11

1.6. Σχόλια Μπορείτε βέβαια να χρησιμοποιείτε και τα ζεύγη χαρακτήρων /* και */ για τη δημιουργία σχολίων στη C. Ένα κοινό λάθος που κάνουν οι αρχάριοι προγραμματιστές είναι ότι παραλείπουν το ζεύγος */ για το κλείσιμο ενός σχολίου, πράγμα που παράγει μηνύματα λάθους στον μεταγλωττιστή. /* This is a comment for two or more lines */ Επίσης, επιτρέπεται και ένας άλλος ενδείκτης σχολίων, τα σύμβολα //. Αυτός ο τύπος σχολίων σταματά μαζί με τον χαρακτήρα carriage return που τερματίζει την εκάστοτε γραμμή, οπότε δε χρειάζεται να πληκτρολογήσετε μόνοι σας κάποιον κωδικό που θα υποδεικνύει το τέλος του σχολίου. // this is also comment for one line Εάν το σχόλιο σας εξαπλώνεται σε περισσότερες από μια γραμμές, κάθε μια γραμμή πρέπει να ξεκινά με το ζεύγος χαρακτήρων //: 1.7. Η συνάρτηση scanf() H συνάρτηση scanf, είναι ανάλογη με τη συνάρτηση printf. Μας δίνει την δυνατότητα ανάλογα με το όρισμα μετατροπής που θα χρησιμοποιήσουμε να διαβάσουμε είτε χαρακτήρες είτε αριθμούς κατευθείαν από το πληκτρολόγιο. Και αυτή, δέχεται μια παράμετρο με δυο μέρη, ένα αλφαριθμητικό ελέγχου και μια λίστα δεδομένων. Το αλφαριθμητικό ελέγχου περιέχει προσδιοριστές μορφής οι οποίοι υποδεικνύουν πώς θα διερμηνευτούν τα δεδομένα που εισάγονται. Η λίστα δεδομένων περιλαμβάνει τις μεταβλητές οι οποίες θα κατακρατούν τις τιμές εισόδου. scanf (, ). %d εισάγει έναν ακέραιο αριθμό %u εισάγει έναν μη προσημασμένο ακέραιο %f εισάγει έναν αριθμό κινητής υποδιαστολής τύπου float %e εισάγει έναν αριθμό με εκθετική μορφή %c εισάγει δεδομένα τύπου char %s εισάγει ένα αλφαριθμητικό %ο εισάγει έναν οκταδικό αριθμό %x εισάγει έναν δεκαεξαδικό αριθμό ΠΡΟΣΟΧΗ!!!!!!! Όταν εισάγετε αριθμητικές τιμές ή χαρακτήρες τύπου char, θα πρέπει να χρησιμοποιείτε τη διεύθυνση της μεταβλητής στη λίστα δεδομένων και όχι μόνο το όνομα της μεταβλητής. Η διεύθυνση της μεταβλητής εκφράζεται όταν βάλουμε το χαρακτήρα &, πριν ακριβώς από το όνομα της μεταβλητής. Παράδειγμα: 12

int sum; char letter; float money; printf("parakalw dwste enan akeraio arithmo:\n"); scanf("%d", &sum ); printf("parakalw dwste ena gramma:\n"); scanf(" %c", &letter ); printf("parakalw dwste enan dekadiko arithmo:\n"); scanf("%f", &money ); printf("ta stoixeia pou dwsate itan:\n"); printf("o akeraios:\t %d\n", sum ); printf("to gramma:\t %c\n", letter ); printf("o dekadikos:\t %f\n", money ); Παρακάτω θα δούμε το αποτέλεσμα στην οθόνη, όπου ο χρήστης συμπλήρωσε για τον ακέραιο 598, για το γράμμα το d και για το δεκαδικό το 12,654 Επίσης, με μια scanf μπορούμε να εισάγουμε συγχρόνως δύο ή περισσότερες τιμές, σε αντίστοιχες μεταβλητές (όπως με μια printf μπορούμε να εμφανίσουμε δύο ή περισσότερες μεταβλητές). Για παράδειγμα, το μέρος του κώδικα που αναφερόμαστε είναι το παρακάτω: printf("enter in two numbers -->"); scanf("%d %d", &numb1, &numb2 ); Οπότε αν ο χρήστης για παράδειγμα γράψει από το πληκτρολόγιο του κάτι τέτοιο: 5 (κενό) 12 τότε στη μνήμη θα αποθηκευθεί ότι numb1=5 και numb2=12 Υποδείξεις πριν τις ασκήσεις Πρέπει να ξεχωρίσουμε τις έννοιες προγραμματιστής και χρήστης. Παρότι, όταν φτιάχνουμε ένα πρόγραμμα έχουμε και τους δύο ρόλους, αργότερα σε εργασιακό περιβάλλον δε θα συμβαίνει αυτό. Σε αυτό το μάθημα γράφουμε εντολές και άρα είμαστε προγραμματιστές. Όταν όμως χρειάζεται να τρέξουμε το πρόγραμμα που φτιάξαμε για να δούμε αν είναι 13

σωστό, τότε γινόμαστε χρήστες. Σα να λέγαμε δηλαδή σε ένα φίλο μας να το δοκιμάσει. Έτσι λοιπόν, όποια άσκηση μας ζητάει να αρχικοποιήσουμε τις τιμές των μεταβλητών, εννοεί να περάσουμε μόνοι μας μέσα από το πρόγραμμα τις τιμές των μεταβλητών και κάθε φορά που το πρόγραμμα τρέχει θα είναι πάντα οι ίδιες. Όπου ζητάμε από το χρήστη να μας δώσει(πληκτρολογήσει) τις τιμές των μεταβλητών, χρησιμοποιούμε τη scanf() (από πάνω γράφουμε συνήθως και ένα printf για να ξέρει ο χρήστης τις τιμές για ποια μεταβλητή πρέπει να μας δώσει). Όπως είναι λογικό κάθε φορά που τρέχουμε το πρόγραμμα οι τιμές που δίνουν οι χρήστες είναι πιθανότατα διαφορετικές. Για να κρατήσουμε στη μνήμη όσα νούμερα θεωρούμε αναγκαίο, μπορούμε να δημιουργήσουμε όσες μεταβλητές θα μας χρειαστούν, αρκεί στο τέλος να μην ξεχάσουμε να τις δηλώσουμε. 1.8. Ασκήσεις ΑΣΚΗΣΗ 1: Γράψτε ένα πρόγραμμα που δηλώνει τέσσερις μεταβλητές στο σύνολο (ένας από κάθε τύπο στοιχείων). Αρχικοποιείστε κάθε μεταβλητή και, εμφανίστε τις, στην οθόνη. Σιγουρευτείτε ότι υπάρχει αλλαγή γραμμής μετά από κάθε γραμμή. ΑΣΚΗΣΗ 2: Γράψτε πρόγραμμα που να κάνει την πράξη μεταξύ των μεταβλητών (x+y)*(z+w) και να τυπώνει στην οθόνη τα ενδιάμεσα και το τελικό αποτέλεσμα. Χρησιμοποιήστε τιμές της επιλογής σας, που θα τις δίνετε εσείς έτοιμες μέσα από το πρόγραμμα, για τις μεταβλητές. ΑΣΚΗΣΗ 3: Χρησιμοποιείστε τη συνάρτηση printf για να εμφανίσετε στην οθόνη το άθροισμα, υπόλοιπο, γινόμενο, διαφορά και το υπόλοιπο της διαίρεσης δύο ακέραιων μεταβλητών a και b με τιμές που θα εισάγονται από το πληκτρολόγιο. Η διαίρεση να μας δίνει το σωστό αποτέλεσμα με δύο δεκαδικά ψηφία. Το αποτέλεσμα να είναι της μορφής: a + b = a b = a x b = a : b = a % b = Σημείωση: Για να εμφανιστεί το σύμβολο της %, πρέπει να το γράψουμε δύο φορές μέσα στην printf(...%%... ), αλλιώς το διαβάζει μαζί με το επόμενο γράμμα και το εκλαμβάνει ως χαρακτήρα μορφοποίησης. ΑΣΚΗΣΗ 4: Γράψτε πρόγραμμα που να μετατρέπει μια θερμοκρασία Fahrenheit σε Celsius. Ο τύπος υπολογισμού είναι: 14

c = 5.0 / 9.0 * ( f - 32 ). ΑΣΚΗΣΗ 5: Γράψτε πρόγραμμα που να υπολογίζει τις ρίζες ενός τριώνυμου με συντελεστές (a,b,c)που θα δίνονται από το πληκτρολόγιο. Θα υπολογίζεται η διακρίνουσα όπου, D = b * b 4 * a * c και οι ρίζες r1=(-b+sqrt(d))/(2*a) και r2=(-b-sqrt(d))/(2*a ) 15