Καλές ιστοσελίδες τρίτων: #1, #2, #3,
Εισαγωγικές έννοιες
ΠΡΑΓΜΑΤΙΚΟΥΣ ΑΡΙΘΜΟΥΣ ή ΜΕΓΑΛΟΥΣ ΑΚΕΡΑΙΟΥΣ ΑΡΙΘΜΟΥΣ
Μία από τις δημοφιλέστερες εντολές είναι η printf() που χρησιμοποιείται για την εμφάνισε δεδομένων στην οθόνη του υπολογιστή.
Η εντολή if
Οι εντολές επανάληψης
Το πρώτο μας πρόγραμμα
- Στην C επιτρέπονται τα πεζά και κεφαλαία γράμματα του λατινικού αλφαβήτου (a – z, A – Z ), τα ψηφία 0-9 και οι ειδικοί χαρακτήρες ~ ‘ ! @ # % ^ u0026amp; * ( ) _ – + = | { } [ ] : ; ” ‘ < > , . ? / . Καλό είναι να αποφεύγεται η χρήση κεφαλαίων γραμμάτων.
- Για σχόλιο μιας γραμμής χρησιμοποιούμε // αλλιώς /* */.
- Τα ονόματα των μεταβλητών προκύπτουν από συνδυασμό γραμμάτων, ψηφίων και της κάτω παύλας (_). Πρέπει όμως υποχρεωτικά να ξεκινούν με γράμμα ή κάτω παύλα (_). Η C κάνει διάκριση πεζών- κεφαλαίων που σημαίνει ότι οι μεταβλητές y1 kai Y1 είναι διαφορετικές.
- Οι Δεσμευμένες Λέξεις είναι λέξεις που χρησιμοποιεί η C αποκλειστικά και δεν μπορούμε συνεπώς να τις χρησιμοποιήσουμε σαν ονόματα μεταβλητών, συναρτήσεων κλπ. Οι λέξεις αυτές είναι: auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while, _Packed .
- Οι τελεστές χωρίζονται σε
- αριθμητικούς : +, -, *, /, % (mod), ++, –. Η διαίρεση ακέραιων αριθμών δίνει ακέραιο αφού τα δεκαδικά φεύγουν. Η διαίρεση πραγματικών κανονικά.Π.χ. 1/2 επιστρέφει 0, ενώ 1.0/2.0 επιστρέφει 0.5. Το % επιστρέφει το υπόλοιπο της διαίρεσης. Αν η μεταβλητή w έχει την τιμή 10, τότε οι τελεστές++ και — αυξάνουν και μειώνουν την μεταβλητή κατά μία μονάδα, δηλ w++ και w– έχουν σαν αποτέλεσμα η μεταβλητή να γίνει 11 και 9 αντίστοιχα.
- συγκριτικούς : >, >=, <, <=, == (ίσο), != (διάφορο) και
- λογικούς: ! (όχι), u0026amp;u0026amp; (και), || (ή)
- Η C υποστηρίζει τους ακόλουθους αριθμητικούς τύπους δεδομένων
Τύπος | Χώρος που καταλαμβάνει | Εύρος τιμών |
char | 1 byte | -128 έως 127 ή 0 έως 255 |
unsigned char | 1 byte | 0 έως 255 |
signed char | 1 byte | -128 εως 127 |
int | 2 ή 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 ή 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
Τύπος | Χώρος που καταλαμβάνει | Εύρος τιμών | Πλήθος Δεκαδικών |
float | 4 bytes | 1.2E-38 to 3.4E+38 | 6 |
double | 8 bytes | 2.3E-308 to 1.7E+308 | 15 |
long double | 10 bytes | 3.4E-4932 to 1.1E+4932 | 19 |
Η γενική μορφή της εντολής if είναι:
Η εντολή switch
if(λογική έκφραση #1) { εντολές } else if(λογική έκφραση #2) { εντολές } else if(λογική έκφραση #3) { εντολές } else { εντολές }Τα τμήματα else if και else είναι προαιρετικά και συνεπώς μπορούν να παραλειφθούν.
switch(παράσταση){ case σταθερή-τιμή: εντολές; break; /* προαιρετικό */ case σταθερή-τιμή : εντολές; break; /* προαιρετικό */ . . . default : /* προαιρετικό */ εντολές; }
While | Do | For |
while(λογική έκφραση) { εντολές; } |
do { εντολές; }while(λογική έκφραση); |
for ( δήλωση και αρχικοποίηση μεταβλητής; συνθήκη; το βήμα) { εντολές; } |
Ας ξεκινήσουμε με ένα απλό πρόγραμμα το οποίο διαβάζει δύο αριθμούς από ένα αρχείο (data.in) και στην συνέχεια αποθηκεύει το άθροισμα τους σε ένα άλλο αρχείο (data.out).
#include <stdio.h> /* Οι μεταβλητές myInputFile και myOutputFile δηλώνονται ως τύπου File, ενώ x,y,synolo δηλώνονται ως ακέραιοι */ FILE *myInputFile; FILE *myOutputFile; int x, y, synolo; int main() { /* Η μεταβλητή myInputFile σχετίζεται ποια με το αρχείο δεδομένα.in που από εδώ και πέρα μπορεί μόνο να αναγνωσθεί (r) */ myInputFile= fopen("data.in", "r"); /* Από το myInputFile θα διαβαστούν δύο ακέραιοι (d) που θα εκχωρηθούν στις μεταβλητές x και y */ fscanf(myInputFile, "%d %d", u0026amp;x, u0026amp;y); synolo = x + y; /* Η μεταβλητή myOutputFile σχετίζεται με το αρχείο αποτελέσματα.out που είναι κενό (w) */ myOutputFile = fopen("data.out", "w"); /* Η τιμή της μεταβλητής synolo αποθηκεύεται στο αρχείο που αντιστοιχεί στην μεταβλητή myOutputFile ως ακέραιος */ fprintf(myOutputFile, "%dn", synolo); /* τα δύο αρχεία αποδεσμεύονται διότι δεν χρειάζονται άλλο */ fclose(myInputFile); fclose(myOutputFile); /* Το πρόγραμμα αυτό στέλνει τον αριθμό 0 για να δηλώσει ότι όλα πήγαν καλά. */ return 0; }