Εργαςτθριακζσ Αςκιςεισ Αρικμθτικισ Ανάλυςθσ

Σχετικά έγγραφα
ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

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

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

16. Πίνακεσ και Συναρτήςεισ

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

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

17. Πολυδιάςτατοι πίνακεσ

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

343 Ειςαγωγι ςτον Προγραμματιςμό

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

ΗΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

2 ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ. Η πιο απλι μορφι ςφγκριςθσ εντολισ ελζγχου ζχει τθ μορφι : if (<ζπλζήθε>) εληνιή; if(<ζπλζήθε>){ block εληνιώλ; }

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

ΘΕΜΑ Α / Αν μια μεταβλθτι ζχει τθν τιμι 47.0 τότε ο τφποσ τθσ μεταβλθτισ είναι ακζραιοσ.

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

ΥΡΟΝΣΙΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣΗ» ΔΙΑΓΩΝΙΜΑ ΘΕΜΑΣΑ Β ΛΤΚΕΙΟΤ ΥΕΒΡΟΤΑΡΙΟ 2018 ΑΕΠΠ

Θεςιακά ςυςτιματα αρίκμθςθσ

Ονοματεπϊνυμο.. ΔΙΑΓΩΝΙΣΜΑ ΑΕΠΠ

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

343 Ειςαγωγι ςτον Προγραμματιςμό

Προγραμματιςμόσ Συςτημάτων

ΔΟΜΗ ΑΠΛΗΣ ΕΠΙΛΟΓΗΣ Αςκήςεισ με ψευδογλώςςα/ διάγραμμα ροήσ. Αντώνης Μαϊργιώτης

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

ςυςτιματα γραμμικϊν εξιςϊςεων

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

Ειςαγωγή ςτισ Συναρτήςεισ τησ PHP

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Αλγορικμικι & Ρρογραμματιςμόσ με Java

Μετατροπεσ Παραςταςεων

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

Τπολογιςτζσ Ι. Ε. Νιςταηάκθσ Αναπλ. Κακθγθτισ Σμιματοσ Φυςικισ

Εργαςτιριο Βάςεων Δεδομζνων

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Δομζσ Δεδομζνων Πίνακεσ

Αςφάλεια και Προςταςία Δεδομζνων

Visual C Express - Οδηγός Χρήσης

4 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ - for

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

Επαναλθπτικζσ Αςκιςεισ

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

343 Ειςαγωγι ςτον Προγραμματιςμό

ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ. e-class:

Modellus 4.01 Συ ντομοσ Οδηγο σ

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

(Α3 1 ) Σασ δίνεται το παρακάτω αλγορικμικό τμιμα

Ιδιότθτεσ πεδίων Γενικζσ.

343 Ειςαγωγι ςτον Προγραμματιςμό

= = 124

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

1. Κατέβαςμα του VirtueMart

Ενδεικτική Οργάνωςη Ενοτήτων. Α Σάξη. Διδ. 1 ΕΝΟΣΗΣΑ 1. 6 Ομαδοποίθςθ, Μοτίβα,

9 ΕΞΑΙΡΕΕΙ - EXCEPTIONS

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

ΦΥΕ 14 ΑΚΑΔ. ΕΤΟΣ Η ΕΡΓΑΣΙΑ. Ημερομηνία παράδοςησ: 12 Νοεμβρίου (Όλεσ οι αςκιςεισ βακμολογοφνται ιςοτίμωσ με 10 μονάδεσ θ κάκε μία)

ΥΡΟΝΣΙ ΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣ Η» ΔΙΑΓΩΝΙ ΜΑ ΑΕΠΠ

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

343 Ειςαγωγι ςτον Προγραμματιςμό

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

ΤΝΣΟΜΟ ΕΓΧΕΙΡΙΔΙΟ MATLAB

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών. (v )

int abs( int x ), επιστρέφει την απόλυτη τιμή του ακεραίου x Πχ abs( 11) ισούται με 11, abs(34) ισούται με 34 double fb( fabs( double x ), επιστρέφει

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

Ειςαγωγή ςτο Matlab Μζροσ Β. Κυριακίδης Ιωάννης 2011

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

Transcript:

Α.Σ.Ε.Ι. Θεςςαλονίκθσ Σμιμα Μθχανικϊν Πλθροφορικισ Σ.Ε. Εργαςτθριακζσ Αςκιςεισ Αρικμθτικισ Ανάλυςθσ ςτθ Γλϊςςα Προγραμματιςμοφ C Γουλιάνασ Κϊςτασ Επίκουροσ Κακθγθτισ Α.Σ.Ε.Ι.Θ Θεςςαλονίκη 2016 Email: gouliana@it.teithe.gr Ιςτοςελίδα : www.it.teithe.gr/~gouliana

Εργαστηριακές Ασκήσεις Αριθμητικής Ανάλσσης Γοσλιάνας Κώστας 2016 Περιετόμενα ΠΙΝΑΚΑ ΠΕΡΙΕΧΟΜΕΝΩΝ 1.1 Σσόλια... 6 1.2 Δνζωμάηωζη Απσείων... 6 1.3 Γήλωζη Ππογπάμμαηορ... 6 1.4 Γηλώζειρ Μεηαβληηών... 7 1.5 Δκηέλεζη Απιθμηηικών Ππάξεων ( Απιθμηηικοί Τελεζηέρ )... 9 1.6 Τελεζηήρ Ανηικαηάζηαζηρ... 10 1.7 Τελεζηέρ Αύξηζηρ και Μείωζηρ... 11 1.8 Λογικοί Τελεζηέρ ( Boolean )... 11 1.8.1 Πποηεπαιόηηηα Τελεζηών... 12 1.9 Eίζοδορ Γεδομένων - Δμθάνιζη Αποηελεζμάηων... 13 1.9.1 Δμθάνιζη Αποηελεζμάηων με Πποκαθοπιζμένη Μοπθή... 13 1.9.2 Δμθάνιζη Αποηελεζμάηων με ηη Μοπθή πος Δπιθςμεί ο Ππογπαμμαηιζηήρ... 14 1.9.3 Χαπακηήπερ Δλέγσος... 15 1.9.4 Δίζοδορ Γεδομένων με Πποκαθοπιζμένη Μοπθή... 16 1.10 Τελεζηέρ Σύγκπιζηρ... 16 1.11 Η Δνηολή if... 17 1.11.1 if...else... 17 1.12 Τεπμαηιζμόρ Ππογπάμμαηορ ( return )... 17 1.13 H ενηολή while... 17 1.14 Aνακύκλωζη με ηην ενηολή for... 18 1.15 Δζωηεπικέρ Σςναπηήζειρ ηηρ C... 19 1.16 Οπιζμόρ macro-δνηολών... 21 i

1 Βαςικό Ρεπερτόριο Εντολϊν τθσ C Σφποι Δεδομζνων Διάβαςμα Εμφάνιςθ Δεδομζνων While Do While For Functions Απλό if If else το Κεφάλαιο που ακολουκεί παρουςιάηονται οι βαςικζσ εντολζσ τθσ γλϊςςασ προγραμματιςμοφ C. Πρόβλθμα Να γίνει πρόγραμμα που να διαβάηει 2 ακζραιουσ αρικμοφσ και να υπολογίηει και εμφανίηει το άκροιςμά τουσ και το Μζςο Όρο. Αλγόρικμοσ 1) Διαβάηουμε 2 ακζραιουσ αρικμοφσ a, b. 2) Τπολογίηουμε το άκροιςμά τουσ sum και το Μζςο Όρο mo. 3) Εμφανίηουμε τισ τιμζσ των sum, mo. 2

