Υλοποίηση #include <stdio.h> main() float m, i;/* Intses */ printf("doste tin apostasi se metra:\n"); scanf("%f",&m); i = m* 39.3700787; printf("h apostasi se intses einai %10.5f \n",i); Εκτέλεση: Doste tin apostasi se metra: 4.442 H apostasi se intses einai 174.88189
Εκτέλεση: Doste ta miki twn 2 pleurwn: 4.32 2.23 To emvadon einai = 9.63360 H perimetros einai = 13.10000 Υλοποίηση #include <stdio.h> main() float a, b, e, p; printf("\ndoste ta miki twn 2 pleurwn:"); scanf("%f%f",&a, &b); e = a * b; p = 2 * (a + b); printf("\nto emvadon einai = %10.5f", e); printf("\nh perimetros einai = %10.5f", p);
Υλοποίηση με ορίσματα ακεραίους #include <stdio.h> /*Ektypose ton pinaka twn thermokrasiwn Fahrenheit-Celsius gia Fahrenheit = 0, 20, 40,..., 300*/ main() int fahr, celsius; int lower, upper, step; /*Orismos twn metavlitwn*/ lower=0; upper=300; step=20;
Υλοποίηση με ορίσματα ακεραίους ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ /*Arxikopoiisi tis fahr*/ fahr = lower; /*Ektuposi epikefalidas*/ printf("fahrenheit\tcelsius\n"); while(fahr<=upper) /*Metatropi apo Fahrenheit se Celsius*/ celsius = 5*(fahr-32)/9; /*Ektuposi pinaka*/ printf("%d\t\t%d\n", fahr, celsius); fahr += step; Fahrenheit Celsius 0-17 20-6 40 4 60 15 80 26 100 37 120 48 140 60 160 71 180 82 200 93 220 104 240 115 260 126 280 137 300 148
Υλοποίηση με ορίσματα πραγματικούς #include <stdio.h> /*Ektypose ton pinaka twn thermokrasiwn Fahrenheit-Celsius gia Fahrenheit = 0, 20, 40,..., 300*/ main() float fahr, celsius; int lower, upper, step; /*Orismos twn metavlitwn*/ lower=0; upper=300; step=20; /*Arxikopoiisi tis fahr*/ fahr = lower;
Υλοποίηση με ορίσματα πραγματικούς ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ /*Ektuposi epikefalidas*/ printf("fahrenheit\tcelsius\n"); while(fahr<=upper) /*Metatropi apo Fahrenheit se Celsius*/ celsius = 5.0/9.0*(fahr-32.0); /*Ektuposi pinaka*/ printf("%5.2f\t\t%5.2f\n", fahr, celsius); fahr += step; Fahrenheit Celsius 0.00-17.78 20.00-6.67 40.00 4.44 60.00 15.56 80.00 26.67 100.00 37.78 120.00 48.89 140.00 60.00 160.00 71.11 180.00 82.22 200.00 93.33 220.00 104.44 240.00 115.56 260.00 126.67 280.00 137.78 300.00 148.89
Υλοποίηση με χρήση βρόχου επανάληψης for #include <stdio.h> /*Ektypose ton pinaka twn thermokrasiwn Fahrenheit-Celsius gia Fahrenheit = 0, 20, 40,..., 300*/ main() float fahr, celsius; int lower, upper, step; /*Orismos twn metavlitwn*/ lower=0; upper=300; step=20;
Υλοποίηση με χρήση βρόχου επανάληψης for ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ /*Arxikopoiisi tis fahr*/ fahr = lower; /*Ektuposi epikefalidas*/ printf("fahrenheit\tcelsius\n"); for (fahr=0;fahr<=upper;fahr+=step) /*Metatropi kai pinaka*/ printf("%5.2f\t\t%5.2f\n", fahr, 5.0/9.0*(fahr-32.0)); Fahrenheit Celsius 0.00-17.78 20.00-6.67 40.00 4.44 60.00 15.56 80.00 26.67 100.00 37.78 120.00 48.89 140.00 60.00 160.00 71.11 180.00 82.22 200.00 93.33 220.00 104.44 240.00 115.56 260.00 126.67 280.00 137.78 300.00 148.89
Πίνακες αληθείας λογικών τελεστών
Συσχετιστικοί Τελεστές x==y ΕΠΙΣΤΡΕΦΕΙ 1 ΑΝx=y ΔΙΑΦΟΡΕΤΙΚΑ 0 x!=y ΕΠΙΣΤΡΕΦΕΙ 1 ΑΝx<>y ΔΙΑΦΟΡΕΤΙΚΑ 0 x>y ΕΠΙΣΤΡΕΦΕΙ 1 ΑΝx>y ΔΙΑΦΟΡΕΤΙΚΑ 0 x>=y ΕΠΙΣΤΡΕΦΕΙ 1 ΑΝx>=y ΔΙΑΦΟΡΕΤΙΚΑ 0 x<y ΕΠΙΣΤΡΕΦΕΙ 1 ΑΝx<y ΔΙΑΦΟΡΕΤΙΚΑ 0 x<=y ΕΠΙΣΤΡΕΦΕΙ 1 ΑΝx<=y ΔΙΑΦΟΡΕΤΙΚΑ 0
Λογικοί Τελεστές x&&y ΕΠΙΣΤΡΕΦΕΙ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΤΗΣ x AND y x y ΕΠΙΣΤΡΕΦΕΙ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΤΗΣ x OR y!x ΕΠΙΣΤΡΕΦΕΙ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΤΗΣ NOT(x )
Τελεστές πράξεων με bit Χ>>Υ ΟΛΙΣΘΗΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΤΟΥ X KATA Y ΘΕΣΕΙΣ ΠΡΟΣ ΤΑ ΔΕΞΙΑ Π.χ. x= 1011, y=3 TOTE x>>3 = 0001 Χ<<Υ ΟΛΙΣΘΗΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΤΟΥ X KATA Y ΘΕΣΕΙΣ ΠΡΟΣ ΤΑ AΡΙΣΤΕΡΑ Π.χ. x= 1011, y=2 TOTE x<<y = 1100 Χ^Υ ΛΟΓΙΚΟ XOR ΣΕ ΚAΘΕ ΒΙΤ Π.χ. x= 1011, y=0110 TOTE x^y = 1101 ~ Χ ΣΥΜΠΛΗΡΩΜΑ ΩΣ ΠΡΟΣ 1 Π.χ. x= 1011, ~ x =0100 Χ&Υ ΛΟΓΙΚΟ AND ΣΕ ΚAΘΕ ΒΙΤ Π.χ. x= 1011, y=0110 TOTE x&y = 0010 Χ Υ ΛΟΓΙΚΟ OR ΣΕ ΚAΘΕ ΒΙΤ Π.χ. x= 1011, y=0110 TOTE x y = 1111
Τελεστής Συνθήκης? Z=(A>B)?A:B ; ΣΗΜΑΙΝΕΙ : If (A>B) Z=A; else Z=B;
Τελεστής sizeof Η C έχει έναν εσωτερικό τελεστή, τον sizeof, που δίνει το μέγεθος κάποιων ορισμάτων σε bytes. Αυτό θα το δούμε καλύτερα μ ένα παράδειγμα: sizeof (int) = 2 sizeof (char) = 1 sizeof (long) = 4 sizeof (double) = 8
Προτεραιότητα τελεστών
Προτεραιότητα τελεστών Στη C μπορεί σε μια παράσταση να συνυπάρχουν αριθμητικοί και λογικοί τελεστές. Όσο πιο πάνω είναι μία ομάδα τελεστών, τόσο μεγαλύτερη προτεραιότητα έχει έναντι μιας άλλης ομάδας, π.χ. η ομάδα πολλαπλασιασμός/διαίρεση/υπόλοιπο έχει μεγαλύτερη προτεραιότητα από την ομάδα πρόσθεση/αφαίρεση. Ο προηγούμενος πίνακας δείχνει την προτεραιότητα των τελεστών αλλά και τη φορά εκτέλεσης τους στην περίπτωση που υπάρχουν πολλοί με την ίδια προτεραιότητα. Οι τελεστές ανάμεσα σε δύο έντονες οριζόντιες γραμμές έχουν την ίδια προτεραιότητα. Π.χ. ο πολλαπλασιασμός, η διαίρεση, και το υπόλοιπο (%) έχουν την ίδια προτεραιότητα.
Μετατροπή τύπων - Μετατροπή τύπου γίνεται όταν μια τιμή τύπου x πρέπει να γίνει συμβατή με μεγέθη τύπου y - Aν ένα από τα ορίσματα μιας πράξης που θέλει ορίσματα ίδιου τύπου, είναι long double, double, float, long, unsigned, int (με αυτή τη σειρά) τότε και το άλλο όρισμα προάγεται στον ίδιο τύπο -Μετατροπές γίνονται και όταν μια τιμή ανατίθεται σε μεταβλητή μικρότερου μεγέθους οπότε χάνεται μέρος των δεδομένων (τα πιο σημαντικά ψηφία). Παράδειγμα: int i=256; (o i καταλαμβάνει 2 bytes, άρα αναπαρίσταται ως 0000 0001 0000 0000, το οποίο γράφεται σε δεκαεξαδική μορφή ως 0x0100) char c; c=i; (o c καταλαμβάνει 1 byte) (ο c γίνεται ίσος με τα 8 λιγότερο σημαντικά ψηφία του i δηλαδή c=0x00) i=c; (To i γίνεται ίσο με c, δηλαδή 0) - Για όλες τις δυνατές μετατροπές τύπων της C θα πρέπει να ανατρέξετε στο εγχειρίδιο.
Μετατροπή τύπων με casting Μετατροπές τύπων μπορεί να γίνουν και από τον προγραμματιστή με casting (με void μπορεί να αγνοηθεί η τιμή που επιστρέφει μια συνάρτηση) double d=(double)10/3; /* d is 3.33 */ double d=10/3; /* d is 3.0 */ (void) foo(); /* ignorereturn value */
α) getchar( ) και putchar( ): Η συνάρτηση getchar() δεν έχει όρισμα. Παίρνει ένα χαρακτήρα από το πληκτρολόγιο και τον μεταφέρει στο πρόγραμμα που πρόκειται να εκτελεστεί. Η συνάρτηση αυτή χρειάζεται <Enter> για να πάρει τον χαρακτήρα. Η συνάρτηση putchar() δέχεται ένα όρισμα. Παίρνει ένα χαρακτήρα από το πρόγραμμα που εκτελείται και τον εμφανίζει στην οθόνη. Π.χ. το παρακάτω πρόγραμμα δέχεται ένα χρακτήρα και οθόνη. #include <stdio.h> main() char ch; ch=getchar(); putchar(ch); Οι συναρτήσεις εισόδου/εξόδου απλού χαρακτήρα τον εκτυπώνει στην
Οι συναρτήσεις εισόδου/εξόδου απλού χαρακτήρα α) getch ( ) και getche( ): -Οι συναρτήσεις αυτές δεν έχουν ορίσματα -Επιστρέφουν τον χαρακτήρα που διαβάζουν χωρίς να χρειάζεται <Enter> για να πάρουν τον χαρακτήρα -Η συνάρτηση getch() δεν εμφανίζει τον χαρακτήρα στην οθόνη - Η συνάρτηση getche() εμφανίζει τον χαρακτήρα στην οθόνη
Διεύθυνση Μεταβλητής Διεύθυνση μιας μεταβλητής είναι η διεύθυνση του πρώτου byte των θέσεων μνήμης που δεσμεύει η μεταβλητή. Μέγεθος μιας μεταβλητής είναι ο αριθμός των byte που δεσμεύει αυτή η μεταβλητή και καθορίζεται από τον τύπο της. Ο τελεστής & επιστρέφει ένα ακέραιο αριθμό, ο οποίος προσδιορίζει τη διεύθυνση μιας μεταβλητής.
Μεταβλητές τύπου αλφαριθμητικού Eνα αλφαριθμητικό ορίζεται στη C σαν ένα σύνολο χαρακτήρων μέσα σε διπλά εισαγωγικά "". Στη μνήμη ένα string αποθηκεύεται σε συνεχόμενες θέσεις μνήμης (μία για κάθε χαρακτήρα) ξεκινώντας από μια συγκεκριμένη διεύθυνση. Ο μεταγλωττιστής της C τοποθετεί ένα τερματικό χαρακτήρα \0 στο τέλος κάθε συνόλου χαρακτήρων. Ο χαρακτήρας αυτός σηματοδοτεί το τέλος της συμβολοσειράς.
Σταθερές Μπορούμε να δηλώσουμε μεταβλητές στις οποίες να δώσουμε αρχική τιμή χωρίς όμως να μπορούμε να μεταβάλλουμε το περιεχόμενο τους: const int a=8; const float c=4.6; Δηλώνουμε δυο μεταβλητές μόνο για ανάγνωση a και c, με αρχικές τιμές 8 και 4.6 αντίστοιχα. Στις μεταβλητές αυτές δεν επιτρέπεται να αναθέσουμε αργότερα άλλες τιμές. Η χρήση τέτοιου είδους μεταβλητών είναι πολύ περιορισμένη.
Ένα ακόμη πιο σύνθετο πρόγραμμα #include <stdio.h> main() int a,b,meg; float mo; printf("dose 2 diaforetikous akeraious:"); scanf("%d %d",&a,&b); /*YPOLOGISMOI KAI EKTYPOSEIS*/ if (a>b) meg=a; if (b>a) meg=b; mo=(a+b)/2.0; printf("\n\no megaluteros einai:%d",meg); printf("\n\no mesos oros einai:%5.1f",mo);
Ένα ακόμη πιο σύνθετο πρόγραμμα ΕΚΤΕΛΕΣΗ Dose 2 diaforetikous akeraious:13 19 O megaluteros einai:19 O mesos oros einai: 16.0
Δομές ελέγχου τύπου if...else Η εντολή if συντάσσεται με 3 τρόπους: α) ως απλή πρόταση if β) ως συνδυασμός if-else γ) ως συνδυασμός if- else if α) Η απλή πρόταση if Η μορφή της εντολής if είναι σχετικά απλή: περιέχει μια έκφραση σχέσης και αν η έκφραση σχέσης είναι αληθής, τότε εκτελούνται οι εντολές που προβλέπονται στην περίπτωση που η εντολή if είναι αληθής. Εάν η έκφραση σχέσης είναι ψευδής, τότε οι εντολές αυτές δεν εκτελούνται.
Δομές ελέγχου τύπου if...else Η εντολή if (συνθήκη) εντολές.. ονομάζεται εντολή block if. Αν η λογική έκφραση είναι αληθής, οι εντολές ανάμεσα στα άγκιστρα θα εκτελεστούν όλες διαδοχικά με τη σειρά με την οποία έχουν συγγραφεί. Σε διαφορετική περίπτωση ολόκληρη η ομάδα εντολών αγνοείται.
Δομές ελέγχου τύπου if...else β) Ο συνδυασμός if-else Η σύνταξη της εντολής φαίνεται στις παρακάτω μορφές: If (συνθήκη)... Εκτελέσιμη εντολή 1α Εκτελέσιμη εντολή 1β... else... Εκτελέσιμη εντολή 2α Εκτελέσιμη εντολή 2β...
Δομές ελέγχου τύπου if...else Οι εκτελέσιμες εντολές 1α, 1β,...είναι τμήματα μιας ομάδας εντολών που εκτελούνται όταν η έκφραση είναι αληθής, ενώ οι εκτελέσιμες εντολές 2α, 2β,... είναι τμήματα μιας ομάδας εντολών που εκτελούνται όταν η έκφραση είναι ψευδής. Έτσι εάν η έκφραση είναι ψευδής, ο έλεγχος μεταβιβάζεται στη δεύτερη ομάδα.
Δομές ελέγχου τύπου if...else γ) Ο συνδυασμός if... else if Η δομή ελέγχου if else if μεταβιβάζει τον έλεγχο του προγράμματος βήμα προς βήμα μέσα απο μια σειρά ομάδων εντολών. Ο έλεγχος σταματά στην έκφραση σχέσης που είναι αληθής και εκτελεί την ομάδα εντολών που βρίσκεται εκεί. Αφότου εκτελεστεί η ομάδα εντολών ο έλεγχος μεταβένει στο τέλος της δομής ελέγχου. Η μορφή της δομή ελέγχου if else if είναι η ακόλουθη:
Δομές ελέγχου τύπου if...else if (έκφραση σχέσης 1) ομάδα εντολών 1 else if(έκφραση σχέσης 2) ομάδα εντολών 2 else if(έκφραση σχέσης n) ομάδα εντολών n else Τελική ομάδα εντολών
Το ίδιο με χρήση του if... else #include <stdio.h> main() int a,b,meg; float mo; printf("dose 2 diaforetikous akeraious:"); scanf("%d %d",&a,&b); /*YPOLOGISMOI KAI EKTYPOSEIS*/ if (a>b) meg=a; else meg=b; mo=(a+b)/2.0; printf("\n\no megaluteros einai:%d",meg); printf("\n\no mesos oros einai:%5.1f",mo);
Δομή ελέγχου switch... case Η πρόταση switch-case ελέγχει αν η τιμή μιας ακεραίας παράστασης ισούται με συγκεκριμένες σταθερές ( και μόνο σταθερές). Το συντακτικό της είναι το εξής: switch (έκφραση σχέσης 1) case σταθερά 1 : εντολή 1α εντολή 1β... break; case σταθερά 2 : εντολή 2α εντολή 2β.... break;
Δομή ελέγχου switch... case case σταθερά 3 : εντολή 3α εντολή 3β.... break; default: εντολές break;
Παράδειγμα της switch #include <stdio.h> main() int imera; printf("doste imera tis evdomadas (1-7), 1 gia Deutera kai 7 gia Kuriaki:"); scanf("%d",&imera); switch (imera) case 1: printf("\ndeutera");break; case 2: printf("\ntriti");break; case 3: printf("\ntetarti");break; case 4: printf("\npempti");break; case 5: printf("\nparaskeui");break; case 6: printf("\nsavvato");break; case 7: printf("\nkuriaki");break; default: printf("\nlathos");break;
Switch-παρατηρήσεις H πρόταση switch-case ελέγχει αν η τιμή μιας ακεραίας παράστασης ισούται με συγκεκριμένες σταθερές. Ανάλογα με τη σταθερά με την οποία ισούται η παράσταση, εκτελούνται οι προτάσεις από την case της συγκεκριμένης σταθεράς μέχρι την break. Οι προτάσεις κάτω από την default εκτελούνται μόνο όταν η παράσταση δεν ισούται με κάποια από τις σταθερές των προτάσεων case. H χρήση της default είναι προαιρετική. Εάν δεν βρεθεί κανένα ταίριασμα και δεν υπάρχει default, δεν εκτελείται τίποτα.
Switch-παρατηρήσεις switch (παράσταση) case σταθερά1: πρόταση; case σταθερά2: πρόταση;... break; default: πρόταση; break; Όταν βρεθεί ένα ταίριασμα, εκτελούνται οι προτάσεις που σχετίζονται με αυτή τη περίπτωση-case, μέχρι να συναντηθεί μια break. H εντολή break μεταφέρει τον έλεγχο του προγράμματος στην πρόταση αμέσως μετά την switch. Αν επιλεχθεί ως τιμή της παράστασης η σταθερά1 θα εκτελεσθούν οι προτάσεις αυτής αλλά και της σταθεράς2 αφού δεν υπάρχει break στο τέλος της σταθεράς1.
Εντολή while H εντολή while εκτελείται μια πρόταση ή ένα σύνολο προτάσεων όσο μια λογική παράσταση είναι αληθής. while (συνθήκη) πρόταση; while (συνθήκη) πρόταση; πρόταση; Συνθήκη είναι η συνθήκη ελέγχου που χρησιμοποιείται προκειμένου να προσδιοριστεί αν ο βρόχος θα πρέπει να συνεχίσει για ένα ακόμα κύκλο O έλεγχος της συνθήκης γίνεται πάντα στην αρχή του βρόχου επανάληψης
Παράδειγμα της while #include <stdio.h> main() int a; a=0; while (a<10) printf("o broxos ekteleitai %d fora \n",a+1); ++a; printf("teleiose i ektelesi tou broxou \n\n");
Εκτέλεση O broxos ekteleitai 1 fora O broxos ekteleitai 2 fora O broxos ekteleitai 3 fora O broxos ekteleitai 4 fora O broxos ekteleitai 5 fora O broxos ekteleitai 6 fora O broxos ekteleitai 7 fora O broxos ekteleitai 8 fora O broxos ekteleitai 9 fora O broxos ekteleitai 10 fora Teleiose i ektelesi tou broxou
H επαναληπτική εντολή do-while Ο βρόχος do επαναλαμβάνει την εντολή ή τις εντολές του όσο η λογική παράσταση είναι αληθής. Σταματά την επανάληψη όταν η έκφραση γίνει ψευδής. Συντάσσεται ως εξής: do πρόταση; while (συνθήκη); do πρόταση; πρόταση; while (συνθήκη); Συνθήκη είναι η συνθήκη ελέγχου που χρησιμοποιείται προκειμένου να προσδιοριστεί αν ο βρόχος θα πρέπει να συνεχίσει για ένα ακόμα κύκλο O έλεγχος της συνθήκης γίνεται πάντα στo τέλος του βρόχου επανάληψης, επομένως ο βρόχος θα εκτελεστεί τουλάχιστον 1 φορά
H επαναληπτική εντολή for Χρησιμοποιεί ένα μετρητή επαναλήψεων. -Ο μετρητής αυτός αρχικοποιείται πριν την 1 η επανάληψη του βρόχου σύμφωνα με την εκτελέσιμη πρόταση 1. -Ο μετρητής αυξάνεται μετά από κάθε επανάληψη του βρόχου σύμφωνα με την εκτελέσιμη πρόταση 2. -Ο βρόχος επανάληψης εκτελείται μόνο αν ικανοποιείται η λογική παράσταση. Συντάσσεται ως εξής: Απλή μορφή: for (εκτελέσιμη_πρόταση1; λογική παράσταση; εκτελέσιμη πρόταση2) πρόταση ; Σύνθετη μορφή: for (εκτελέσιμη_πρόταση1; λογική παράσταση; εκτελέσιμη πρόταση2) πρόταση ; πρόταση ;...
Οι εντολές break - continue Γενικά, οι προτάσεις break και continue χρησιμοποιούνται γιά την παράκαμψη δομών ελέγχου. Η πρόταση break εφαρμόζεται σε δομές επαναλήψεων και αποφάσεων και έχει ως αποτέλεσμα την συνέχεια της εκτέλεσης του προγράμματος στη πρώτη πρόταση μετά το τέλος της δομής. Η πρόταση continue εφαρμόζεται σε δομές επαναλήψεων και έχει ως αποτέλεσμα την συνέχεια της εκτέλεσης από την επόμενη επανάληψη.
Γενικευμένο Παράδειγμα Να γραφεί ένα πρόγραμμα που υπολογίζει τις αναπαραστάσεις ενός θετικού ακέραιου στα αριθμητικά συστήματα με βάση 2 έως 16.
Γενικευμένο Παράδειγμα #include <stdlib.h> #include <stdio.h> void itob(int n, char s[], int b); void reverse(char s[]); main(void) char buffer[50], calc; int i, akeraios; do printf("thelete na sunexisete? Y/N \n"); scanf ("%c",&calc); if ((calc=='n') (calc=='n')) break; printf("dose enan akeraio: \n"); scanf ("%10d",&akeraios);
Γενικευμένο Παράδειγμα if ( akeraios >= 0 && akeraios <= 32767 ) for ( i = 2; i <= 16; ++i ) itob(akeraios, buffer, i); printf("decimal %d in base %-2d : %s\n", akeraios, i, buffer); else printf("cannot perform the calculation \n"); while(1);
Γενικευμένο Παράδειγμα void itob(int n, char s[], int b) static char digits[] = "0123456789ABCDEF"; int i=0; do s[i++] = digits[n % b]; while ((n /= b) > 0); s[i] = '\0'; reverse(s);
Γενικευμένο Παράδειγμα void reverse(char s[]) int c, i, j; for ( i = 0, j = strlen(s)-1; i < j; i++, j--) c = s[i]; s[i] = s[j]; s[j] = c;
Εκτέλεση Dose enan akeraio: 1345 Decimal 1345 in base 2 : 10101000001 Decimal 1345 in base 3 : 1211211 Decimal 1345 in base 4 : 111001 Decimal 1345 in base 5 : 20340 Decimal 1345 in base 6 : 10121 Decimal 1345 in base 7 : 3631 Decimal 1345 in base 8 : 2501 Decimal 1345 in base 9 : 1754 Decimal 1345 in base 10 : 1345 Decimal 1345 in base 11 : 1013 Decimal 1345 in base 12 : 941 Decimal 1345 in base 13 : 7C6 Decimal 1345 in base 14 : 6C1 Decimal 1345 in base 15 : 5EA Decimal 1345 in base 16 : 541
Eντολή goto / NA AΠΟΦΕΥΓΕΤΑΙ!!! Η εντολή goto μεταφέρει τον έλεγχο σε μια ετικέτα. Μια ετικέτα (label) είναι ένα έγκυρο όνομα το οποίο ακολουθείται από άνω-κάτω τελεία (:).
Eντολή goto / NA AΠΟΦΕΥΓΕΤΑΙ!!! #include <stdio.h> main() char calc='y'; int a, sum=0; arxi: printf("thelete nasunexisete; \n"); scanf ("%c", &calc); if (calc=='y') printf("doste enan akeraio arithmo: \n"); scanf ("%d",&a); sum=sum+a; printf("to trexon athroisma einai to %d \n",sum); goto arxi;
Η έννοια του Μετρητή Πόσες φορές πρέπει να διπλασιαστεί ένας ακέραιος με αρχική τιμή 1 για να ξεπεράσει το 100; #include <stdio.h> main() int i=0, a=1; while (a<=100) a=2*a; i++; printf("prepei na diplasiasoume %d fores to a me arxiki timi 1 gia na xeperasei to 100", i);
Η έννοια του Αθροιστή Υπολογίστε το άθροισμα S=1+4+7+...+100 #include <stdio.h> main() int i=1; long s=0; do s+=i; i+=3; while (i<=100); printf("to athroisma S=1+4+7+...+100einai %d", s);
Παράδειγμα Να γραφεί πρόγραμμα που αφού δέχεται από το πληκτρολόγιο άγνωστο πλήθος θετικών ακεραίων, να υπολογίζει το πλήθος τους, τον μεγαλύτερο, τον μικρότερο, το άθροισμά τους, και τέλος τον μέσο όρο τους (το πρόγραμμα να τερματίζει με την είσοδο του μηδενός).
Υλοποίηση #include <stdio.h> main() /* Dilwseis metavlitwn */ int a; int meg=0, mik, p=0, s=0; float mo; /* Epanalipsi */ do printf("\n Eisagogi thetikou akeraiou (0 gia telos):"); scanf("%d", &a); if (mik<=0) mik=a;
Υλοποίηση if (a>0) /* An dothike akeraios arithmos */ p++; s+=a; if (meg<a) meg=a; if (mik>a) mik=a; while (a>0);
Υλοποίηση if (p>0) mo = (float) s / p; printf("\n Plithos:%10d", p); printf("\n Athroisma:%10d",s); printf("\n Megaluteros:%10d",meg); printf("\n Mikroteros:%10d",mik); printf("\n Mesos Oros:%.2f",mo); else printf("\ndendothike kanenas arithmos");
Η βιβλιοθήκη math.h
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Ορισμός-Δήλωση πίνακα Πίνακας (array) είναι ένα σύνολο μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται για να διευκολύνει την αποθήκευση και την επεξεργασία μεγάλων ποσοτήτων δεδομένων που έχουν σχέση μεταξύ τους. Για παράδειγμα, ένας πίνακας μπορεί να περιλαμβάνει μια λίστα από αριθμούς, όπως τις βαθμολογίες που έχετε συγκεντρώσει σε όλα τα μαθήματα κάθε εξάμηνου. Όλοι οι αριθμοί στο παραπάνω παράδειγμα αντιπροσωπεύουν βαθμολογίες μαθημάτων και για αυτό το λόγο είναι ίδιου τύπου.
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Δήλωση: Τύπος δεδομένων όνομα_πίνακα[n]; Εισαγωγή: for (i=0; i<n; i++) printf( \nεισαγωγή %d στοιχείου:, i); scanf( %x, &όνομα_πίνακα[i]); Εκτύπωση: for (i=0; i<n; i++) printf( \n %d στοιχείο: %x, i, όνομα_πίνακα[i]);
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Να γραφεί πρόγραμμα στο οποίο αφού εισάγονται 2 μονοδιάστατοι πίνακες 10 στοιχείων ο καθένας να υπολογίζεται ο πίνακας άθροισμα και να εκτυπώνεται.
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ #include <stdio.h> #define N 10 main() /* Dilwseis metavlitwn */ int a[n], b[n], x[n]; int i; /* Eisagwgi stoixeiwn */ for (i=0; i<n; i++) printf("\neisagwgitou %d stoixeiou toy pinakaa:", i); scanf("%d", &a[i]); for (i=0; i<n; i++) printf("\neisagwgitou %d stoixeiou toy pinakab:", i); scanf("%d", &b[i]);
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ /* Ypologismos Athroismatos */ for (i=0; i<n; i++) x[i] = a[i] + b[i]; /* Ektupwsi apotelesmatos */ for (i=0; i<n; i++) printf("\n Stoixeio %d = %d", i, x[i]);
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σε έναν μονοδιάστατο πίνακα Ν στοιχείων να ευρεθεί το μέγιστο (ή ελάχιστο) στοιχείο του καθώς και η θέση στην οποία βρέθηκε.
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ #include <stdio.h> #define N 10 main() /* Dilwseis metavlitwn */ int p[n]; int meg, thesi, i; /* Eisagwgi stoixeiwn */ for (i=0; i<n; i++) printf("\neisagwgitou %d stoixeiou toy pinakap:", i); scanf("%d", &p[i]);
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ /* Arxikes times */ thesi= 0; meg = p[thesi]; for (i = 1; i < N; i++) if (meg < p[i]) meg = p[ i ]; thesi= i; /* Ektupwseis */ printf("\n\nthesi megistou stoixeiou =%5d", thesi); printf("\n\nmegisto stoixeio=%10d\n", p[thesi] );
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Πίνακες n γραμμών και m στηλών πλήθος στοιχείων= n x m. Κάθε στοιχείο δίνεται από τις συντεταγμένες της θέσης του, δηλ. aij σημαίνει ότι βρίσκεται στην i γραμμή και j στήλη. Μπορούν να θεωρηθούν σαν ένωση m μονοδιάστατων πινάκων n στοιχείων ο καθένας.
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Δήλωση: Τύπος δεδομένων όνομα_πίνακα[n][μ]; Εισαγωγή: for (i=0; i<n; i++) for (j=0; j<μ; j++) printf( \nεισαγωγή %d-%d στοιχείου:, i, j); scanf( %x, &όνομα_πίνακα[i][j]); Εκτύπωση: for (i=0; i<n;i++) printf( \n ); /* Αλλαγή γραμμής */ for (j=0; j<μ; j++) printf( %x, όνομα_πίνακα[i][j]);
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Να γίνει πρόγραμμα το οποίο να προσθέτει δύο δεδομένους πίνακες 5x3και στην συνέχεια να εκτυπώνει τον πίνακα αποτέλεσμα.
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ #include <stdio.h> #define N 5/* Arithmos grammwn */ #definem 3/* Arithmos sthlwn */ main() /* Dilwseis metavlitwn */ int a[n][m], b[n][m], x[n][m]; int i, j ; for (i=0; i<n; i++) for (j=0; j<m; j++) printf("\neisagwgitoy %d-%d stoixeiou toy pinaka A:", i,j); scanf("%d", &a[i][j]);
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ for (i=0; i<n; i++) for (j=0; j<m; j++) printf("\neisagwgitoy %d-%d stoixeiou toy pinaka B:", i,j); scanf("%d", &b[i][j]); /* Ypologismos toy athroismatos */ for (i=0; i<n; i++) for (j=0; j<m; j++) x[i][j] = a[i][j] + b[i][j];
ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ /* Ektupwsi toy apotelesmatos */ for (i=0; i<n; i++) printf("\n"); for (j=0; j<m; j++) printf("%10d", x[i][j]);