Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

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

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

Περιεχόμενα. Πρόλογος... 21

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

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

Περιεχόμενα. Πρόλογος... 17

ιαφάνειες παρουσίασης #6 (β)

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

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

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

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

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

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

Ενδεικτική περιγραφή μαθήματος

Μεταβλητές, σταθερές, τύποι και δηλώσεις. Εντολές αντικατάστασης, τελεστές και παραστάσεις. Εμβέλεια και χρόνος ζωής μεταβλητών

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

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

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Κεφάλαιο 1 Εισαγωγή στη C

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

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

Γενικά περί υπολογιστών

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

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

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

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

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

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

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

Περί Προγραμματισμού και Γλωσσών Προγραμματισμού

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμό για ΗΜΥ

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Αλγόριθμοι. Χρυσόστομος Στύλιος. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής. Δομές Δεδομένων & Αλγόριθμοι 1

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Μεθόδων Επίλυσης Προβλημάτων

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

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

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

Αντικειµενοστρεφής Προγραµµατισµός

Συναρτήσεις και διαδικασίες

4 C Θεωρία και Πράξη. 6.8 Συναρτήσεις και στατικές μεταβλητές Αναδρομικές συναρτήσεις 119

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

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

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

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Transcript:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

>_ ΣΩΛΗΝΩΣΕΙΣ (PIPES) +- Τροφοδότηση της δεύτερης εντολής με το αποτέλεσμα (έξοδος) της πρώτης. Αντί να χρησιμοποιούμε προσωρινές μεταβλητές μεταφέρουμε το αποτέλεσμα της προηγουμένης εντολής στην επομένη. +- ls /etc more +- cat /etc/passwd tail -n 1

>_ ΚΑΝΟΝΙΚΕΣ ΕΚΦΡΑΣΕΙΣ +- Οι κανονικές εκφράσεις χρησιμοποιούνται από διάφορες εντολές στο unix και κυρίως από την sed, την grep και την awk, οι οποίες έχουν να κάνουν με την επεξεργασία συμβολοσειρών. +- [...] Οτιδήποτε περιέχεται στις αγκύλές +-. Ταιριάζει με οποιονδήποτε χαρακτήρα +- Συμβολοσειρά $ Ταιριάζει patterns που τελειώνουν με τη Συμβολοσειρά +- ^Συμβολοσειρά Ταιριάζει patterns που αρχίζουν με τη Συμβολοσειρά +- /^$/ Ταιριάζει κενές γραμμές +- \ Ακυρώνει την ειδική σημασία των μεταχαρακτήρων.

>_ SED (1/7) +- Προκειμένου να αυτοματοποιήσουμε τις αλλαγές στα περιεχόμενα ενός αρχείου, κάνουμε χρήση κάποιων μηχανισμών. Ένας από αυτούς είναι η εντολή sed. +- Όπως είπαμε και πριν η sed υποστηρίζει κανονικές εκφράσεις και επίσης υποστηρίζει εντολές: +- Αντικατάστασης +- Διαγραφής +- Προσάρτησης +- Παρεμβολής και +- Αλλαγής

>_ SED (2/7) +- Όσον αφορά τη δυνατότητα της αντικατάστασης κειμένου σε ένα αρχείο η sed συντάσσεται ως εξής: sed [επιλογές] s/παλιό κείµενο/νέο κείµενο/[παράµετροι] π.χ sed `s/palio/neo/` keimeno.txt +- Επιλογές Ø [g] Εφαρμογή της αντικατάστασης σε όλες τις εμφανίσεις του κειμένου που αντικαθίσταται (global) π.χ sed `s/palio/neo/g` keimeno.txt Ø [αριθμός] Εφαρμογή της αντικατάστασης στη nοστή εμφάνιση ανά γραμμή π.χ sed `s/palio/neo/3` keimeno.txt Ø [w] Εγγραφή των αλλαγών σε αρχείο Ø [p] Εμφάνιση στην οθόνη των γραμμών που αλλάχτηκαν Ø [i] Αγνόηση για πεζά-κεφαλαία π.χ sed `s/palio/neo/3pw` keimeno.txt