Πρόγραμμα /* Άςκηςη 1.1 Υπολογιςμόσ Αθροίςματοσ Μέςου Όρου 2 Αριθμών */ #include <stdio.h> #include <stdlib.h> main() { int a, b, sum; } float mo; // // Διαβάζουμε τουσ 2 αριθμοφσ // printf("dose times gia ta a, b : "); scanf ("%d %d",&a, &b); sum = a + b; // Υπολογίζουμε το άθροιςμα sum = a + b mo = sum/2; // Υπολογίζουμε το Μέςο Όρο mo = sum/2 // // Εμφανίζουμε τισ τιμέσ των sum, mo // printf("sum = %d mo = %5.2f\n", sum, mo); system("pause"); Ζξοδοσ Προγράμματοσ 3

Δομι ενόσ Προγράμματοσ C Ζνα πρόγραμμα ςε C αποτελείται απ' τα παρακάτω τμιματα : /* Άςκηςη 1.1 Υπολογιςμόσ Αθροίςματοσ Μέςου Όρου 2 Αριθμών */ #include <stdio.h> #include <stdlib.h> main() Σμιμα Προγράμματοσ χόλιο Προαιρετικζσ Εντολζσ #include Διλωςθ Προγράμματοσ { Αρχι block Εντολϊν int a, b, sum; float mo; Δθλϊςεισ Μεταβλθτϊν // Εντολζσ // Διαβάζουμε τουσ 2 αριθμοφσ // printf("dose times gia ta a, b : "); scanf ("%d %d",&a, &b); Χωριςμζνεσ με ; sum = a + b; // Υπολογίζουμε το άθροιςμα sum = a + b mo = sum/2; // Υπολογίζουμε το Μέςο Όρο mo = sum/2 // // Εμφανίζουμε τισ τιμέσ των sum, mo // printf("sum = %d mo = %5.2f\n", sum, mo); system("pause"); } Σζλοσ block Εντολϊν 4

Αλγόρικμοσ Εντολζσ Εντολζσ /* Άςκηςη 1.1 Υπολογιςμόσ Αθροίςματοσ Μέςου Όρου 2 Αριθμών */ #include <stdio.h> #include <stdlib.h> main() int a, b, sum; float mo; printf("dose times gia ta a, b : "); scanf ("%d %d",&a, &b); sum = a + b; mo = sum/2; printf("sum = %d mo = %5.2f\n", sum, mo); system("pause"); Ενζργεια χόλια Προαιρετικζσ Εντολζσ #include Διλωςθ Προγράμματοσ Δθλϊςεισ Μεταβλθτϊν Εμφανίηουμε Μινυμα ςτθν Οκόνθ Διαβάηουμε τουσ 2 αρικμοφσ a, b Τπολογίηουμε το άκροιςμα sum = a + b Τπολογίηουμε το Μζςο Όρο mo = sum/2 Εμφανίηουμε τισ τιμζσ των sum, mo Παγϊνουμε τθν εμφάνιςθ των αποτελεςμάτων } Tζλοσ Προγράμματοσ 5

1.1 χόλια Σα ςχόλια γράφονται ςε οποιοδιποτε ςθμείο του προγράμματοσ και μπορεί να καταλαμβάνουν οςεςδιποτε γραμμζσ, αρκεί να υπάρχουν οι οριοκζτεσ /* και */. Η ςφνταξι τουσ γενικά είναι : /* <χόλια> */. Αν κζλουμε ςχόλια ςτο τζλοσ μιασ εντολισ, γράφουμε μετά τθν εντολι : // <χόλια>. 1.2 Ενςωμάτωςθ Αρχείων Η εντολι #include <ονομα_απσείος_c> ενςωματϊνει μόνο κατά τθ διάρκεια του χρόνου μεταγλϊττιςθσ τα περιεχόμενα του αρχείου <ονομα_αρχείου_c> ςτο ςθμείο που ζχουμε τθν εντολι #include. Οι ςυναρτιςεισ ειςόδου και εμφάνιςθσ δεδομζνων απαιτοφν τθν ενςωμάτωςθ του αρχείου που περιζχει τισ αντίςτοιχεσ ςυναρτιςεισ βιβλιοκικθσ scanf, printf, που είναι το <stdio.h>, το οποίο γίνεται με τθν εντολι : #include <stdio.h> ε οποιοδιποτε ςθμείο του Προγράμματοσ μποροφμε να παγϊςουμε τθν οκόνθ για να δοφμε τα αποτελζςματα με τθν εντολι system("pause");, θ οποία απαιτεί τθν ενςωμάτωςθ του αρχείου <stdlib.h> που περιζχει τθν αντίςτοιχθ ςυνάρτθςθ βιβλιοκικθσ, το οποίο γίνεται με τθν εντολι : #include <stdlib.h> 1.3 Διλωςθ Προγράμματοσ Η κφρια δομικι μονάδα ενόσ προγράμματοσ ςτθ C είναι θ ςυνάρτθςθ ( function ), θ οποία λειτουργεί ςαν τισ κλαςςικζσ functions άλλων γλωςςϊν ι τισ μεκόδουσ τθσ Java ( επιςτρζφοντασ 1 τιμι ι καμία ) και ςαν τα procedures ι subroutines. Η ςυνάρτθςθ που αποτελεί και το κφριο πρόγραμμα είναι θ ςυνάρτθςθ main(). Δε χρειάηεται να επιςτρζφει κάποιον τφπο οφτε ορίςματα, οπότε θ γενικι ςφνταξθ τθσ εντολισ μπορεί να είναι : main() { ςώμα... } 6

