Οι κύριες ενότητες του προγράμματος στη σελ. Βασικά στοιχεία της γλώσσας C: δομή ενός προγράμματος C, βασικοί τύποι και κατασκευή νέων τύπων, πράξεων και εκφράσεων

Το ίδιο το πρόγραμμα C++ είναι ένα αρχείο κειμένου που περιέχει δομές και τελεστές αυτής της γλώσσαςμε τη σειρά που καθορίζει ο προγραμματιστής. Στο πολύ απλή υπόθεσηαυτό το αρχείο κειμένου μπορεί να περιέχει τις ακόλουθες πληροφορίες:

Λίστα 1.1. Ένα παράδειγμα απλού προγράμματος.

/* Παράδειγμα απλού προγράμματος */
#περιλαμβάνω
int main()
{
printf(" Γειά σου Κόσμε!”);
επιστροφή 0;
}

και συνήθως έχει επέκταση cpp, για παράδειγμα "ex1.cpp".

Το επόμενο βήμα είναι η συλλογή πηγαίος κώδικας. Η συλλογή αναφέρεται στη διαδικασία με την οποία το περιεχόμενο αρχείο κειμένουμετατρέπεται σε εκτελέσιμο κωδικός μηχανής, κατανοητό από τον επεξεργαστή του υπολογιστή. Ωστόσο, ο μεταγλωττιστής δεν δημιουργεί πρόγραμμα έτοιμο για εκτέλεση, αλλά μόνο κώδικα αντικειμένου (αρχείο με επέκταση *.obj). Αυτός ο κώδικας είναι ένα ενδιάμεσο βήμα για τη δημιουργία ολοκληρωμένο πρόγραμμα. Το γεγονός είναι ότι το πρόγραμμα που δημιουργήθηκε μπορεί να περιέχει συναρτήσεις τυπικών βιβλιοθηκών της γλώσσας C++, οι υλοποιήσεις των οποίων περιγράφονται στα αρχεία αντικειμένων των βιβλιοθηκών. Για παράδειγμα, το παρακάτω πρόγραμμα χρησιμοποιεί τη συνάρτηση printf(). τυπική βιβλιοθήκη"stdio.h". Αυτό σημαίνει ότι το αρχείο αντικειμένου ex1.obj θα περιέχει μόνο οδηγίες για την κλήση αυτής της συνάρτησης, αλλά ο κώδικας για την ίδια τη συνάρτηση δεν θα υπάρχει.

Για τον τελικό εκτελέσιμο πρόγραμμαπεριείχε όλες τις απαραίτητες υλοποιήσεις συναρτήσεων, χρησιμοποιείται ένας σύνδεσμος κώδικα αντικειμένου. Ένας σύνδεσμος είναι ένα πρόγραμμα που συνδυάζεται σε ένα ενιαίο εκτελέσιμο αρχείοκωδικούς αντικειμένων δημιουργημένο πρόγραμμα, κώδικες αντικειμένων υλοποιήσεων συναρτήσεων βιβλιοθήκης και τυπικός κωδικόςεκκίνησης για ένα δεδομένο λειτουργικό σύστημα. Ως αποτέλεσμα, τόσο το αρχείο αντικειμένου όσο και το εκτελέσιμο αρχείο αποτελούνται από οδηγίες κώδικα μηχανής. Ωστόσο, το αρχείο αντικειμένου περιέχει μόνο το αποτέλεσμα της μετάφρασης σε γλώσσα μηχανήςτο κείμενο του προγράμματος που δημιουργήθηκε από τον προγραμματιστή και το εκτελέσιμο αρχείο είναι επίσης ο κώδικας μηχανής για τις τυπικές ρουτίνες βιβλιοθήκης που χρησιμοποιούνται και για τον κώδικα εκκίνησης.

Ας ρίξουμε μια πιο προσεκτική ματιά στο παράδειγμα προγράμματος στη Λίστα 1.1. Η πρώτη γραμμή καθορίζει σχόλια, π.χ. σχόλια για να σας βοηθήσουν να κατανοήσετε καλύτερα το πρόγραμμα. Είναι μόνο για ανάγνωση και αγνοούνται από τον μεταγλωττιστή. Η δεύτερη γραμμή περιέχει την οδηγία #include, η οποία δίνει εντολή στον προεπεξεργαστή της γλώσσας C++ να εισάγει τα περιεχόμενα του αρχείου «stdio.h» στη θέση αυτής της γραμμής κατά τη μεταγλώττιση. Η τρίτη γραμμή ορίζει μια συνάρτηση που ονομάζεται main που επιστρέφει έναν ακέραιο ( τύπου int) και δεν δέχεται ορίσματα (τύπος void). Η συνάρτηση main() είναι μια απαιτούμενη συνάρτηση για όλα τα προγράμματα της C++ και χωρίς αυτήν, εμφανίζεται ένα μήνυμα σφάλματος στο στάδιο της μεταγλώττισης που υποδεικνύει την απουσία αυτής της συνάρτησης. Αυτή η λειτουργία είναι υποχρεωτική λόγω του γεγονότος ότι είναι το σημείο εισόδου στο πρόγραμμα. Σε αυτήν την περίπτωση, το σημείο εισόδου είναι η συνάρτηση με την οποία ξεκινά και τελειώνει το πρόγραμμα. Για παράδειγμα, όταν εκτελείτε ένα αρχείο exe, ενεργοποιείται η συνάρτηση main(), εκτελούνται όλες οι δηλώσεις που περιλαμβάνονται σε αυτό και το πρόγραμμα τελειώνει. Έτσι, η λογική ολόκληρου του προγράμματος περιέχεται σε αυτή τη συνάρτηση. Στο παραπάνω παράδειγμα, όταν καλείται η συνάρτηση main(), καλείται η συνάρτηση printf(), η οποία εμφανίζει το μήνυμα «Hello World!» στην οθόνη της οθόνης και, στη συνέχεια, εκτελείται η εντολή return, η οποία επιστρέφει μια τιμή null. Αυτός ο αριθμός επιστρέφεται από την ίδια τη συνάρτηση main() στο λειτουργικό σύστημα και σημαίνει την επιτυχή ολοκλήρωση του προγράμματος. Σιδερακια ΔΟΝΤΙΩΝ() χρησιμεύουν για τον προσδιορισμό της αρχής και του τέλους του σώματος συνάρτησης, δηλ. περιέχουν όλους τους πιθανούς τελεστές που περιγράφουν τη λειτουργία αυτής της συνάρτησης. Θα πρέπει να σημειωθεί ότι μετά από κάθε τελεστή στη γλώσσα C++ υπάρχει ένα σύμβολο «;». Έτσι το παράδειγμα που δίνεται δείχνει γενική δομήπρογράμματα σε γλώσσα C++.

C, όπως στατικές και τοπικές μεταβλητές, πίνακες, δείκτες, συναρτήσεις κ.λπ., είναι όσο το δυνατόν πιο κοντά στην αρχιτεκτονική πραγματικούς υπολογιστές. Έτσι, ένας δείκτης είναι απλώς μια διεύθυνση μνήμης, ένας πίνακας είναι μια συνεχόμενη περιοχή μνήμης, οι τοπικές μεταβλητές είναι μεταβλητές που βρίσκονται στη στοίβα υλικού, οι στατικές βρίσκονται σε στατική μνήμη. Ένας προγραμματιστής που γράφει σε C έχει πάντα μια αρκετά ακριβή ιδέα για το πώς θα λειτουργήσει το πρόγραμμα που δημιουργεί σε οποιαδήποτε συγκεκριμένη αρχιτεκτονική. Με άλλα λόγια, η γλώσσα C δίνει στον προγραμματιστή πλήρη έλεγχο του υπολογιστή.

Αρχικά, η γλώσσα C επινοήθηκε ως αντικατάσταση της γλώσσας Assembly για τη γραφή λειτουργικά συστήματα. Γιατί η Γ είναι γλώσσα υψηλό επίπεδο, ανεξάρτητα από μια συγκεκριμένη αρχιτεκτονική, το κείμενο του λειτουργικού συστήματος αποδείχθηκε ότι ήταν εύκολα φορητό από τη μια πλατφόρμα στην άλλη. Το πρώτο λειτουργικό σύστημα που γράφτηκε σχεδόν εξ ολοκλήρου σε C ήταν Σύστημα Unix. Επί του παρόντος, σχεδόν όλα τα λειτουργικά συστήματα που χρησιμοποιούνται είναι γραμμένα σε C. Επιπλέον, εργαλεία προγραμματισμού που λειτουργικό σύστημαπαρέχει προγραμματιστές προγράμματα εφαρμογής(το λεγόμενο API - Application Program Interface) είναι σύνολα λειτουργίες του συστήματοςστη γλώσσα C.

Ωστόσο, το πεδίο εφαρμογής της γλώσσας C δεν περιορίστηκε στην ανάπτυξη λειτουργικών συστημάτων. Η γλώσσα C έχει αποδειχθεί πολύ βολική σε προγράμματα επεξεργασίας κειμένου και εικόνας, σε επιστημονικούς και μηχανικούς υπολογισμούς. Οι αντικειμενοστρεφείς γλώσσες που βασίζονται στο C είναι εξαιρετικές για προγραμματισμό σε περιβάλλοντα με παράθυρα.

ΣΕ αυτός ο τομέαςΘα δοθούν μόνο οι βασικές έννοιες της γλώσσας C (και εν μέρει C++). Αυτό δεν υποκαθιστά την ανάγνωση ενός πλήρους εγχειριδίου C ή C++, όπως τα βιβλία και .

Θα χρησιμοποιήσουμε μεταγλωττιστή C++ αντί για C. Το γεγονός είναι ότι η γλώσσα C περιλαμβάνεται σχεδόν εξ ολοκλήρου στη C++, δηλ. ένα κανονικό πρόγραμμα γραμμένο σε C είναι ένα έγκυρο πρόγραμμα C++. Η λέξη "κανονικό" σημαίνει ότι δεν περιέχει αποτυχημένες κατασκευές που έχουν απομείνει από προηγούμενες εκδόσεις Si και δεν χρησιμοποιείται αυτήν τη στιγμή. Ο μεταγλωττιστής C++ είναι προτιμότερος από τον μεταγλωττιστή C, γιατί έχει αυστηρότερο έλεγχο σφαλμάτων. Επιπλέον, ορισμένες κατασκευές C++ που δεν σχετίζονται με αντικειμενοστραφή προγραμματισμό είναι πολύ βολικές και στην πραγματικότητα αποτελούν βελτίωση στη γλώσσα C. Αυτά είναι, πρώτα απ 'όλα, σχόλια // , η δυνατότητα περιγραφής τοπικών μεταβλητών σε οποιοδήποτε σημείο του προγράμματος, και όχι μόνο στην αρχή του μπλοκ, καθώς και η ρύθμιση σταθερών χωρίς τη χρήση του τελεστή #define του προεπεξεργαστή. Θα χρησιμοποιήσουμε αυτές τις δυνατότητες της C++ ενώ ουσιαστικά παραμένουμε στη γλώσσα C.

Δομή προγράμματος C

Οποιοδήποτε είναι αρκετό μεγάλο πρόγραμμαστο C (οι προγραμματιστές χρησιμοποιούν τον όρο έργο) αποτελείται από αρχεία. Τα αρχεία μεταφράζονται ανεξάρτητα από τον μεταγλωττιστή C και στη συνέχεια συνδυάζονται από το πρόγραμμα δημιουργίας εργασιών, με αποτέλεσμα ένα αρχείο με ένα πρόγραμμα έτοιμο προς εκτέλεση. Τα αρχεία που περιέχουν κείμενα προγράμματος C καλούνται πρωτότυπο.

Στη γλώσσα C, υπάρχουν δύο τύποι αρχείων πηγής:

  • κεφαλίδα ή h-αρχεία.
  • αρχεία υλοποίησης ή αρχεία C.

Τα ονόματα αρχείων κεφαλίδας έχουν την επέκταση ".h". Τα ονόματα αρχείων υλοποίησης έχουν την επέκταση ".c" για τη γλώσσα C και ".cpp", ".cxx" ή ".cc" για τη γλώσσα C++.

Δυστυχώς, σε αντίθεση με τη γλώσσα C, οι προγραμματιστές δεν μπόρεσαν να συμφωνήσουν σε μια ενιαία επέκταση ονόματος για αρχεία που περιέχουν προγράμματα C++. Θα χρησιμοποιήσουμε την επέκταση ".h" για αρχεία κεφαλίδας και την επέκταση ".cpp" για αρχεία υλοποίησης.

Αρχεία κεφαλίδαςπεριέχει μόνο περιγραφές. Πρώτα απ 'όλα, αυτά είναι πρωτότυπα λειτουργιών. Πρωτότυπο λειτουργίαςπεριγράφει το όνομα της συνάρτησης, τον τύπο επιστροφής, τον αριθμό και τους τύπους των ορισμάτων της. Το ίδιο το κείμενο της συνάρτησης δεν περιέχεται στο αρχείο h. Επίσης, τα αρχεία h περιγράφουν τα ονόματα και τους τύπους εξωτερικών μεταβλητών, σταθερών, νέων τύπων, δομών κ.λπ. Γενικά, τα αρχεία h περιέχουν μόνο διεπαφές, δηλ. πληροφορίες που είναι απαραίτητες για τη χρήση προγραμμάτων που έχουν ήδη γραφτεί από άλλους προγραμματιστές (ή από τον ίδιο προγραμματιστή στο παρελθόν). Τα αρχεία κεφαλίδας παρέχουν πληροφορίες μόνο για άλλα προγράμματα. Κατά τη μετάφραση αρχείων κεφαλίδας, κατά κανόνα, δεν δημιουργούνται αντικείμενα. Για παράδειγμα, σε ένα αρχείο κεφαλίδας δεν μπορείτε καθορίζωκαθολική μεταβλητή. Γραμμή περιγραφής

ο ορισμός μιας ακέραιας μεταβλητής x είναι σφάλμα. Θα πρέπει να χρησιμοποιηθεί η περιγραφή

που σημαίνει ότι η μεταβλητή x ορίζεται κάπου στο αρχείο υλοποίησης (το οποίο είναι άγνωστο). Η λέξη extern (εξωτερικό) μόνο αναφέρει πληροφορίεςσχετικά με μια εξωτερική μεταβλητή, αλλά δεν ορίζει αυτήν τη μεταβλητή.

Αρχεία υλοποίησης, ή τα αρχεία C, περιέχουν κείμενα συναρτήσεων και ορισμούς καθολικών μεταβλητών. Για να το θέσω απλά, τα αρχεία C περιέχουν τα ίδια τα προγράμματα, ενώ τα αρχεία h περιέχουν μόνο πληροφορίες για τα προγράμματα.

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

Τα αρχεία υλοποίησης μπορούν να περιλαμβάνουν περιγραφές που περιέχονται στα αρχεία κεφαλίδας. Σάμη αρχεία κεφαλίδαςμπορεί επίσης να χρησιμοποιήσει άλλα αρχεία κεφαλίδας. Το αρχείο κεφαλίδας περιλαμβάνεται χρησιμοποιώντας την οδηγία προεπεξεργαστή #include. Για παράδειγμα, περιγραφές τυποποιημένα χαρακτηριστικάΤα I/O ενεργοποιούνται χρησιμοποιώντας τη γραμμή

#περιλαμβάνω

(stdio - από τις λέξεις τυπική είσοδος / έξοδος). Το όνομα του αρχείου h γράφεται σε αγκύλες εάν αυτό το h-

Στα προγράμματα C υπάρχει μια συγκεκριμένη σειρά:

Αρχικά, προσθέτουμε τις βιβλιοθήκες που χρειαζόμαστε #include Εάν το αρχείο βρίσκεται στον τρέχοντα κατάλογο του έργου, υποδεικνύεται σε εισαγωγικά. Για ένα αρχείο που βρίσκεται σε άλλο κατάλογο, πρέπει να καθορίσετε την πλήρη διαδρομή σε εισαγωγικά.

#περιλαμβάνω
#include "math.h"

Μετά από αυτό μπορούμε να προσθέσουμε τις σταθερές που χρειαζόμαστε #define A 3

Μετά από αυτό, η συνάρτηση ξεκινά με την εντολή Main()

Αφού ολοκληρωθούν όλα, μπορείτε να εισαγάγετε getchar ()

2. Σε τι χρησιμεύει το ερωτηματικό στη γλώσσα C;

Το ερωτηματικό χρησιμοποιείται για να δείξει το τέλος μιας πρότασης στο C.

3. Όλοι οι μεταγλωττιστές C απαιτούν τη χρήση μιας δήλωσης επιστροφής σε ένα πρόγραμμα;

Για να επιστρέψετε μια ακέραια τιμή, προσθέστε τη γραμμή πριν τελειώσει η συνάρτηση

Επίσης στις περισσότερες περιπτώσεις επιστροφή σημαίνει έξοδος από τη συνάρτηση

Οι εντολές σώματος συνάρτησης εκτελούνται πριν από την πρώτη εντολή επιστροφής. Εάν δεν υπάρχει τέτοιος τελεστής στο σώμα της συνάρτησης (δηλαδή η συνάρτηση δεν επιστρέφει κανένα αποτέλεσμα), τότε εκτελούνται όλοι οι τελεστές μέχρι την αγκύλη του τελεστή κλεισίματος.

Η λειτουργία εκτύπωσης στοιχείων πίνακα δεν επιστρέφει κανένα αποτέλεσμα, π.χ. Δεν υπάρχει δήλωση επιστροφής στο σώμα συνάρτησης.

4. Για ποιο σκοπό εισάγονται σχόλια στο κείμενο του προγράμματος;

Τα σχόλια εισάγονται για να εξηγηθεί μια συγκεκριμένη ενέργεια.

για παράδειγμα Printf(''Hello World''); // εμφάνιση Hello World στην οθόνη

Μπορείτε επίσης να εισάγετε σχόλια χρησιμοποιώντας τα σύμβολα /* - στην αρχή */ - στο τέλος του σχολίου

5. Γιατί χρησιμοποιούνται παράμετροι κατά την κλήση μιας συνάρτησης;

Ένας σύνδεσμος είναι ουσιαστικά ένα δεύτερο όνομα για το ίδιο αντικείμενο. Όταν ένα αντικείμενο μεταβιβάζεται σε μια συνάρτηση με αναφορά, αυτό το αντικείμενο μεταβιβάζεται στην πραγματικότητα. Όταν περνάμε ένα αντικείμενο με τιμή, ένα αντίγραφό του περνά στη συνάρτηση.

void func_1(int a) // περνώντας από την τιμή

6. Όλες οι συναρτήσεις απαιτούν τη μετάδοση παραμέτρων κατά την κλήση;

Κατά τη γνώμη μου, όχι τα πάντα, γιατί μπορούμε εύκολα να γράψουμε μια συνάρτηση όπως η main() χωρίς να περάσουμε παραμέτρους ανά τιμή

1. Τι είναι ένας τύπος δεδομένων χαρ?

Ο τύπος δεδομένων char είναι ακέραιος τύποςδεδομένα που χρησιμοποιούνται για την αναπαράσταση χαρακτήρων. Δηλαδή, κάθε χαρακτήρας αντιστοιχεί σε έναν ορισμένο αριθμόαπό το εύρος. Ο τύπος δεδομένων char ονομάζεται επίσης τύπος δεδομένων χαρακτήρων, καθώς η γραφική αναπαράσταση χαρακτήρων στη C++ είναι δυνατή χάρη στο char. Για την αναπαράσταση χαρακτήρων στη C++, ο τύπος δεδομένων χαρακτήρων εκχωρείται ένα byte, ένα byte περιέχει 8 bit, στη συνέχεια ανεβάζουμε δύο στην ισχύ του 8 και παίρνουμε την τιμή 256 - τον αριθμό των χαρακτήρων που μπορούν να κωδικοποιηθούν. Έτσι, χρησιμοποιώντας τον τύπο δεδομένων char, μπορείτε να εμφανίσετε οποιονδήποτε από τους 256 χαρακτήρες. Όλοι οι κωδικοποιημένοι χαρακτήρες αντιπροσωπεύονται σε πίνακας ASCII.

2. Σε τι διαφέρει το σύμβολο «3» από τον αριθμό 3;

ο χαρακτήρας 3 διαφέρει από τον ακέραιο 3 στο ότι ο χαρακτήρας δεν μπορεί να χρησιμοποιηθεί αριθμητικές πράξεις

3. Ποια είναι η διαφορά μεταξύ σταθεράς και μεταβλητής;

Η διαφορά μεταξύ μιας μεταβλητής και μιας σταθεράς είναι αρκετά προφανής: κατά την εκτέλεση του προγράμματος, η τιμή μιας μεταβλητής μπορεί να αλλάξει (για παράδειγμα, χρησιμοποιώντας μια ανάθεση), αλλά η τιμή μιας σταθεράς δεν μπορεί

4. Πώς να ορίσετε μια σταθερά;

Οι σταθερές στη C++ είναι παρόμοιες με τις σταθερές στο C. Για να αναπαραστήσουμε μια σταθερά στο C, χρησιμοποιήθηκε μόνο η οδηγία #define προεπεξεργαστή:

const typeVariableName = InitialValue;

Το εύρος μιας σταθεράς είναι το ίδιο με αυτό μιας κανονικής μεταβλητής. Με τη χρήση λέξη-κλειδί const μπορείτε να δηλώσετε έναν δείκτη σε μια σταθερά

5. Υποστηρίζει το C τύπο δεδομένων συμβολοσειράς;

Η γλώσσα C δεν υποστηρίζει ξεχωριστό τύπο δεδομένων συμβολοσειράς, αλλά σας επιτρέπει να ορίσετε συμβολοσειρές σε δύο διαφορετικοί τρόποι. Το πρώτο χρησιμοποιεί έναν πίνακα χαρακτήρων και το δεύτερο χρησιμοποιεί έναν δείκτη στον πρώτο χαρακτήρα του πίνακα.

6. Διατηρεί η μεταβλητή την τιμή της σε όλη την εκτέλεση ολόκληρου του προγράμματος;

Κατά την εκτέλεση του προγράμματος, η τιμή μιας μεταβλητής μπορεί να αλλάξει (για παράδειγμα, χρησιμοποιώντας μια ανάθεση), αλλά η τιμή μιας σταθεράς δεν μπορεί

7. Πώς να αλλάξετε την τιμή μιας σταθεράς;

1. Ποιες είναι οι διαφορές μεταξύ των ακολουθιών διαφυγής \n και \r;

Σε γενικές γραμμές, το \r έπρεπε να μηδενίσει τον αριθμό χαρακτήρων. αφήνοντας τον αριθμό γραμμής αμετάβλητο (δηλαδή, θα μετακινήσει το φορέα της γραφομηχανής στην αρχή της γραμμής χωρίς να αγγίξει το χαρτί) και \n - αντίθετα, θα κάνει τη μετάβαση στο επόμενη γραμμή, αφήνοντας την τρέχουσα θέση εκτύπωσης αμετάβλητη (κάνει κύλιση του χαρτιού χωρίς να αγγίζει το φορέα).

2. Πώς εμφανίζεται ο χαρακτήρας των εισαγωγικών στην οθόνη;

printf("Το κείμενό μου είναι: \"το κείμενό μου\"\n");

3. Από ποια δύο μέρη αποτελείται η λίστα παραμέτρων της συνάρτησης printf();

Κατά την εκτύπωση οποιουδήποτε αριθμού ή έκφρασης, η Printf() γράφεται πρώτα.

Σε παρένθεση, στην αρχή σε εισαγωγικά, γράφουμε τα δεδομένα που χρειαζόμαστε, δηλαδή

%Με - μεμονωμένος χαρακτήρας
%d – υπογεγραμμένος δεκαδικός ακέραιος
%f – αριθμός κινητής υποδιαστολής (δεκαδικός συμβολισμός)
%s – συμβολοσειρά χαρακτήρων (για μεταβλητές συμβολοσειράς)
%u – ανυπόγραφος δεκαδικός ακέραιος
%% - εκτυπώστε το σύμβολο ποσοστού

Για παράδειγμα:

printf("x=%5i\ty=%f\tz=%7.3f\n",x, y, z);

4. Ποια πλεονεκτήματα έχει η printf() έναντι της puts();

5. Τι είναι ένας δείκτης μορφής;

Διαβάζει μια τιμή κινητής υποδιαστολής (μόνο C99)

Ίδιο με το %a (μόνο C99)

Διαβάζει έναν χαρακτήρα

Διαβάζει δεκαδικό ακέραιο

Διαβάζει έναν ακέραιο σε οποιαδήποτε μορφή (δεκαδικό, οκταδικό ή δεκαεξαδικό)

Το ίδιο με το %e

Διαβάζει έναν αριθμό κινητής υποδιαστολής

Παρόμοιο με τον κωδικό %f (μόνο C99)

Διαβάζει έναν αριθμό κινητής υποδιαστολής

Ίδιο με το %g

Διαβάζει οκταδικός αριθμός

Διαβάζει μια γραμμή

Διαβάζει δεκαεξαδικός αριθμός

Ίδιο με τον κωδικό %x

Διαβάζει τον δείκτη

Λαμβάνει μια ακέραια τιμή ίση με τον αριθμό των χαρακτήρων που διαβάστηκαν μέχρι στιγμής

Διαβάζει έναν ανυπόγραφο δεκαδικό ακέραιο

Προβάλλει ένα σύνολο χαρακτήρων

Διαβάζει το σύμβολο τοις εκατό

6. Πώς να εμφανίσετε την τιμή μιας αριθμητικής μεταβλητής;

Μπορείτε να εμφανίσετε την τιμή του χρησιμοποιώντας Λειτουργίες εκτύπωσης()

printf("%7.3f\t%7.3f\n",x,y);

%<количество_позиций_под_значение>.<количество_позиций_под_дробную_часть>φά

%<количество_позиций_под_значение>Εγώ

Πριν ξεκινήσετε να γράφετε προγράμματα, πρέπει να μελετήσετε τη δομή των προγραμμάτων στη γλώσσα προγραμματισμού C++. Με άλλα λόγια, η δομή του προγράμματος είναι σήμανση χώρο εργασίας(περιοχές κώδικα) για να ορίσετε με σαφήνεια τα κύρια μπλοκ προγράμματος και τη σύνταξη. Η δομή των προγραμμάτων διαφέρει ελαφρώς ανάλογα με το περιβάλλον προγραμματισμού. Εστιάζουμε στο Microsoft IDE Visual Studio, και επομένως θα εμφανίζονται παραδείγματα προγραμμάτων ειδικά για MVS. Εάν χρησιμοποιείτε άλλο IDE, δεν θα έχετε πρόβλημα με τη μεταφορά κώδικα από το MVS σε άλλα περιβάλλοντα ανάπτυξης και τελικά θα καταλάβετε πώς να το κάνετε.

Δομή προγράμματος για το Microsoft Visual Studio.

// struct_program.cpp: Καθορίζει το σημείο εισόδου για την εφαρμογή της κονσόλας. #include "stdafx.h" //εδώ συμπεριλαμβάνουμε όλες τις απαραίτητες οδηγίες προεπεξεργαστή int main() ( // start κύρια λειτουργίαμε το όνομα main // yours θα βρίσκεται εδώ κώδικα προγράμματος }

Η γραμμή 1 μιλάει για το σημείο εισόδου για την εφαρμογή της κονσόλας, πράγμα που σημαίνει ότι αυτό το πρόγραμμαμπορεί να εκτελεστεί μέσω της γραμμής εντολών Συμβολοσειρά Windowsκαθορίζοντας το όνομα του προγράμματος, για παράδειγμα, struct_program.cpp . Η γραμμή 1 είναι ένα σχόλιο μιας γραμμής, καθώς ξεκινά με τους χαρακτήρες // θα μιλήσουμε περισσότερα για τα σχόλια στο επόμενο άρθρο. Η γραμμή 2 περιλαμβάνει το αρχείο κεφαλίδας "stdafx.h". Αυτό το αρχείοείναι παρόμοιο με ένα κοντέινερ, καθώς περιέχει τις κύριες οδηγίες προεπεξεργαστή (αυτές που περιλαμβάνονται από τον μεταγλωττιστή κατά τη δημιουργία μιας εφαρμογής κονσόλας) και μπορούν επίσης να συνδεθούν βοηθητικές οδηγίες (που συνδέονται από τον προγραμματιστή).

περιλαμβάνει είναι μια οδηγία προεπεξεργαστή, δηλαδή ένα μήνυμα προς τον προεπεξεργαστή. Οι γραμμές που ξεκινούν με το σύμβολο # υποβάλλονται σε επεξεργασία από τον προεπεξεργαστή πριν από τη μεταγλώττιση του προγράμματος.

Οι οδηγίες προεπεξεργαστή μπορούν επίσης να συμπεριληφθούν σε γραμμές, ξεκινώντας μετά την καταχώρηση #include "stdafx.h" πριν από την έναρξη της κύριας λειτουργίας. Επιπλέον, αυτή η μέθοδος σύνδεσης βιβλιοθηκών είναι η κύρια και η χρήση του "stdafx.h" είναι πρόσθετη ευκαιρίασύνδεση αρχείων κεφαλίδας, η οποία είναι διαθέσιμη μόνο σε MVS. Από τις γραμμές 4 έως 6, δηλώνεται η κύρια συνάρτηση. Η γραμμή 4 είναι η κεφαλίδα συνάρτησης, η οποία αποτελείται από τον τύπο επιστροφής (int σε αυτήν την περίπτωση) της συνάρτησης και το όνομα της συνάρτησης, καθώς και από παρενθέσεις στις οποίες δηλώνονται οι παράμετροι της συνάρτησης.

int — ακέραιος τύπος δεδομένων

Ανάμεσα στα σγουρά σιδεράκια βρίσκεται ο κύριος κωδικός προγράμματος, που ονομάζεται επίσης σώμα της συνάρτησης. Αυτό είναι το πιο απλή δομήπρογράμματα. Αυτή η δομήΓραμμένο σε Microsoft VisualΣτούντιο. Όλα τα παραπάνω ισχύουν για άλλους μεταγλωττιστές, εκτός από τη γραμμή 2. Το κοντέινερ "stdafx.h" δεν υπάρχει πουθενά εκτός από το MVS.

Δομή προγράμματος για το C++ Builder.

Όταν δημιουργείτε μια εφαρμογή κονσόλας, ο Οδηγός νέου έργου δημιουργεί αυτόματα τον ακόλουθο κώδικα:

//οδηγία προεπεξεργαστή συμπεριλαμβάνεται αυτόματα από τον οδηγό δημιουργίας έργου #include int main() (επιστροφή 0;)

Βλέπουμε ότι η συνάρτηση έχει έναν τύπο δεδομένων int. Αυτό σημαίνει ότι με την ολοκλήρωση, η συνάρτηση θα επιστρέψει κάποιο είδος ακέραιας τιμής, στην περίπτωσή μας 0. Ακέραιος επειδή το int είναι τύπος δεδομένων για ακέραιους αριθμούς, όπως 4, 5, 6, 456, 233 κ.λπ.

Το κύριο πράγμα που πρέπει να θυμάστε είναι ότι εάν ο τύπος δεδομένων επιστροφής της κύριας συνάρτησης είναι int ή οτιδήποτε άλλο εκτός από void, τότε θα πρέπει να γράψετε μια γραμμή όπως αυτή: επιστροφή<возвращаемое значение>;

Στη γραμμή 2, περιλαμβάνεται η βιβλιοθήκη vcl.h - συμπεριλαμβάνεται αυτόματα από τον οδηγό δημιουργίας εφαρμογής, επομένως δεν πρέπει να τη διαγράψετε, διαφορετικά το έργο δεν θα λειτουργήσει.

Γενικά, ο οδηγός δημιουργεί αυτόματα μια δομή προγράμματος που είναι ελαφρώς διαφορετική από αυτές που εξετάσαμε, αλλά η ουσία παραμένει η ίδια.

Για παράδειγμα:

Int main(int argc, char* argv) ( return 0; )

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

Το Unicode είναι ένα πρότυπο κωδικοποίησης χαρακτήρων που επιτρέπει την αναπαράσταση χαρακτήρων σε όλες σχεδόν τις γραπτές γλώσσες. Θα μιλήσουμε περισσότερα για το Unicode αργότερα.

Υπάρχει διαφορετικές εκδόσεις main , αλλά δεν υπάρχει τίποτα κακό με αυτό, καθώς το main ήταν η κύρια λειτουργία και παραμένει έτσι, επομένως όλα όσα αναφέρθηκαν παραπάνω παραμένουν σχετικά.

Ένα παράδειγμα της δομής ενός προγράμματος MVS με συνδεδεμένες βιβλιοθήκες.

#include "stdafx.h" #include χρησιμοποιώντας namespace std? int main() ( )

Το όνομα των συνδεδεμένων βιβλιοθηκών είναι γραμμένο μέσα στα σύμβολα μεγαλύτερο και μικρότερο. Τα αρχεία κεφαλίδας και το όνομα των βιβλιοθηκών που περιλαμβάνονται είναι συνώνυμα.

Σύνταξη για τη συμπερίληψη αρχείων κεφαλίδας:

#περιλαμβάνω<имя заголовочного файла>

Παλαιότερα αρχεία κεφαλίδας περιλαμβάνονται ως εξής (αυτό το στυλ σύνδεσης βιβλιοθηκών έχει κληρονομηθεί από τη γλώσσα προγραμματισμού C):

#περιλαμβάνω<имя заголовочного файла.h>

Η διαφορά είναι ότι το όνομα ακολουθείται από την επέκταση .h.

Η γλώσσα προγραμματισμού C++ κάνει διάκριση πεζών-κεφαλαίων. Για παράδειγμα:
Επιστροφή 0; – δεν είναι σωστό, θα υπάρξει σφάλμα μεταγλώττισης.
επιστροφή 0; - Σωστά!!!

Αυτό το άρθρο εξετάζει τις δομές των προγραμμάτων C++ σε περιβάλλοντα όπως το MVS και το Borland. Και όπως έχετε ήδη παρατηρήσει, αυτές οι δομές είναι σχεδόν ίδιες. Επομένως, αυτό το άρθρο είναι σχετικό με οποιοδήποτε IDE. Αν δεν έχετε αποφασίσει ακόμα επιλέγοντας ένα IDE, ανάγνωση .

Κάθε πρόγραμμα γραμμένο στη γλώσσα C αποτελείται από μία ή περισσότερες «συναρτήσεις», οι οποίες είναι οι κύριες ενότητες από τις οποίες συναρμολογείται.

Ένα παράδειγμα της δομής ενός απλού προγράμματος C:

Γενική μορφή

Παράδειγμα

οδηγίες προεπεξεργαστή

#περιλαμβάνω

# ορίστε το N 10

όνομα της κύριας λειτουργίας

έναρξη του σώματος κύριας λειτουργίας

δηλώσεις μεταβλητών και πινάκων

int x=1; char str[N];

δηλώσεις προγράμματος

βάζει("Εισαγω Ονομα");

gets(str);

printf("\n %s, είσαι %d καλεσμένος μου!",str,x);

Τέλος κύριας λειτουργίας σώμα

      1. Οδηγίες προεπεξεργαστή

Μέρος του μεταγλωττιστή είναι ένα πρόγραμμα που ονομάζεται προεπεξεργαστής. Ο προεπεξεργαστής λειτουργεί πριν το πρόγραμμα μεταφραστεί από μια γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής, εκτελώντας την προκαταρκτική μετατροπή του. Κάθε οδηγία προεπεξεργαστή ξεκινά με έναν χαρακτήρα # (αριθμός) και εκτείνεται σε ολόκληρη τη γραμμή. Οι οδηγίες που δεν ταιριάζουν στη μία γραμμή μπορούν να συνεχιστούν στην επόμενη γραμμή. Το σύμβολο συνέχειας γραμμής είναι ο χαρακτήρας ανάστροφης κάθετο (\) στη γραμμή που πρέπει να συνεχιστεί.

Η πιο συχνά χρησιμοποιούμενη οδηγία είναι η συμπερίληψη ενός αρχείου σε ένα πρόγραμμα

# περιλαμβάνω < όνομα>

Οπου όνομα– το όνομα του αρχείου που περιλαμβάνεται στο κείμενο του προγράμματος.

Αυτή η οδηγία ονομάζεται οδηγία για την υποκατάσταση . Δίνει εντολή στον μεταγλωττιστή να τοποθετήσει το αρχείο στη θέση του όνομα. Αρχείο όνομαονομάζεται κεφαλίδα. Περιέχει δηλώσεις δεδομένων και συναρτήσεων που χρησιμοποιούνται στο πρόγραμμα. Για παράδειγμα, να συμπεριληφθεί στο πρόγραμμα η οδηγία

# περιλαμβάνω < μαθηματικά. η>

θα σας επιτρέψει να χρησιμοποιήσετε τυπικές μαθηματικές συναρτήσεις στο πρόγραμμα, όπως sin x, cos x, ln x κ.λπ. Μια λίστα με τυπικές μαθηματικές συναρτήσεις θα δοθεί παρακάτω.

Διευθυντικός

# περιλαμβάνω < stdio. η>

καθιστά δυνατή τη χρήση τυπικών συναρτήσεων εισόδου/εξόδου στο πρόγραμμα.

Μια άλλη ευρέως χρησιμοποιούμενη οδηγία είναι η οδηγία για τον ορισμό

#define S1 S2

Οπου S1, S2– συμβολοσειρές χαρακτήρων.

Ο προεπεξεργαστής βρίσκει μια σειρά χαρακτήρων στο κείμενο του προγράμματος μικρό1 και το αντικαθιστά με τη χορδή μικρό2 . Για παράδειγμα, να συμπεριληφθεί στο πρόγραμμα η οδηγία

# καθορίζω Π printf

σας επιτρέπει να πληκτρολογήσετε ένα γράμμα στο πληκτρολόγιο Παντί για λέξη printf.

Αυτή η αντικατάσταση δεν εκτελείται μέσα σε συμβολοσειρές κειμένου (κυριολεκτικά), σταθερές χαρακτήρων και σχόλια, π.χ. δράση της οδηγίας # καθορίζωδεν ισχύει για κείμενα που οριοθετούνται με εισαγωγικά, απόστροφα και αυτά που περιέχονται στα σχόλια.

      1. Κύρια λειτουργία

Κάθε πρόγραμμα C πρέπει να περιέχει μια δήλωση συνάρτησης κύριος(), που ονομάζεται κύρια συνάρτηση . Συνήθως, αυτή η συνάρτηση δεν έχει παραμέτρους και δεν επιστρέφει καμία τιμή. Για να δηλώσει αυτό το γεγονός χρησιμοποιείται η λέξη κενός. Έτσι, η γραμμή με το όνομα της κύριας συνάρτησης συνήθως μοιάζει με:

κενό κύριο (κενό)

void main()

      1. Μεταβλητές και Πίνακες

Ένας πίνακας είναι μια ομάδα μεταβλητών του ίδιου τύπου με κοινό όνομα. Το όνομα μιας μεταβλητής ή ενός πίνακα είναι ένα αναγνωριστικό - μια ακολουθία που αποτελείται από χαρακτήρες:

a – z, A - Z, 0 – 9,_(υπογράμμιση),

Επιπλέον, ο πρώτος χαρακτήρας δεν μπορεί να είναι αριθμός. Οι πεζοί και οι κεφαλαίοι χαρακτήρες του λατινικού αλφαβήτου γίνονται αντιληπτοί ως διαφορετικοί χαρακτήρες. Οι λέξεις της συνάρτησης γλώσσας C δεν μπορούν να χρησιμοποιηθούν ως όνομα μεταβλητής ή πίνακα. Οι λέξεις κύριας λειτουργίας της γλώσσας C δίνονται στο Παράρτημα.

Τα στοιχεία του πίνακα διακρίνονται από τους αριθμούς τους (δείκτες). Το ευρετήριο μπορεί να δέχεται μόνο μη αρνητικές ακέραιες τιμές. Το ευρετήριο γράφεται μετά το όνομα του πίνακα in αγκύλες. Μπορεί να υπάρχουν πολλά ευρετήρια. Σε αυτήν την περίπτωση, κάθε ευρετήριο γράφεται στις δικές του αγκύλες.

Οι μεταβλητές και οι πίνακες μπορούν να χρησιμοποιηθούν στη γλώσσα C διάφοροι τύποι. Τα δεδομένα κάθε τύπου καταλαμβάνουν έναν ορισμένο αριθμό byte μνήμης και μπορούν να λάβουν τιμές από ορισμένο εύρος. Ο όγκος αυτής της μνήμης και, κατά συνέπεια, το εύρος των αποδεκτών τιμών σε διαφορετικές υλοποιήσεις της γλώσσας C μπορεί να ποικίλλει. Ο αριθμός των byte μνήμης που καταλαμβάνει μια μεταβλητή ενός συγκεκριμένου τύπου για μια συγκεκριμένη εφαρμογή της γλώσσας C μπορεί να προσδιοριστεί χρησιμοποιώντας τη λειτουργία μέγεθος του(τύπος). Για παράδειγμα, μπορείτε να προσδιορίσετε την ποσότητα μνήμης που εκχωρείται για μια μεταβλητή τύπου ακέραιου ως εξής:

k = sizeof(int);

printf(«Σε μια μεταβλητή τύπουενθΈχουν εκχωρηθεί %d byte μνήμης”,κ);

Αυτές οι οδηγίες συζητούν τρεις κύριους τύπους μεταβλητών και πινάκων και παρέχουν τυπικές τιμές για την ποσότητα της μνήμης που καταλαμβάνεται και το εύρος τιμών (Πίνακας 1):

Τραπέζι 1

Τύπος Specifier (Λέξη-κλειδί)

Εννοια

Μέγεθος

μνήμη (byte)

Εύρος τιμών

Ακέραιος αριθμός

32768 . . . +32767

2147483648 . . . +2147483647

Εγκυρος

Πραγματικός αριθμός

3,4¼10 -38. . . 3,4¼10 38

(modulo)

Συμβολικός

128 . . . +127

Ας ρίξουμε μια πιο προσεκτική ματιά στη μεταβλητή τύπου απανθρακώνω. Όπως φαίνεται από τον πίνακα. 1, μεταβλητή τύπου απανθρακώνω καταλαμβάνει ένα byte μνήμης. Ένα byte μνήμης μπορεί να περιέχει είτε έναν ανυπόγραφο ακέραιο από την περιοχή , είτε έναν προσημασμένο ακέραιο από το εύρος [–128, 127]. Αυτός ο αριθμός είναι ο κωδικός για έναν από τους 256 χαρακτήρες. Ο χαρακτήρας που αντιστοιχεί σε έναν δεδομένο κωδικό καθορίζεται από τον πίνακα κωδικών που χρησιμοποιείται. Έτσι, η τιμή μιας μεταβλητής όπως απανθρακώνωμπορεί να αντιμετωπιστεί είτε ως ακέραιος είτε ως χαρακτήρας του οποίου ο κωδικός είναι ίσος με αυτόν τον αριθμό.