>_ SED (3/7) +- Επιλογές: +- -n Δεν εμφανίζει το αλλαγμένο αρχείο στην οθόνη (η sed από μόνη της εκτελεί μία cat μετά την ολοκλήρωσή της) π.χ sed -n `s/palio/neo/g` keimeno.txt +- -e Εκτέλεση περισσότερων αλλαγών π.χ sed -e `s/palio/neo/g` e`s/palio1/neo1/g` keimeno.txt +- -I Αποθήκευση των όποιων αλλαγών +- Σημαντικό! Μπορούμε να επιλέξουμε σε ποιες γραμμές θέλουμε να εφαρμοστεί η αντικατάσταση. π.χ sed -n `s/palio/neo/3` keimeno.txt +- Επίσης το σύμβολο & λαμβάνει την τιμή του νέου κειμένου π.χ sed -n `new_line@&/g` keimeno.txt

>_ SED (4/7) +- Άλλα παραδείγματα sed s/^*a -Z][1-4+*//g keimeno.txt sed s/^.txt$/removed/g keimeno.txt sed 10,90s/^*^t+.* \.txt$/removed/g keimeno.txt sed -i s/ \(^[0-9]\{2,3\}\)*/code removed/1

>_ SED (5/7) +- Μία άλλη δυνατότητα της sed εκτός της αντικατάστασης είναι και η διαγραφή. Στην περίπτωση της διαγραφής έχουμε την εξής σύνταξη: +- sed /keimeno/d π.χ sed /skoupidia.txt/d` +- Πώς διαγράφουμε συγκεκριμένες γραμμές +- n,kd Διαγραφή των γραμμών από την n έως την k +- n,k!d Διαγραφή όλων των γραμμών εκτός των n με k +- n,$ Διαγραφή όλων των γραμμών από το n και κάτω π.χ +- sed 5,10d keimeno.txt +- sed 30,$ keimeno.txt +- sed /^$/d keimeno.txt +- sed "/$kati/d keimeno.txt

>_ SED (6/7) +- Μιλήσαμε για την αντικατάσταση και τη διαγραφή. Όμως η sed μας παρέχει επιπλέον προσάρτηση, παρεμβολή κειμένου και αλλαγή ολόκληρης γραμμής. Για να επιτύχουμε αυτές τις λειτουργίες, χρησιμοποιούμε τη σύνταξη: +- sed / palio/διακόπτης\neo +- Διακόπτες: +- a\ Προσάρτηση του νέου κειμένου στην επόμενη γραμμή από το παλιό +- i\ Παρεμβολή του νέου κειμένου στην πάνω γραμμή από το παλιό +- c\ Αλλαγή της γραμμής που περιέχεται το παλιό με το νέο

>_ WHY IS THE C PROGRAMMING LANGUAGE STILL USED? +- The UNIX operating system s development started in 1969, and its code was rewritten in C in 1972 +- Linux is also written mostly in C, with some parts in assembly +- Microsoft s Windows kernel is developed mostly in C, with some parts in assembly language. +- Mac computers are also powered by C, since the macos kernel (C, C++, Objective-C, Swift) is written mostly in C. +- ios, Android and Windows Phone kernels are also written in C. +- 3D games are created with applications that are generally written in C (Unity) and C++ (Unity, Unreal Engine). +- Embedded system s cores are usually written in C. +- Oracle database development started in 1977, and its code was rewritten from assembly to C in 1983

>_ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ C +- Γράφουμε τα προγράμματά μας σε C (πηγαίος κώδικας σε αρχεία με κατάληξη.c). +- Ο μεταγλωττιστής (compiler) είναι ένα πρόγραμμα που μετατρέπει τα πηγαία αρχεία σε αντικειμενικά αρχεία (object files κατάληξη.ο), τα οποία είναι διατυπωμένα στη γλώσσα μηχανής του επεξεργαστή του υπολογιστή μας. +- Τα αντικειμενικά αρχεία δεν είναι άμεσα εκτελέσιμα από τον επεξεργαστή, εκτός του ότι το καθένα από αυτά μπορεί να μην συνιστά ένα πλήρες πρόγραμμα. +- Ο συνδέτης (linker) μετατρέπει ένα σύνολο από αντικειμενικά αρχεία, καθώς και τυχόν βιβλιοθήκες (libraries) που θα του δοθούν, σ ένα εκτελέσιμο αρχείο (executable file), το οποίο επίσης είναι διατυπωμένο σε γλώσσα μηχανής, αλλά είναι άμεσα εκτελέσιμο από τον επεξεργαστή.

>_ ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ GCC (1/2) +- O Μεταγλωττιστής gcc της C, αποτελεί πρόγραμμα ελευθέρου λογισμικού (GNU Γενική Άδεια Δημόσιας Χρήσης), σε λειτουργικό σύστημα Unix. (θα χρησιμοποιηθεί στο μάθημα) +- gcc myprog.c Μεταγλώττιση του πηγαίου προγράμματος myprog.c σε αντικειμενικό αρχείο και κλήση του συνετή για την κατασκευή του εκτελέσιμου προγράμματος a.out +- gcc -o myprog myprog.c Μεταγλώττιση του πηγαίου προγράμματος myprog.c σε αντικειμενικό αρχείο και κλήση του συνδέτη για την κατασκευή του εκτελέσιμου προγράμματος myprog +- gcc -c myprog.c Μόνο μεταγλώττιση του πηγαίου προγράμματος myprog.c στο αντικειμενικό αρχείο myprog.o +- gcc -o prog myprog1.o myprog2.o lm Μόνο κλήση του συνδέτη για κατασκευή του εκτελέσιμου προγράμματος prog από τα αντικειμενικά αρχεία myprog1.o και myprog2.o και τη μαθηματική βιβλιοθήκη (m)

>_ ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ GCC (2/2) +- Άλλες ενδιαφέρουσες επιλογές του gcc, εκτός από τις -o, -c και -l: +- Για να κληθεί μόνο ο προεπεξεργαστής, -E +- Για να παραχθεί το αποτέλεσμα σε γλώσσα assembly, -S

>_ ΕΚΤΕΛΕΣΙΜΑ ΑΡΧΕΙΑ ΣΤΟ LINUX +-Τα εκτελέσιμα αρχεία του Linux είτε αποτελούν standalone προγράμματα (συνήθως χωρίς κατάληξη) είτε βιβλιοθήκες (shared objects με κατάληξη.so) ονομάζονται ELF (Executable and Linking Format) files.

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΒΙΒΛΙΟΘΗΚΕΣ ΤΗΣ C +- Η γραμμη #include <stdio.h> είναι οδηγία προς τον προεπεξεργαστη της C να συμπεριλάβει σ εκείνο το σημείο τα περιεχόμενα του αρχείου επικεφαλίδας (header file) stdio.h, το οποίο περιέχει χρήσιμες δηλώσεις για τις συναρτήσεις εισόδου/εξό δου. +- Υπάρχουν όμως και άλλες βιβλιοθήκες, πχ: Το #include <math.h> χρειάζεται όταν χρησιμοποιείται στο πρόγραμμα η μαθηματικη συνάρτηση sqrt, για την εύρεση τετραγωνικής ρίζας, όπως και άλλες έ τοιμες συναρτήσεις. +- Ο όρος libc χρησιμοποιείται ως συντομογραφία για να περιγράψει την πρότυπη βιβλιοθήκη της C (standard C library) προσφέρει macros, ορισμούς τύπων (type definitions), μεθόδους για επεξεργασία συμβολοσειρών (string handling), μαθηματικούς υπολογισμούς, επεξεργασία εισόδου/εξόδου δεδομένων, μνήμης και services του λειτουργικού συστήματος.

>_ SYSTEM CALLS +- Οι διεργασίες χρηστών δεν μπορούν να πραγματοποιήσουν privileged ενέργειες. +- Οι διεργασίες χρηστών πρέπει να χρησιμοποιήσουν το λειτουργικό σύστημα ώστε αυτό να εκτελεί πάντα για λογαριασμό τους τις privileged ενέργειες. Αυτό επιτυγχάνεται μέσω των System Calls. +- Τα system call (περίπου 190) αποτελούν θεμελιώδη διεπαφή μεταξύ των εφαρμογών και του λειτουργικού συστήματος.

>_ LIBC και SYSTEM CALLS (1/2) +- Για το παράδειγμα εκτέλεσης της printf("hello World \n");

>_ LIBC και SYSTEM CALLS (2/2) +- Κάθε I/O System Call αντιπροσωπεύεται τουλάχιστον από μια αντίστοιχη I/O μέθοδο της LIBC System Calls open close read write lseek Library calls fopen fclose fread, getchar, scanf, fscanf, getc, fgetc, gets, fgets fwrite, putchar, printf, fprintf putc, fputc, puts, fputs fseek

>_ ΜΕΤΑΒΛΗΤΕΣ ΣΤΗ C +- Όπως κάθε γλώσσα προγραμματισμου υψηλου επιπέδου, έτσι και η C υποστηρί ζουν την ύπαρξη μεταβλητών (variables). Οι μεταβλητές που υποστηρίζονται στη C είναι: +- Για ακεραίους: short int ή short (συνήθως 2 bytes) int (συνήθως 4, σπανιότερα 2 ή 8, bytes, ανάλογα με το μέγεθος λέξης του επεξεργαστη ) long int ή long (συνήθως 4, μερικές φορές 8, bytes) long long int ή long long (συνήθως 8 bytes) +- Για χαρακτήρες, αλλα και ακεραίους char (1 byte) +- Για πραγματικούς αριθμούς (κινητής υποδιαστολής) float (απλής ακρίβειας, συνήθως 4 bytes) double (διπλής ακρίβειας, συνήθως 8 bytes) long double (εκτεταμένης ακρίβειας, συνήθως 16 bytes)

>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ ΣΤΗ C (1/4) if(boolean_έκφραση) { /* οι εντολές θα εκτελεστούν αν είναι αληθής η συνθήκη*/ εντολή_1; εντολή_2; : εντολή_n; } else { /* οι εντολές θα εκτελεστούν αν είναι ψευδής η συνθήκη*/ εντολή_1; εντολή_2; : εντολή_n; }

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ ΣΤΗ C (2/4) if(boolean_έκφραση_1) { /* οι εντολές θα εκτελεστούν αν είναι αληθής η 1 η συνθήκη*/ εντολή_1; : εντολή_n; } else if (boolean_έκφραση_2){ /* οι εντολές θα εκτελεστούν αν είναι αληθής η 2 η συνθήκη*/ εντολή_1; : εντολή_n; } else { /* οι εντολές θα εκτελεστούν αν είναι ψευδής η 1 η και 2 η συνθήκη*/ εντολή_1; : εντολή_n; }

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ ΣΤΗ C (3/4) if(boolean_έκφραση_1) { /* οι εντολές θα εκτελεστούν αν είναι αληθής η 1 η συνθήκη*/ if(boolean_έκφραση_2) { /* οι εντολές θα εκτελεστούν αν είναι αληθής η 2 η συνθήκη*/ εντολή_1; : εντολή_n; else { /* οι εντολές θα εκτελεστούν αν είναι ψευδής η 2 η συνθήκη*/ εντολή_1; : εντολή_n; } else { /* οι εντολές θα εκτελεστούν αν είναι ψευδής η 1 η συνθήκη*/ εντολή_2; : εντολή_n; }

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ ΣΤΗ C (4/4) switch(έκφραση) { case σταθερά-έκφραση_1 : εντολή_1; break; case σταθερά-έκφραση_2 : εντολή_1; break; : case σταθερά-έκφραση_n : εντολή_1; break; default : εντολή_1; }

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ ΣΤΗ C (1/3) while(συνθήκη) { εντολή_1; : εντολή_n; }

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ ΣΤΗ C (2/3) for ( αρχικοποίηση ; συνθήκη ; προσαύξηση) εντολή_1; : εντολή_n; }

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ ΣΤΗ C (3/3) do { εντολή_1; : εντολή_n; } while(συνθήκη);

>_ ΠΑΡΑΔΕΙΓΜΑ

>_ ΑΣΚΗΣΗ +-Πότε είναι το Ορθόδοξο Πάσχα ;

>_ ΣΥΜΒΟΛΟΣΕΙΡΕΣ ΣΤΗ C (3/3) +- Οι συμβολοσειρές στη C είναι μονοδιάστατοι πίνακες χαρακτήρων που τελειώνουν με τον χαρακτήρα '\0' (null character). char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; char greeting[] = "Hello";

>_ ΠΑΡΑΔΕΙΓΜΑ

Beware of bugs in the above code[s]; I have only proved it correct, not tried it Donald Ervin Knuth