1.4 Δθλϊςεισ Μεταβλθτϊν Οι δθλϊςεισ μεταβλθτϊν γίνονται ςτθν αρχι κάκε ςυνάρτθςθσ ι ςτθν αρχι ενόσ block εντολϊν, μεταξφ { και } και γίνονται με τισ εντολζσ : int <κατάλογοσ_μεταβλθτϊν>; long int <κατάλογοσ_μεταβλθτϊν>; float <κατάλογοσ_μεταβλθτϊν>; double <κατάλογοσ_μεταβλθτϊν>; long double <κατάλογοσ_μεταβλθτϊν>; char <κατάλογοσ_μεταβλθτϊν>; H C υποςτθρίηει τουσ παρακάτω τφπουσ δεδομζνων : Σφποι Δεδομζνων Διλωςθ Είδοσ Δεδομζνων Χαρακτιρεσ char signed char unsigned char Η μεταβλθτι αποκθκεφει ζνα χαρακτιρα μεγζκουσ 8 bits Ακζραιοι short int signed short int unsigned short int signed int unsigned int long int signed long int unsigned long int Η μεταβλθτι αποκθκεφει ακεραίουσ αρικμοφσ διαφόρων μεγεκϊν, προςθμαςμζνουσ ι μθ προςθμαςμζνουσ. Αρικμοί Κινθτισ Τποδιαςτολισ ( floating point ) float double long double Η μεταβλθτι αποκθκεφει αρικμοφσ κινθτισ υποδιαςτολισ με mantissa και εκκζτθ διαφόρων μεγεκϊν απλισ ι διπλισ ακρίβειασ. 7

Παρατθριςεισ Μια μεταβλθτι μπορεί να περιζχει οποιοδιποτε κεφαλαίο ι πεηό χαρακτιρα, ζνα αρικμθτικό ψθφίο (0 μζχρι 9), και το χαρακτιρα κάτω παφλα (_). Ο πρϊτοσ χαρακτιρασ τθσ μεταβλθτισ δεν μπορεί να είναι αρικμθτικό ψθφίο ι κάτω παφλα. Σα ονόματα των μεταβλθτϊν είναι διαφορετικά με κεφαλαία ι μικρά. Π.χ. int a, b, sum; float mo; Με τθ διλωςθ μιασ μεταβλθτισ μποροφμε να τθσ δϊςουμε και αρχικι τιμι. Π. χ, float pi = 3.14159265358979; Όταν δίνουμε τιμι ςε μια μεταβλθτι τφπου long, ςτο τζλοσ τθσ τιμισ προςκζτουμε το χαρακτιρα L ι l. Π.χ. long int count, sum = 0L; Όταν δίνουμε τιμι ςε μια μεταβλθτι κινθτισ υποδιαςτολισ ( τφπου float ι double ), μπορεί να χρθςιμοποιθκεί θ εκκετικι μορφι, με το Ε κεφαλαίο ι μικρό. Π.χ. float x, y, z = 123.45e-6; double light_speed = 2.99792577389E8; τον επόμενο πίνακα φαίνονται το Μζγεκοσ και θ Κλίμακα Σιμϊν των διαφόρων τφπων μεταβλθτϊν. Σφποσ Μζγεκοσ Κλίμακα Σιμϊν unsigned char 8 bits 0 ζωσ 255 char 8 bits -128 ζωσ 127 unsigned int 16 bits 0 ζωσ 65,535 short int 16 bits -32,768 ζωσ 32,767 int 16 bits -32,768 ζωσ 32,767 unsigned long 32 bits 0 ζωσ 4,294,967,295 long 32 bits -2,147,483,648 ζωσ 2,147,483,647 float 32 bits 1.17549435 * (10^-38) ζωσ 3.40282347 * (10^+38) double 64 bits 2.2250738585072014 * (10^-308) ζωσ 1.7976931348623157 * (10^+308) long double 80 bits 3.4 * (10^-4932) ζωσ 1.1 * (10^4932) 8

1.5 Εκτζλεςθ Αρικμθτικϊν Πράξεων ( Αρικμθτικοί Σελεςτζσ ) Οι τελεςτζσ για τισ αρικμθτικζσ εκφράςεισ τθσ C είναι : Σελεςτήσ Πράξη + Πρόςκεςθ - Αφαίρεςθ * Πολλαπλαςιαςμόσ / Ακζραια Διαίρεςθ % Τπόλοιπο Διαίρεςθσ (mod) Παρατηρήςεισ τισ διάφορεσ πράξεισ μεταξφ των μεταβλθτϊν πρζπει να χρθςιμοποιοφμε τον ίδιο τφπο μεταβλθτϊν, διαφορετικά μπορεί να προκφψουν απρόςμενα αποτελζςματα. Οι κανόνεσ που ιςχφουν είναι : 1. Πράξεισ μεταξφ ακεραίων αρικμϊν παράγουν ακζραιο. 2. Πράξεισ μεταξφ πραγματικϊν αρικμϊν παράγουν πραγματικό αρικμό. 3. Πράξεισ μεταξφ ακεραίων και πραγματικϊν αρικμϊν παράγουν πραγματικό αρικμό. 4. Αν αποκθκεφςουμε το αποτζλεςμα μιασ πράξθσ μεταξφ ακεραίων αρικμϊν ςε μια πραγματικι μεταβλθτι, ο αρικμόσ γίνεται πραγματικόσ. 5. Αν αποκθκεφςουμε το αποτζλεςμα μιασ πράξθσ μεταξφ πραγματικϊν αρικμϊν ςε μια ακζραια μεταβλθτι, αποκόπτεται το δεκαδικό μζροσ. 6. Μποροφν να αποκθκευκοφν ακζραιεσ τιμζσ ςε μεταβλθτζσ τφπου char ( οπότε αποκθκεφεται ο ASCII κϊδικασ του αντίςτοιχου χαρακτιρα ) ι χαρακτιρεσ ςε ακζραιεσ μεταβλθτζσ. Π.χ. θ διλωςθ : char zero = 48; ζχει ςαν αποτζλεςμα να αποκθκευκεί ο χαρακτιρασ 0 με ASCII κϊδικα = 48 ςτθ μεταβλθτι χαρακτιρα zero. Η διλωςθ : int number = 0 ; 9

ζχει ςαν αποτζλεςμα να αποκθκευκεί ςτθν ακζραια μεταβλθτι number ο αρικμόσ 48 που είναι ο ASCII κϊδικασ του χαρακτιρα 0. Μποροφμε να μετατρζψουμε τα δεδομζνα ενόσ τφπου ςε δεδομζνα άλλου τφπου, χωρίσ να αλλάξουμε το περιεχόμενο τθσ μεταβλθτισ ςτθν οποία είναι αποκθκευμζνα ( διανομή - casting ). Π. χ. με τθν εντολι sum1 = (float)sum; Η τιμι τθσ ακζραιασ μεταβλθτισ sum μετατρζπεται ςε πραγματικό αρικμό και αποκθκεφεται ςτθν πραγματικι μεταβλθτι sum1, χωρίσ να αλλάξει το περιεχόμενο τθσ μεταβλθτισ sum. 1.6 Σελεςτισ Αντικατάςταςθσ Ο τελεςτζσ αντικατάςταςθσ ανάκεςθσ τιμισ ςε μια μεταβλθτι είναι το =. Π.χ. sum = a + b; Παρατηρήςεισ Με τθ χριςθ των Αρικμθτικϊν Σελεςτϊν μποροφμε να χρθςιμοποιιςουμε τουσ υντομευμζνουσ τελεςτζσ αντικατάςταςθσ, όπωσ φαίνονται ςτον επόμενο πίνακα: Σελεςτήσ Έκφραςη Αποτζλεςμα += x+=y Πρόςκεςθ του y ςτο x και το αποτζλεςμα ςτο x -= x-=y Αφαίρεςθ του y απ το x και το αποτζλεςμα ςτο x *= x*=y Πολλαπλαςιαςμόσ του y με το x και το αποτζλεςμα ςτο x /= x/=y Διαίρεςθ του x με το y και το αποτζλεςμα ςτο x %= x%=y Διαίρεςθ του x με το y και το Τπόλοιπο τθσ Διαίρεςθσ ςτο x 10

1.7 Σελεςτζσ Αφξθςθσ και Μείωςθσ Οι τελεςτζσ ++ και -- αυξάνουν ι μειϊνουν κατά 1 τθν τιμι τθσ ζκφραςθσ ςτθν οποία ενεργοφν. Π. χ. θ εντολι x++; ζχει ςαν αποτζλεςμα να αυξθκεί το x κατά 1 και ιςοδυναμεί με τθν εντολι x = x + 1; ενϊ θ εντολι x--; ζχει ςαν αποτζλεςμα να μειωκεί το x κατά 1 και ιςοδυναμεί με τθν εντολι x = x - 1; Παρατηρήςεισ Οι τελεςτζσ ++ και -- μποροφν να είναι πριν ι μετά τθν ζκφραςθ ςτθν οποία ενεργοφν. Αν οι τελεςτζσ ++ και -- είναι πριν τθν ζκφραςθ ςτθν οποία ενεργοφν, πρϊτα αυξάνεται ι μειϊνεται θ τιμι τθσ ζκφραςθσ και μετά χρθςιμοποιείται θ νζα τιμι. Π. χ. ςτισ εντολζσ a = 0; b = ++a; πρϊτα αυξάνεται το a κατά 1 ( οπότε γίνεται 1 ) και το b παίρνει τθν ίδια τιμι 1. Αν οι τελεςτζσ ++ και -- είναι μετά τθν ζκφραςθ ςτθν οποία ενεργοφν, πρϊτα χρθςιμοποιείται θ αρχικι τιμι τθσ ζκφραςθσ και μετά αυξάνεται ι μειϊνεται θ τιμι τθσ ζκφραςθσ κατά 1. Π. χ. ςτισ εντολζσ a = 0; b = a++; πρϊτα το b παίρνει τθν τιμι του a = 0, και μετά το a αυξάνεται κατά 1 ( οπότε γίνεται 1 ). 1.8 Λογικοί Σελεςτζσ ( Boolean ) Οι λογικοί τελεςτζσ ενεργοφν πάνω ςε αρικμθτικά δεδομζνα κεωρϊντασ κάκε μθ μθδενικι τιμι ςαν αλικεια ( true ) και επιςτρζφουν τθν τιμι 1, ενϊ τθν τιμι 0 ςαν ψευδι ( false ) και επιςτρζφουν τθν τιμι 0. Οι λογικοί τελεςτζσ είναι : 11

Σελεςτήσ Έκφραςη Αποτζλεςμα && <ζκφραςη1> && <ζκφραςη2> Λογικό ΚΑΙ ςτθν <ζκφραςη1> και <ζκφραςη2>. Επιςτρζφει 1, αν και οι 2 εκφράςεισ είναι αλθκείσ, διαφορετικά 0. <ζκφραςη1> <ζκφραςη2> Λογικό Ή ςτθν <ζκφραςη1> και <ζκφραςη2>. Επιςτρζφει 0, αν και οι 2 εκφράςεισ είναι ψευδείσ, διαφορετικά 1. Παρατηρήςεισ Κατά τθν εκτζλεςθ των λογικϊν πράξεων που εκτελοφνται από αριςτερά προσ τα δεξιά, δεν υπολογίηονται οι τιμζσ όλων των παραςτάςεων, αλλά μόνο όςων είναι απαραίτθτεσ. Π.χ. ςτθν ζκφραςθ Α && Β αν θ παράςταςθ Α είναι ψευδισ, δεν υπολογίηεται θ παράςταςθ Β, ενϊ ςτθν ζκφραςθ Α Β αν θ παράςταςθ Α είναι αλθκισ, δεν υπολογίηεται θ παράςταςθ Β. 1.8.1 Προτεραιότθτα Σελεςτϊν Όταν υπάρχουν παρενκζςεισ ςε μια ζκφραςθ, υπολογίηονται πρϊτα αυτζσ. Η προτεραιότθτα των τελεςτϊν κατά αφξουςα τάξθ φαίνεται ςτον επόμενο πίνακα : Σελεςτισ Είδοσ! Λογικό ΟΧΙ ++ -- Σελεςτζσ αφξθςθσ - μείωςθσ * / % Σελεςτζσ πολλαπλαςιαςμοφ - διαίρεςθσ + - Σελεςτζσ πρόςκεςθσ - αφαίρεςθσ. < > <= >= Σελεςτζσ ανιςότθτασ ==!= Σελεςτζσ ιςότθτασ && Λογικό ΚΑΙ Λογικό Ή?: Conditional. = += -= Καταχϊρθςθ. 12

1.9 Eίςοδοσ Δεδομζνων - Εμφάνιςθ Αποτελεςμάτων Η είςοδοσ δεδομζνων απ' το πλθκτρολόγιο και θ εμφάνιςθ των αποτελεςμάτων ςτθν οκόνθ μπορεί να γίνει με τισ ςυναρτιςεισ εντολζσ scanf ( scan formatted ) και printf (print formatted ). 1.9.1 Εμφάνιςθ Αποτελεςμάτων με Προκακοριςμζνθ Μορφι Η γενικι ςφνταξθ τθσ εντολισ printf είναι : printf ( μθνφματα - προςδιοριςτζσ, <όριςμα-1>, <όριςμα-2>,, <όριςμα-ν>)ϋ; τα διπλά ειςαγωγικά περιζχονται μθνφματα που κζλουμε να εμφανιςκοφν, κακϊσ και ειδικζσ οδθγίεσ για τθ μορφι που κα ζχουν τα περιεχόμενα των μεταβλθτϊν τισ τιμζσ των οποίων κα διαβάςουμε ι κα εμφανίςουμε. Οι οδθγίεσ αυτζσ ξεκινοφν με το χαρακτιρα %, ο οποίοσ ακολουκείται από κάποιουσ προςδιοριςτζσ, οι οποίοι μπορεί να είναι : Προςδιοριςτισ Είδοσ %d Εμφανίηει τθν τιμι τθσ ακζραιασ μεταβλθτισ ςτο δεκαδικό ςφςτθμα %f Εμφανίηει τθν τιμι τθσ μεταβλθτισ float ςτθ μορφι ddd.dddddd %lf %e Εμφανίηει τθν τιμι τθσ μεταβλθτισ double ςτθ μορφι ddd.dddddd Εμφανίηει τθν τιμι τθσ μεταβλθτισ float ι double ςε εκκετικι μορφι 1.ddddddΕ+ddd Παράδειγμα Με τισ παρακάτω εντολζσ για τθν εμφάνιςθ ενόσ ακεραίου ( μεταβλθτι i ) και του πραγματικοφ αρικμοφ 0.1234567 ςαν πραγματικό αρικμό απλισ και διπλισ ακριβείασ ( μεταβλθτζσ sp και dp ) και ςε εκκετικι μορφι ( μεταβλθτι sp ) : int i = 5; float sp = 0.1234567; double dp = 0.1234567; printf("i = %d, sp = %f, dp = %lf, fp = %e \n", i, sp, dp, sp); κα εμφανιςτεί : i = 5, sp = 0.123457, dp = 0.123457, fp = 1.234567e-001 13

Παρατηρήςεισ Tα δεδομζνα εκτυπϊνονται ςε προδιαγεγραμμζνθ μορφι. Οι ακζραιοι αρικμοί καταλαμβάνουν τόςεσ κζςεισ, όςεσ χρειάηονται. Οι πραγματικοί αρικμοί εκτυπϊνονται ςε δεκαδικι ι ςε εκκετικι μορφι. Οι αρικμοί απλισ και διπλισ ακρίβειασ καταλαμβάνουν όςεσ κζςεισ χρειάηονται, με 6 δεκαδικά ψθφία μετά τθν υποδιαςτολι. Aν ο αποκθκευμζνοσ αρικμόσ ζχει περιςςότερα από 6 δεκαδικά ψθφία, γίνεται ςτρογγυλοποίθςθ ςε 6 δεκαδικά ψθφία ( π.χ. ο αρικμόσ 0.1234567 με 7 δεκαδικά ψθφία εμφανίηεται ςαν 0.123457 ). Aν ο αποκθκευμζνοσ αρικμόσ δεν χρειάηεται και τισ 6 κζςεισ οι επί πλζον δεξιζσ κζςεισ ςυμπλθρϊνονται με μθδενικά. Οι αρικμοί απλισ και διπλισ ακρίβειασ όταν εμφανίηονται ςε εκκετικι μορφι ( κωδικόσ %e ) εμφανίηονται ςτθ μορφι 1.dddddde±<εκθέηηρ>, όπου τα δεκαδικά ψθφία τθσ mantissa καταλαμβάνουν 6 κζςεισ και ο εκκζτθσ παίρνει τιμζσ μζχρι το 999. 1.9.2 Εμφάνιςθ Αποτελεςμάτων με τθ Μορφι που Επικυμεί ο Προγραμματιςτισ Αν κζλουμε να εμφανιςτοφν τα δεδομζνα με τθ μορφι που κζλουμε, ςτον κωδικό τθσ εμφάνιςθσ, μεταξφ του ςυμβόλου % και του προςδιοριςτι, μποροφμε να βάλουμε ζναν ι δφο αρικμοφσ, με τουσ οποίουσ κακορίηουμε το μζγιςτο και τον αρικμό των δεκαδικϊν ψθφίων που κζλουμε να καταλαμβάνει ο αρικμόσ. Ζτςι, αν χρθςιμοποιιςουμε τισ εντολζσ : int i = 5; float sp = 0.1234567; double dp = 0.1234567; printf("i = %5d, sp = %16.12f, dp = %16.12lf\n",i, sp, dp); κα εμφανιςτεί : i = ^^^^5, sp = ^^0.123456701636, dp = ^^0.123456700000 Παρατηρήςεισ Tα δεδομζνα εκτυπϊνονται με τθ μορφι που επικυμεί ο χριςτθσ. Οι ακζραιοι αρικμοί καταλαμβάνουν τόςεσ κζςεισ, όςεσ και ο αρικμόσ που υπάρχει μεταξφ % και d. Αν δεν χρειάηονται όλεσ οι κζςεισ, ο αρικμόσ εμφανίηεται ςτοιχθμζνοσ δεξιά, ενϊ οι επί πλζον αριςτερζσ κζςεισ ςυμπλθρϊνονται με κενά (^^^^). 14

Οι αρικμοί απλισ και διπλισ ακρίβειασ καταλαμβάνουν ςυνολικά με τθν υποδιαςτολι τόςεσ κζςεισ όςο και ο πρϊτοσ αρικμόσ ( 16 ςτο παράδειγμα ), με τόςα δεκαδικά ψθφία μετά τθν υποδιαςτολι όςο και ο δεφτεροσ αρικμόσ ( 12 ςτο παράδειγμα ). Aν ο αποκθκευμζνοσ αρικμόσ ζχει περιςςότερα δεκαδικά ψθφία, γίνεται ςτρογγυλοποίθςθ. Aν ο αποκθκευμζνοσ αρικμόσ δεν χρειάηεται τόςα δεκαδικά ψθφία, οι επί πλζον δεξιζσ κζςεισ ςυμπλθρϊνονται με μθδενικά, ενϊ οι επί πλζον αριςτερζσ κζςεισ ςυμπλθρϊνονται με κενά ( π.χ. ^^0.123456700000 για τθ μεταβλθτι διπλισ ακρίβειασ, ενϊ θ μεταβλθτι απλισ ακρίβειασ εμφανίηει το ^^0.123456701636, επειδι ο αρικμόσ 0.1234567 αποκθκεφεται με ςφάλμα ). Αν κζλουμε να εμφανιςτοφν τα δεδομζνα με αριςτερι ςτοίχιςθ, ςτον κωδικό τθσ εμφάνιςθσ, πριν τον ι τουσ δφο αρικμοφσ, βάηουμε το -. Ζτςι, αν χρθςιμοποιιςουμε τισ εντολζσ : int i = 5; float sp = 0.1234567; double dp = 0.1234567; printf("i = %-5d, sp = %-16.12f, dp = %-16.12lf\n", i, sp, dp); κα εμφανιςτεί : i = 5^^^^, sp = 0.123456701636^^, dp = 0.123456700000^^ 1.9.3 Χαρακτιρεσ Ελζγχου τθν εντολι printf αν υπάρχει το /n πριν κλείςουν τα διπλά ειςαγωγικά, θ επόμενθ εκτφπωςθ κα γίνει ςτθν επόμενθ γραμμι. Αυτόσ ο χαρακτιρασ δεν εκτυπϊνεται, αλλά χρθςιμοποιείται ςαν "οδθγόσ" για το ποφ κα γίνει θ επόμενθ εκτφπωςθ και είναι ςαν χαρακτιρασ ελζγχου. Οι χαρακτιρεσ ελζγχου είναι οι παρακάτω : Χαρακτιρασ κανζνασ Αποτζλεςμα Εκτφπωςθ ςτθν ίδια γραμμι. \n Εκτφπωςθ ςτθν επόμενθ γραμμι. \t Εκτφπωςθ ςτθν ίδια γραμμι μετά ζνα tab. 15

1.9.4 Είςοδοσ Δεδομζνων με Προκακοριςμζνθ Μορφι Η γενικι ςφνταξθ τθσ εντολισ scanf είναι : scanf ("προσδιοριστές", &<όπιζμα-1>, &<όπιζμα-2>,, &<όπιζμα-ν>); τα διπλά ειςαγωγικά περιζχονται μθνφματα που κζλουμε να εμφανιςκοφν, κακϊσ και ειδικζσ οδθγίεσ για τθ μορφι που κα ζχουν τα περιεχόμενα των μεταβλθτϊν τισ τιμζσ των οποίων κα διαβάςουμε ι κα εμφανίςουμε. Οι οδθγίεσ αυτζσ ξεκινοφν με το χαρακτιρα %, ο οποίοσ ακολουκείται από κάποιουσ προςδιοριςτζσ, όπωσ ςτθν εντολι printf. Πριν από κάκε όριςμα υπάρχει το ςφμβολο & που ςθμαίνει ότι περνάμε τθ διεφκυνςθ τθσ μεταβλθτισ ςτθν οποία κα αποκθκευκοφν τα δεδομζνα που διαβάηονται απ το πλθκτρολόγιο. τθν εκτζλεςθ του προγράμματοσ κα πρζπει να δϊςουμε τόςεσ τιμζσ, όςα και τα ορίςματα ςτθν εντολι scanf, χωριςμζνεσ με κενό ι Enter. Αν κζλουμε να διαβαςτοφν τα δεδομζνα με τθ μορφι που κζλουμε, ςτον κωδικό τθσ ειςαγωγισ δεδομζνων, μεταξφ του ςυμβόλου % και του προςδιοριςτι, μποροφμε να βάλουμε ζναν ι δφο αρικμοφσ, με τουσ οποίουσ κακορίηουμε το μζγιςτο και τον αρικμό των δεκαδικϊν ψθφίων που κζλουμε να καταλαμβάνει ο αρικμόσ που κα ειςάγουμε. 1.10 Σελεςτζσ φγκριςθσ Η C διακζτει τουσ παρακάτω Σελεςτζσ φγκριςθσ : Σελεςτισ φμβολο Πλθκτρολογίου <= < == = >= > 16

1.11 Η Εντολι if Με τθν εντολι if ελζγχεται κάποια ςυνκικθ και αν ιςχφει, εκτελείται μια εντολι ι εντολζσ. το παράδειγμα χρθςιμοποιείται για τον τερματιςμό των επαναλιψεων. Η γενικι τθσ ςφνταξθ είναι : if (<ςυνκικθ>) <εντολι>; if (<ςυνκικθ>) { <εντολζσ>; } 1.11.1 if...else Με τθ χριςθ του if else, μποροφμε να εκτελζςουμε ζνα block εντολϊν, ανάλογα με το αν ιςχφει κάποια ςυνκικθ ι όχι. Η ςφνταξι του είναι : if (<ςυνκικθ>) <εντολι>; ι { <εντολζσ>; } else <εντολι>; ι { <εντολζσ>; } 1.12 Σερματιςμόσ Προγράμματοσ ( return ) Σο πρόγραμμα τερματίηει όταν τελειϊςουν οι εντολζσ με το τελευταίο }, όταν θ κφρια ςυνάρτθςθ main() δθλϊνεται χωρίσ τφπο ι με τφπο void ι με τθν εντολι return. Η εντολι return μπορεί να εμφανίηεται ςε πολλά ςθμεία του προγράμματοσ. 1.13 H εντολι while Με το while εκτελοφνται κάποιεσ εντολζσ για όςο μια ςυνκικθ είναι αλθκισ. Η ςφνταξθ τθσ εντολισ είναι : while ( <ςυνκικθ> ) <εντολι>; while ( <ςυνκικθ> ) { εντολζσ } 17

Παρατηρήςεισ Ο ζλεγχοσ τθσ ςυνκικθσ γίνεται πριν τθν εκτζλεςθ τθσ εντολισ ι των εντολϊν. Αν θ ςυνκικθ είναι εξ αρχισ ψευδισ, οι εντολζσ δεν εκτελοφνται καμιά φορά. Οι εντολζσ εκτελοφνται για όςο θ ςυνκικθ είναι αλθκισ και παφουν να εκτελοφνται, όταν θ ςυνκικθ γίνει ψευδισ. Η μεταβλθτι που ελζγχεται ςτθ ςυνκικθ κα πρζπει να ζχει τιμι πριν το while, για να εκτελεςτοφν οι εντολζσ τουλάχιςτον μια φορά και να αλλάηει τιμι μζςα ςτο while, για να τερματίςει ο βρόχοσ. Ο ζλεγχοσ τθσ ςυνκικθσ μπορεί να γίνεται μετά τθν εκτζλεςθ των εντολϊν του while, οπότε οι εντολζσ εκτελοφνται τουλάχιςτον μια φορά. αυτι τθν περίπτωςθ, θ ςφνταξθ τθσ εντολισ while που αποτελεί μια μορφι τθσ εντολισ repeat until κα είναι : do <εντολι> while ( <ςυνκικθ> ); do { εντολζσ } while ( <ςυνκικθ> ); 1.14 Aνακφκλωςθ με τθν εντολι for Όταν ξζρουμε τον αρικμό των επαναλιψεων, χρθςιμοποιοφμε τθν εντολι for, θ οποία μπορεί να εμφανιςτεί, ςτθ γενικι τθσ μορφι, με τoν παρακάτω τφπο : for ( < ζκφραςθ1>;< ζκφραςθ2>; < ζκφραςθ3> ) εντολι; for ( < ζκφραςθ1>;< ζκφραςθ2>; < ζκφραςθ3> ) { εντολζσ; } 18

Παρατηρήςεισ Η < ζκφραςθ1> υπολογίηεται πριν τθν πρϊτθ επανάλθψθ. Μετά από κάκε επανάλθψθ υπολογίηεται θ < ζκφραςθ3>. Οι εντολζσ εκτελοφνται για όςο θ <ζκφραςθ2> είναι αλθκισ ( ζχει τιμι 1 ) και μζχρι να γίνει ψευδισ ( τιμι 0 ). Ο ζλεγχοσ για το αν ιςχφει θ <ζκφραςθ2> γίνεται πριν τθν εκτζλεςθ των εντολϊν. Μποροφν να χρθςιμοποιθκοφν οι ςυντομευμζνοι τελεςτζσ. Π.χ. for (x = a; x <= b; x +=h) Μποροφν να χρθςιμοποιθκοφν οι τελεςτζσ αφξθςθσ και μείωςθσ. Π.χ. θ εντολι for (x = 1; x <= 10; x ++) ιςοδυναμεί με τθν εντολι for (x = 1; x <= 10; x = x + 1) Η <ζκφραςθ1>, θ <ζκφραςθ2> και θ <ζκφραςθ3> μποροφν να παραλειφκοφν, αρκεί να υπάρχουν τα ;. Π.χ. θ εντολι for (;;) αποτελεί ζναν ατζρμονο βρόχο. 1.15 Εςωτερικζσ υναρτιςεισ τθσ C Η C δε διακζτει τον τελεςτι φψωςθσ ςε δφναμθ, διακζτει όμωσ το δικό τθσ ρεπερτόριο εςωτερικϊν ςυναρτιςεων (intrinsic functions), για τον υπολογιςμό των ςτοιχειωδϊν Μακθματικϊν και Σριγωνομετρικϊν υναρτιςεων, μία εκ των οποίων υπολογίηει τθν φψωςθ ςε δφναμθ. Οι ςυναρτιςεισ αυτζσ δθλϊνονται ςτθν αρχι του προγράμματοσ ι του block εντολϊν. Π.χ. θ ςυνάρτθςθ φψωςθσ ςε δφναμθ κα δθλωκεί ςαν float pow(float x, int y); y και επιςτρζφει τθν φψωςθ του x ςτθν δφναμθ y ( x ), με x 0, αν y = κλάςμα και x 0, αν y 0. το προθγοφμενο παράδειγμα, το x ζχει δθλωκεί πραγματικό ( float ) ενϊ το y ακζραιο ( int ). 19

Ο Επόμενοσ πίνακασ παρουςιάηει τισ πιο ςυνθκιςμζνεσ εςωτερικζσ ςυναρτιςεισ με το όνομά τουσ, τθ χριςθ τουσ και το αποτζλεςμα που επιςτρζφουν : υνάρτθςθ Διλωςθ Αποτζλεςμα acos double acos(double x); Επιςτρζφει τo τo Σόξο υνθμιτόνου του x μεταξφ 0 και ( 1 x 1 ) asin double asin(double x); Επιςτρζφει τo τo Σόξο Ημιτόνου του x μεταξφ και 2 ( 1 x 1 ) 2 atan double atan(double x); Επιςτρζφει τo τo Σόξο Εφαπτομζνθσ του x μεταξφ και 2 2 cos double cos(double x); Επιςτρζφει τo υνθμίτονο του x cosh double cosh(double x); Επιςτρζφει τo Τπερβολικό υνθμίτονο του x sin double sin(double x); Επιςτρζφει τo Ημίτονο του x sinh double sinh(double x); Επιςτρζφει τo Τπερβολικό Ημίτονο του x tan double tan(double x); Επιςτρζφει τo Σόξο Εφαπτομζνθσ του x tanh double tanh(double x); Επιςτρζφει τθν Τπερβολικι Εφαπτομζνθ του x exp double exp(double x); x Επιςτρζφει τθν Eκκετικι υνάρτθςθ ( e ) frexp ldexp double frexp(double x, int *exponent); double ldexp(double x, int exponent); Αναλφει το x ςε mantissa και εκκζτθ, επιςτρζφοντασ ςτθ ςυνάρτθςθ τθ mantissa και ςτθν ακζραια μεταβλθτι exponent τον εκκζτθ ( exp onent x mantissa 2 ) Επιςτρζφει το γινόμενο του x * το 2 ςτθν δφναμθ exp onent exponent ( x 2 ) log double log(double x); Επιςτρζφει τo Φυςικό Λογάρικμο του x (log e x ). log10 double log10(double x); Επιςτρζφει τo Δεκαδικό Λογάρικμο του x (log 10 x ). modf double modf(double x, double *integer); pow double pow(double x, double y); Επιςτρζφει τo δεκαδικό μζροσ ενόσ δεκαδικοφ αρικμοφ, ενϊ το ακζραιο μζροσ επιςτρζφει ςτθ μεταβλθτι integer y Επιςτρζφει τθν φψωςθ του x ςτθν δφναμθ y ( x ), με x 0, αν y = κλάςμα και x 0, αν y 0 sqrt double sqrt(double x); Επιςτρζφει τθν Σετραγωνικι Ρίηα.του x ( x ), με x 0 ceil double ceil(double x); Επιςτρζφει το μικρότερο ακζραιο του x abs int abs(int x); Επιςτρζφει τθν Aπόλυτθ Σιμι του ακεραίου x ( x ) fabs double fabs(double x); Επιςτρζφει τθν Aπόλυτθ Σιμι του πραγματικοφ x floor double floor(double x); Επιςτρζφει το μεγαλφτερο ακζραιο του x fmod double fmod (double x, double y); Επιςτρζφει το υπόλοιπο τθσ διαίρεςθσ του x με το y. Αν y = 0, επιςτρζφει 0 ι μινυμα λάκουσ 20

1.16 Οριςμόσ macro-εντολϊν 2 Η ςυνάρτθςθ y f(x) 1 x μπορεί να δθλωκεί ςτθν αρχι του προγράμματοσ με τθ διλωςθ #define. Η διλωςι τθσ κα ζχει τθ μορφι : #define f(x) (1+x*x) Ο προεπεξεργαςτισ τθσ C, όπου βρει μια ζκφραςθ που περιζχει το f(x), κα αντικαταςτιςει τθν τιμι του x ςτθν ζκφραςθ. Οι δθλϊςεισ macro-εντολϊν ζχουν τθν παρακάτω γενικι μορφι : #define <Όνομα_function>(Συπικζσ_Παράμετροι) (<Αρικμθτικι_Ζκφραςθ>) όπου : <Όνομα_function> = Mεταβλθτι (Σφπου integer ι real ). (Συπικζσ_Παράμετροι) = Mεταβλθτζσ. <Αρικμθτικι_Ζκφραςθ> = Aρικμθτικι Ζκφραςθ ωσ προσ τισ παραμζτρουσ. Παρατηρήςεισ Η υνάρτθςθ - Εντολι πρζπει να τοποκετείται ςτθν αρχι του προγράμματοσ. Μπορεί να υπάρχει οποιοςδιποτε αρικμόσ Συπικϊν Παραμζτρων. Οι παρενκζςεισ ςτον οριςμό τθσ υνάρτθςθσ - Εντολισ είναι υποχρεωτικζσ. Σο όνομα τθσ ςυνάρτθςθσ πρζπει να ακολουκεί τουσ κανόνεσ των μεταβλθτϊν. Οι Πραγματικζσ Παράμετροι μπορεί να είναι ςτακερζσ ι μεταβλθτζσ. Η ςυνάρτθςθ ςε κάκε κλιςθ τθσ δίνει μια τιμι. Ο αρικμόσ, ο τφποσ και θ ςειρά των Πραγματικϊν Παραμζτρων ςτθ χριςθ τθσ ςυνάρτθςθσ ςτο κυρίωσ πρόγραμμα πρζπει να ςυμφωνεί με τον αρικμό, τον τφπο και τθ ςειρά των Συπικϊν Παραμζτρων ςτον Οριςμό τθσ ςυνάρτθςθσ. Σα ονόματα των Πραγματικϊν Παραμζτρων μπορεί να είναι ι να μθν είναι ίδια με τα ονόματα των Συπικϊν Παραμζτρων. 21