1. Εισαγωγή

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

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

Ως βάση για να συζητήσουμε τα προβλήματα του αυτόματου προγραμματισμού, παίρνουμε μια πρόσφατη διάλεξη από τον Shalyto A.A. και τα χαρτιά του "λογισμικού" για τον ορισμό του παραδείγματος προγραμματισμού αυτόματα.

Μαθαίνοντας τα βασικά και τις λεπτές λεπτομέρειες της γλώσσας προγραμματισμού C++. Φροντιστήριο με πρακτικές εργασίεςκαι δοκιμές. Θέλετε να μάθετε πώς να προγραμματίζετε; Τότε είστε στο σωστό μέρος - εδώ δωρεάν εκπαίδευσηπρογραμματισμός. Είτε έχετε εμπειρία είτε όχι, αυτά τα μαθήματα προγραμματισμού θα σας βοηθήσουν να ξεκινήσετε τη δημιουργία, τη μεταγλώττιση και τον εντοπισμό σφαλμάτων προγραμμάτων C++ σε διαφορετικά περιβάλλοντα ανάπτυξης: οπτικό στούντιο, Code::Blocks, Xcode ή Eclipse.

Πολλά παραδείγματα και λεπτομερείς εξηγήσεις. Ιδανικό τόσο για αρχάριους (ανδρείκελα) όσο και για πιο προχωρημένους. Όλα εξηγούνται από την αρχή μέχρι την παραμικρή λεπτομέρεια. Αυτά τα μαθήματα (200+) θα σας δώσουν μια καλή βάση / βάση για την κατανόηση του προγραμματισμού όχι μόνο στη C ++, αλλά και σε άλλες γλώσσες προγραμματισμού. Και είναι εντελώς δωρεάν!

Καλύπτει επίσης τη δημιουργία βήμα προς βήμα ενός παιχνιδιού σε C ++, τη βιβλιοθήκη γραφικών SFML και περισσότερες από 50 εργασίες για να δοκιμάσετε τις δεξιότητες και τις γνώσεις σας στη C ++. Ένα πρόσθετο μπόνους είναι .

Για αναδημοσίευση +20 στο κάρμα και την ευγνωμοσύνη μου!

Κεφάλαιο αριθμός 0. Εισαγωγή. Έναρξη εργασιών

Κεφάλαιο αριθμός 1. Βασικά στοιχεία της C++

Κεφάλαιο αριθμός 2. Μεταβλητές και βασικοί τύποι δεδομένων στη C++

Κεφάλαιο αριθμός 3. Χειριστές σε C++

Κεφάλαιο αριθμός 4. Πεδίο εφαρμογής και άλλοι τύποι μεταβλητών στη C++

Κεφάλαιο αριθμός 5. Η σειρά με την οποία εκτελείται ο κώδικας σε ένα πρόγραμμα. Βρόχοι, διακλαδώσεις σε C++

Η C++ (προφέρεται c-plus-plus) είναι μια μεταγλωττισμένη, στατικά πληκτρολογημένη, γενικής χρήσης γλώσσα προγραμματισμού που μπορεί να χρησιμοποιηθεί για τη δημιουργία προγραμμάτων οποιουδήποτε επιπέδου πολυπλοκότητας.
Για περισσότερα από 20 χρόνια, αυτή η γλώσσα βρίσκεται στις τρεις πιο δημοφιλείς και πιο απαιτητικές γλώσσες προγραμματισμού. (Αυτό μπορεί να επαληθευτεί με επίσκεψη στον ιστότοπο της TIOBE).
Η γλώσσα ξεκίνησε στις αρχές της δεκαετίας του 1980, όταν ο υπάλληλος της Bell Labs, Björn Stroustrup, κατέληξε σε μια σειρά βελτιώσεων στη γλώσσα C για τις δικές του ανάγκες.

Bjarne Stroustrup - δημιουργός της γλώσσας C++

Ο Stroustrup αποφάσισε να επεκτείνει τη γλώσσα C με τις δυνατότητες που είναι διαθέσιμες στη γλώσσα Simula. Η γλώσσα C, που είναι η βασική γλώσσα του συστήματος UNIX στο οποίο έτρεχαν οι υπολογιστές Bell, είναι γρήγορη, πλούσια σε χαρακτηριστικά και φορητή. Ο Stroustrup πρόσθεσε σε αυτό τη δυνατότητα εργασίας με κλάσεις και αντικείμενα. Ως αποτέλεσμα, τα πρακτικά προβλήματα μοντελοποίησης αποδείχθηκαν προσβάσιμα τόσο από την άποψη του χρόνου ανάπτυξης (λόγω της χρήσης κλάσεων τύπου Simula) όσο και από την άποψη του χρόνου υπολογισμού (λόγω της ταχύτητας του C).
Να πώς το λέει ο ίδιος ο προγραμματιστής της γλώσσας:



Το 1998, το πρώτο γλωσσικό πρότυπο, γνωστό ως C++98, δημοσιεύτηκε από μια επιτροπή προτύπων. Η C++ συνεχίζει να εξελίσσεται για να ανταποκρίνεται στις σύγχρονες απαιτήσεις. Μία από τις ομάδες που αναπτύσσει τη γλώσσα C++ και στέλνει προτάσεις στην επιτροπή τυποποίησης της C++ για τη βελτίωσή της είναι Ωθηση, που ασχολείται, μεταξύ άλλων, με τη βελτίωση των δυνατοτήτων της γλώσσας με την προσθήκη χαρακτηριστικών μεταπρογραμματισμού σε αυτήν. Το πιο πρόσφατο πρότυπο κυκλοφόρησε το 2017 και ονομάζεται C++17. Το επόμενο πρότυπο δεν θα αργήσει να έρθει και αναμένεται να εμφανιστεί το 2020.
Κανείς δεν κατέχει τα δικαιώματα στη γλώσσα C++, είναι δωρεάν. Τον Μάρτιο του 2016, η Ρωσία ίδρυσε ομάδα εργασίας WG21 C++. Η ομάδα οργανώθηκε για να συγκεντρώσει προτάσεις για το πρότυπο C++, να τις υποβάλει στην επιτροπή και να τις υπερασπιστεί σε γενικές συνελεύσεις του Διεθνούς Οργανισμού Τυποποίησης.
Η C++ είναι μια γλώσσα πολλαπλών παραδειγμάτων (από τη λέξη paradigm - στυλ γραφής προγράμματα υπολογιστή), το οποίο περιλαμβάνει ένα ευρύ φάσμα διαφορετικών στυλ και τεχνολογιών προγραμματισμού. Συχνά αναφέρεται ως αντικειμενοστρεφής γλώσσα, αλλά, αυστηρά, αυτό δεν συμβαίνει. Στη διαδικασία της εργασίας, ο προγραμματιστής αποκτά απόλυτη ελευθερία στην επιλογή εργαλείων, έτσι ώστε το πρόβλημα που επιλύεται χρησιμοποιώντας τη μία ή την άλλη προσέγγιση να επιλύεται όσο το δυνατόν πιο αποτελεσματικά. Με άλλα λόγια, η C++ δεν αναγκάζει τον προγραμματιστή να τηρεί μόνο ένα στυλ ανάπτυξης προγράμματος (για παράδειγμα, αντικειμενοστραφή).
Η C++ διαθέτει μια πλούσια τυπική βιβλιοθήκη που περιλαμβάνει κοινά κοντέινερ και αλγόριθμους, I/O, κανονικές εκφράσεις, υποστήριξη πολλαπλών νημάτων και άλλες δυνατότητες. Η C++ έχει επηρεάσει πολλές γλώσσες προγραμματισμού, όπως: Java, C#, D. Δεδομένου ότι η C++ ανήκει σε μια οικογένεια γλωσσών που βασίζεται στη σύνταξη της γλώσσας C, άλλες γλώσσες προγραμματισμού αυτής της οικογένειας μπορούν εύκολα να κατακτηθούν: JavaScript , PHP, Perl, Objective-C και πολλά άλλα. . κ.λπ., συμπεριλαμβανομένης της ίδιας της μητρικής γλώσσας - Γ. ()
Κατά τη διάρκεια της ύπαρξής του, στη γλώσσα C ++ έχουν εδραιωθεί σταθεροί μύθοι, οι οποίοι διαψεύδονται εύκολα (δείτε εδώ: Μέρος 1 και Μέρος 2)

Η ιστορία της γλώσσας και η απελευθέρωση προτύπων

1983

Δημιουργός γλώσσας - Bjorn Stroustrup, στα Bell Labs, παρουσίασε μια πρώιμη έκδοση της C++ ("C with Classes")

1985

Πρώτη εμπορική κυκλοφορία της C++, η γλώσσα παίρνει σύγχρονο όνομα

1986

Κυκλοφορία της πρώτης έκδοσης της γλώσσας προγραμματισμού C++, ενός βιβλίου C++ γραμμένο από τον Bjorn Stroustrup

1998

Το διεθνές πρότυπο γλώσσας C++ επικυρώθηκε: ISO/IEC 14882:1998 "Standard for the C++ Programming Language"

2003
2005

Κυκλοφόρησε η Τεχνική Έκθεση Βιβλιοθήκης 1 (TR1). Αν και δεν αποτελεί επίσημα μέρος του προτύπου, η αναφορά περιέγραφε επεκτάσεις στην τυπική βιβλιοθήκη που θα έπρεπε να περιλαμβάνονται επόμενη έκδοσηΓλώσσα C++

2011

Έκδοση νέου προτύπου - C++11 ή ISO/IEC 14882:2011. νέο πρότυποπεριελάμβανε προσθήκες στον πυρήνα της γλώσσας και μια επέκταση στην τυπική βιβλιοθήκη, συμπεριλαμβανομένου μεγάλου μέρους του TR1

2014

Έκδοση του προτύπου C++14 («Διεθνές Πρότυπο ISO/IEC 14882:2014(E) Γλώσσα προγραμματισμού C++»); Η C++14 μπορεί να θεωρηθεί ως μια μικρή επέκταση της C++11, η οποία περιέχει κυρίως διορθώσεις σφαλμάτων και μικρές βελτιώσεις.

2017

Η κυκλοφορία του νέου προτύπου είναι C++1z (C++17). Αυτό το πρότυπο έχει κάνει πολλές αλλαγές και προσθήκες. Για παράδειγμα, το STD περιελάμβανε τυπικές βιβλιοθήκες C11, σύστημα αρχείων, βασισμένο στο boost::filesystem, ένα μεγάλο μέρος της πειραματικής βιβλιοθήκης TS I.

2020

Το C++20 είναι το ανεπίσημο όνομα για το πρότυπο ISO/IEC για τη γλώσσα προγραμματισμού C++, το οποίο αναμένεται μετά τη C++17. Προσχέδιο του προτύπου N4800.

Φιλοσοφία C++

Στο The Design and Evolution of C++ (2007), ο Bjorn Stroustrup περιγράφει τις αρχές που ακολούθησε κατά τον σχεδιασμό της C++ (δίνονται σε συντομογραφία):

  • Αποκτήστε μια καθολική γλώσσα με στατικούς τύπους δεδομένων, την αποτελεσματικότητα και τη φορητότητα του C.
  • Άμεση και ολοκληρωμένη υποστήριξη ποικίλων στυλ προγραμματισμού.
  • Δώστε στον προγραμματιστή ελευθερία επιλογής, ακόμα κι αν του δίνει τη δυνατότητα να επιλέξει λανθασμένα.
  • Διατηρήστε τη συμβατότητα με το C όσο το δυνατόν περισσότερο, καθιστώντας έτσι δυνατή την εύκολη εναλλαγή από τον προγραμματισμό στο C.
  • Αποφύγετε τις ασυνέπειες μεταξύ C και C++: κάθε κατασκευή που είναι έγκυρη και στις δύο γλώσσες πρέπει να σημαίνει το ίδιο πράγμα σε καθεμία από αυτές και να οδηγεί στην ίδια συμπεριφορά προγράμματος.
  • Αποφύγετε λειτουργίες που εξαρτώνται από την πλατφόρμα ή δεν είναι καθολικές.
  • "Μην πληρώνετε για ό,τι δεν χρησιμοποιείτε" - Καμία δυνατότητα γλώσσας δεν πρέπει να προκαλεί υποβάθμιση της απόδοσης για προγράμματα που δεν τη χρησιμοποιούν.
  • Μην απαιτείτε πολύ περίπλοκο περιβάλλον προγραμματισμού.

C και C++

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

Πρόγραμμα 9.1

#περιλαμβάνω int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

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

Μοντέλα κύκλου ζωής εφαρμογής

Κύκλος ζωής λογισμικόείναι η χρονική περίοδος που ξεκινά από τη στιγμή που λαμβάνεται μια απόφαση για την ανάγκη δημιουργίας προϊόν λογισμικούκαι λήγει τη στιγμή της πλήρους απόσυρσής του από τη λειτουργία. Αυτός ο κύκλος είναι η διαδικασία δημιουργίας και ανάπτυξης λογισμικού (SW). Υπάρχουν πολλά μοντέλα κύκλος ζωής.
Cascade μοντέλοο κύκλος ζωής (αγγλικό μοντέλο καταρράκτη) προτάθηκε το 1970 από τον Winston Royce. Προβλέπει τη διαδοχική υλοποίηση όλων των σταδίων του έργου με αυστηρά καθορισμένη σειρά. Η μετάβαση στο επόμενο στάδιο σημαίνει την πλήρη ολοκλήρωση της εργασίας στο προηγούμενο στάδιο. Οι απαιτήσεις που ορίζονται στο στάδιο δημιουργίας απαιτήσεων τεκμηριώνονται αυστηρά στο έντυπο όροι αναφοράςκαι καθορίζονται για τη διάρκεια του έργου. Κάθε στάδιο τελειώνει με την απελευθέρωση πλήρες σετεπαρκή τεκμηρίωση ώστε η ανάπτυξη να μπορεί να συνεχιστεί από άλλη ομάδα ανάπτυξης.
Στάδια έργου σύμφωνα με το μοντέλο καταρράκτη:

  1. Διαμόρφωση απαιτήσεων;
  2. Σχέδιο;
  3. Εκτέλεση;
  4. Δοκιμές;
  5. εκτέλεση;
  6. Λειτουργία και συντήρηση.

Στο μοντέλο καταρράκτη, η μετάβαση από τη μια φάση του έργου στην άλλη προϋποθέτει την πλήρη ορθότητα του αποτελέσματος της προηγούμενης φάσης. Σε μεγάλα έργα, αυτό είναι σχεδόν αδύνατο να επιτευχθεί. Επομένως, ένα τέτοιο μοντέλο είναι κατάλληλο μόνο για την ανάπτυξη ενός μικρού έργου. (Ο ίδιος ο W. Royce δεν τηρούσε αυτό το μοντέλο και χρησιμοποίησε ένα επαναληπτικό μοντέλο).
Επαναληπτικό μοντέλο
Μια εναλλακτική λύση στο μοντέλο του καταρράκτη είναι το μοντέλο της επαναληπτικής και επαυξητικής ανάπτυξης (IID), το οποίο έλαβε από τον T. Gilb τη δεκαετία του '70. το όνομα του εξελικτικού μοντέλου. Το μοντέλο IID αναλύει τον κύκλο ζωής ενός έργου σε μια σειρά επαναλήψεων, καθεμία από τις οποίες μοιάζει με ένα «μίνι-έργο», συμπεριλαμβανομένων όλων των διαδικασιών ανάπτυξης που εφαρμόζονται για τη δημιουργία μικρότερων τμημάτων λειτουργικότητας, σε σύγκριση με το έργο ως σύνολο. Ο στόχος κάθε επανάληψης είναι να αποκτήσει μια λειτουργική έκδοση του συστήματος λογισμικού, συμπεριλαμβανομένης της λειτουργικότητας που ορίζεται από το ενσωματωμένο περιεχόμενο όλων των προηγούμενων και τρεχουσών επαναλήψεων. Το αποτέλεσμα της τελικής επανάληψης περιέχει όλη την απαιτούμενη λειτουργικότητα του προϊόντος. Έτσι, με την ολοκλήρωση κάθε επανάληψης, το προϊόν λαμβάνει μια αύξηση - μια προσαύξηση - των δυνατοτήτων του, οι οποίες, επομένως, αναπτύσσονται εξελικτικά.


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

Διαδικασία ανάπτυξης - Ορθολογική ενοποιημένη διαδικασία (RUP)

Ορθολογική ενοποιημένη διαδικασία (RUP)(λογικός ενιαία διαδικασία) είναι μια μεθοδολογία ανάπτυξης λογισμικού που διατηρεί η Rational Software (IBM). Η μεθοδολογία παρέχει συστάσεις για όλα τα στάδια ανάπτυξης: από το επιχειρηματικό μοντέλο μέχρι τη δοκιμή και την έναρξη λειτουργίας του ολοκληρωμένου προγράμματος. Ως γλώσσα μοντελοποίησης χρησιμοποιείται η Unified Modeling Language (UML).
Ο πλήρης κύκλος ζωής ανάπτυξης προϊόντος αποτελείται από τέσσερις φάσεις, καθεμία από τις οποίες περιλαμβάνει μία ή περισσότερες επαναλήψεις.

  • Αρχικό στάδιο (Έναρξη)
  • Προσδιορισμός του αντικειμένου του έργου και του ποσού των απαιτούμενων πόρων. Καθορίζονται οι κύριες απαιτήσεις, οι περιορισμοί και η βασική λειτουργικότητα του προϊόντος. Οι κίνδυνοι αξιολογούνται. Σχεδιασμός δράσης. Στο τέλος της αρχικής φάσης, αξιολογείται η επίτευξη του Ορόσημου του Στόχου του Κύκλου Ζωής, που συνεπάγεται συμφωνία μεταξύ των ενδιαφερομένων για τη συνέχιση του έργου.

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

  • Κατασκευή
  • Στη φάση «Build», υλοποιείται το μεγαλύτερο μέρος της λειτουργικότητας του προϊόντος: ολοκληρώνεται ο σχεδιασμός της εφαρμογής, πηγήγραπτός. Η φάση κατασκευής τελειώνει με την πρώτη εξωτερική έκδοση του συστήματος και το ορόσημο της αρχικής λειτουργικής ικανότητας.

  • Υλοποίηση (Μετάβαση)
  • Στη φάση «Υλοποίηση» δημιουργείται η τελική έκδοση του προϊόντος και μεταφέρεται από τον προγραμματιστή στον πελάτη. Αυτό περιλαμβάνει ένα πρόγραμμα δοκιμών beta, εκπαίδευση χρηστών και διασφάλιση ποιότητας προϊόντων. Σε περίπτωση που η ποιότητα δεν ανταποκρίνεται στις προσδοκίες των χρηστών ή τα κριτήρια που τέθηκαν στη φάση Έναρξης, η φάση υλοποίησης επαναλαμβάνεται ξανά. Η επίτευξη όλων των στόχων σημαίνει την επίτευξη του ορόσημου του τελικού προϊόντος (Κυκλοφορία προϊόντος) και την ολοκλήρωση του πλήρους κύκλου ανάπτυξης.



« ΤΕΧΝΟΛΟΓΙΑ της ΠΛΗΡΟΦΟΡΙΑΣ. Μηχανική συστημάτων και λογισμικού. Διαδικασίες κύκλου ζωής εργαλεία λογισμικού» . Αυτό το πρότυπο έχει υιοθετηθεί από την Ομοσπονδιακή Υπηρεσία Τεχνικού Κανονισμού και Μετρολογίας της Ρωσικής Ομοσπονδίας και είναι παρόμοιο με το διεθνές πρότυπο ISO/IEC 12207:2008. Αυτό το πρότυπο, καθιερώνει ένα γενικό πλαίσιο για τις διαδικασίες του κύκλου ζωής του λογισμικού που μπορεί να χρησιμοποιηθεί ως καθοδήγηση στη βιομηχανία λογισμικού. Το πρότυπο δεν προσφέρει συγκεκριμένο μοντέλοκύκλος ζωής. Οι διατάξεις του είναι κοινές σε οποιαδήποτε μοντέλα κύκλου ζωής, μεθόδους και τεχνολογίες για τη δημιουργία λογισμικού. Περιγράφει τη δομή των διαδικασιών του κύκλου ζωής χωρίς να προσδιορίζει τον τρόπο υλοποίησης ή εκτέλεσης των δραστηριοτήτων και των εργασιών που περιλαμβάνονται σε αυτές τις διαδικασίες.

Παρουσίαση για το μάθημα
Θέματα μηνυμάτων
  • Ίδρυμα Ελεύθερου Λογισμικού (FSF)
  • Άδειες χρήσης ελεύθερου λογισμικού
  • Ελεύθερο Λογισμικό και Ανοιχτό Κώδικα
  • Ιστορία της ανάπτυξης των γλωσσών προγραμματισμού
  • Ιστορία C. C και C++
  • Ιστορία
  • Κριτική της C++
  • Ιστορία του UNIX
  • Μοντέλο Κύκλου Ζωής Λογισμικού Spiral
  • UML (Αγγλική ενοποιημένη γλώσσα μοντελοποίησης - ενοποιημένη γλώσσα μοντελοποίησης)
  • Microsoft Solutions Framework
  • IDE για προγραμματισμό C/C++ σε Windows
  • C/C++ μεταγλωττιστές
  • Δημιουργία εφαρμογής Κονσόλας στα Windows
Ερωτήσεις
  1. Γιατί το μοντέλο ανάπτυξης λογισμικού waterfall δεν χρησιμοποιείται σε μεγάλα έργα;
  2. Ποια είναι η διαφορά μεταξύ μοντέλων καταρράκτη και επαναληπτικής ανάπτυξης;
  3. Καταγράψτε τα στάδια ανάπτυξης λογισμικού στη μεθοδολογία Rational Unified Process (RUP).

Σε αυτό το άρθρο, η συνάρτηση scanf() εξετάζεται σε γενική μορφή χωρίς αναφορά σε ένα συγκεκριμένο πρότυπο, επομένως δεδομένα από οποιαδήποτε πρότυπα C99, C11, C++11, C++14 περιλαμβάνονται εδώ. Ίσως, σε ορισμένα πρότυπα, η λειτουργία λειτουργεί με διαφορές από το υλικό που παρουσιάζεται στο άρθρο.

scanf C λειτουργία - περιγραφή

Η scanf() είναι μια συνάρτηση που βρίσκεται στα αρχεία κεφαλίδας stdio.h(C) και cstdio(C++), γνωστή και ως μορφοποιημένη είσοδος προγράμματος. Το scanf διαβάζει χαρακτήρες από την τυπική ροή εισόδου (stdin) και τους μετατρέπει ανάλογα με τη μορφή και στη συνέχεια τους γράφει στις καθορισμένες μεταβλητές. Μορφή - σημαίνει ότι τα δεδομένα μετατρέπονται σε μια συγκεκριμένη φόρμα κατά την παραλαβή. Έτσι η συνάρτηση scanf C περιγράφεται:

scanf("%format", &variable1[, &variable2,[…]]),

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

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

Το Scanf σάς επιτρέπει να εισάγετε όλους τους βασικούς τύπους της γλώσσας: char, int, float, string κ.λπ. Στην περίπτωση των μεταβλητών τύπος χορδήςδεν χρειάζεται να καθορίσετε το σύμβολο διεύθυνσης - "&", επειδή μεταβλητή τύπουΗ συμβολοσειρά είναι ένας πίνακας και το όνομά του είναι η διεύθυνση του πρώτου στοιχείου του πίνακα στη μνήμη του υπολογιστή.

Μορφή εισόδου ή συμβολοσειρά ελέγχου

Ας ξεκινήσουμε εξετάζοντας ένα παράδειγμα χρήσης της συνάρτησης scanf C από την περιγραφή.

#περιλαμβάνω int main() ( int x; while (scanf("%d", &x) == 1) printf("%d\n", x); return 0; //απαίτηση για συστήματα linux )

Η μορφή εισόδου αποτελείται από τις ακόλουθες τέσσερις παραμέτρους: %[*][width][modifiers] type. Σε αυτήν την περίπτωση, το σύμβολο "%" και ο τύπος είναι υποχρεωτικές παράμετροι. Δηλαδή, η ελάχιστη μορφή της μορφής μοιάζει με αυτό: "%s", "%d" και ούτω καθεξής.

Γενικά, οι χαρακτήρες που απαρτίζουν τη συμβολοσειρά μορφοποίησης χωρίζονται σε:

  • προσδιοριστές μορφής - όλα όσα ξεκινούν με τον χαρακτήρα %.
  • διαχωριστικό ή κενό - είναι το διάστημα, η καρτέλα (\t), νέα γραμμή(\n);
  • χαρακτήρες εκτός από κενό διάστημα.

Η λειτουργία ενδέχεται να μην είναι ασφαλής.

Χρησιμοποιήστε τη συνάρτηση scanf_s() αντί για scanf().

(ανάρτηση από το Visual Studio)

Πληκτρολογήστε ή προσδιοριστές μορφής ή χαρακτήρες μετατροπής ή χαρακτήρες ελέγχου

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

Εννοια

Το πρόγραμμα περιμένει για εισαγωγή χαρακτήρων. Η μεταβλητή που θα γραφεί πρέπει να είναι τύπου char.

Το πρόγραμμα περιμένει εισαγωγή δεκαδικός αριθμόςακέραιος τύπος. Η μεταβλητή πρέπει να είναι τύπου int.

Το πρόγραμμα αναμένει μια είσοδο ενός αριθμού κινητής υποδιαστολής (κόμμα) σε εκθετική μορφή. Η μεταβλητή πρέπει να είναι τύπου float.

Το πρόγραμμα αναμένει την είσοδο ενός αριθμού κινητής υποδιαστολής (κόμμα). Η μεταβλητή πρέπει να είναι τύπου float.

7

Το πρόγραμμα αναμένει την είσοδο ενός αριθμού κινητής υποδιαστολής (κόμμα). Η μεταβλητή πρέπει να είναι τύπου float.

Το πρόγραμμα περιμένει εισαγωγή οκταδικός αριθμός. Η μεταβλητή πρέπει να είναι τύπου int.

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

Το πρόγραμμα αναμένει να εισαχθεί ένας δεκαεξαδικός αριθμός. Η μεταβλητή πρέπει να είναι τύπου int.

Η μεταβλητή αναμένει μια είσοδο δείκτη. Η μεταβλητή πρέπει να είναι τύπου δείκτη.

Γράφει στη μεταβλητή μια ακέραια τιμή ίση με τον αριθμό των χαρακτήρων που διαβάστηκαν μέχρι τώρα από τη συνάρτηση scanf.

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

Το πρόγραμμα αναμένει να εισαχθεί ένας δυαδικός αριθμός. Η μεταβλητή πρέπει να είναι τύπου int.

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

Χαρακτήρες στη συμβολοσειρά μορφής

Σύμβολο αστερίσκου (*)

Ο αστερίσκος (*) είναι μια σημαία που υποδεικνύει ότι η λειτουργία εκχώρησης θα πρέπει να καταργηθεί. Ένας αστερίσκος τοποθετείται αμέσως μετά το σύμβολο "%". Για παράδειγμα,

Scanf("%d%*c%d", &x, &y); //αγνοήστε τον χαρακτήρα μεταξύ δύο ακεραίων. scanf("%s%*d%s", str, str2); //αγνοήστε τον ακέραιο μεταξύ δύο συμβολοσειρών.

Δηλαδή, εάν εισάγετε τη γραμμή "45-20" στην κονσόλα, το πρόγραμμα θα κάνει τα εξής:

  1. Στη μεταβλητή "x" θα εκχωρηθεί η τιμή 45.
  2. Στη μεταβλητή "y" θα εκχωρηθεί η τιμή 20.
  3. Και το σύμβολο μείον (παύλα) "-" θα αγνοηθεί χάρη στο "%*c".

Πλάτος (ή πλάτος περιθωρίου)

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

Λάβετε υπόψη μερικά σημαντικά σημεία:

  1. Το scanf θα ματαιώσει αν συναντήσει διαχωριστικό χαρακτήρα, ακόμα κι αν δεν μετρούσε 20 χαρακτήρες.
  2. Εάν εισαχθούν περισσότεροι από 20 χαρακτήρες, μόνο οι πρώτοι 20 χαρακτήρες θα εγγραφούν στο str.

Τροποποιητές τύπου (ή ακρίβειας)

Πρόκειται για ειδικές σημαίες που τροποποιούν τον τύπο των δεδομένων που αναμένεται για εισαγωγή. Η σημαία καθορίζεται στα αριστερά του προσδιοριστή τύπου:

  • L ή l (μικρό L) Όταν το "l" χρησιμοποιείται με τους προσδιοριστές d, i, o, u, x, η σημαία λέει στο πρόγραμμα ότι αναμένεται μεγάλη είσοδος. Όταν χρησιμοποιείται το "l" με τον προσδιοριστή e ή f, η σημαία λέει στο πρόγραμμα ότι θα πρέπει να αναμένει διπλή τιμή. Η χρήση του "L" λέει στο πρόγραμμα ότι αναμένεται ένα μακρύ διπλό. Η χρήση του "l" με τους προσδιοριστές "c" και "s" λέει στο πρόγραμμα ότι αναμένονται χαρακτήρες δύο byte όπως ο wchar_t. Για παράδειγμα, "%lc", "%ls", "%l".
  • h είναι μια σημαία που υποδεικνύει τον σύντομο τύπο.
  • hh - υποδηλώνει ότι η μεταβλητή είναι δείκτης σε μια τιμή τύπου signed char ή unsigned char. Η σημαία μπορεί να χρησιμοποιηθεί με τους προσδιοριστές d, i, o, u, x, n.
  • Το ll (δύο μικρά L) υποδηλώνει ότι η μεταβλητή είναι δείκτης σε μια τιμή τύπου signed int ή unsigned long long int. Η σημαία χρησιμοποιείται με προσδιοριστές: d, i, o, u, x, n.
  • j - υποδηλώνει ότι η μεταβλητή είναι δείκτης για να πληκτρολογήσετε intmax_t ή uintmax_t από αρχείο κεφαλίδας stdint.h Χρησιμοποιείται με προσδιοριστές: d, i, o, u, x, n.
  • z - υποδηλώνει ότι η μεταβλητή είναι δείκτης του τύπου size_t, ο ορισμός του οποίου βρίσκεται στο stddef.h. Χρησιμοποιείται με προσδιοριστές: d, i, o, u, x, n.
  • t - υποδηλώνει ότι η μεταβλητή είναι δείκτης στον τύπο ptrdiff_t. Ο ορισμός αυτού του τύπου είναι στο stddef.h. Χρησιμοποιείται με προσδιοριστές: d, i, o, u, x, n.

Πιο ξεκάθαρα, η εικόνα με τροποποιητές μπορεί να παρουσιαστεί με τη μορφή πίνακα. Μια τέτοια περιγραφή του scanf C για προγραμματιστές θα είναι πιο ξεκάθαρη.

Άλλοι χαρακτήρες

Τυχόν χαρακτήρες που συναντώνται στη μορφή θα απορριφθούν. Θα πρέπει να σημειωθεί ότι η παρουσία κενού διαστήματος ή διαχωριστικών χαρακτήρων (νέα γραμμή, κενό, καρτέλα) στη συμβολοσειρά ελέγχου μπορεί να οδηγήσει σε διαφορετική συμπεριφορά της συνάρτησης. Σε μια έκδοση, το scanf() θα διαβάζει χωρίς να αποθηκεύει κανέναν αριθμό διαχωριστικών μέχρι να συναντήσει έναν χαρακτήρα διαφορετικό από το διαχωριστικό και σε μια άλλη έκδοση, τα κενά (μόνο αυτά) δεν παίζουν ρόλο και η έκφραση "%d + %d" ισοδυναμεί με "% d+%d".

Παραδείγματα

Ας εξετάσουμε ορισμένα παραδείγματα που σας επιτρέπουν να σκεφτείτε και να κατανοήσετε με μεγαλύτερη ακρίβεια τη λειτουργία της συνάρτησης.

scanf("%3s", str); //αν εισαγάγετε τη συμβολοσειρά "1d2s3d1;3" στην κονσόλα, μόνο το "1d2" θα γραφτεί στο str scanf("%dminus%d", &x, &y); //μείον χαρακτήρες μεταξύ δύο αριθμών θα απορριφθούν scanf("%5", str); // Οι χαρακτήρες θα εισάγονται στο str μέχρι να υπάρχουν 5 χαρακτήρες και οι χαρακτήρες είναι αριθμοί από το 0 έως το 9. scanf("%lf", &d); //expect double input scanf("%hd", &x); //αναμενόμενος αριθμός τύπου short scanf("%hu", &y); //αναμένεται ανυπόγραφος αριθμός short scanf("lx", &z); //αναμενόμενος αριθμός τύπου long int

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

scanf C - περιγραφή για αρχάριους

Αυτός ο τομέαςθα είναι χρήσιμο για αρχάριους. Συχνά χρειάζεται να έχετε στο χέρι όχι τόσο πολλά Πλήρης περιγραφή scanf C πόσες λεπτομέρειες για τον τρόπο λειτουργίας της συνάρτησης.

  • Το χαρακτηριστικό είναι κάπως καταργημένο. Υπάρχουν πολλές διαφορετικές υλοποιήσεις σε βιβλιοθήκες διαφορετικών εκδόσεων. Για παράδειγμα, η βελτιωμένη λειτουργία σάρωσης S C, περιγραφή της οποίας βρίσκεται στο microsoft.
  • Ο αριθμός των προσδιοριστών στη μορφή πρέπει να ταιριάζει με τον αριθμό των ορισμάτων που διαβιβάζονται στη συνάρτηση.
  • Τα στοιχεία της ροής εισόδου πρέπει να διαχωρίζονται μόνο με διαχωριστικούς χαρακτήρες: κενό, καρτέλα, νέα γραμμή. Κόμμα, ερωτηματικό, τελεία κ.λπ. - αυτοί οι χαρακτήρες δεν είναι διαχωριστικά για τη συνάρτηση scanf().
  • Εάν το scanf συναντήσει διαχωριστικό χαρακτήρα, η είσοδος θα διακοπεί. Εάν υπάρχουν περισσότερες από μία μεταβλητές προς ανάγνωση, τότε το scanf θα προχωρήσει στην ανάγνωση της επόμενης μεταβλητής.
  • Η παραμικρή ασυνέπεια στη μορφή των δεδομένων εισόδου οδηγεί σε απρόβλεπτα αποτελέσματα του προγράμματος. Λοιπόν, εάν το πρόγραμμα τελειώνει με ένα σφάλμα. Αλλά συχνά το πρόγραμμα συνεχίζει να λειτουργεί και το κάνει λάθος.
  • scanf("%20s...",...); Εάν η ροή εισόδου υπερβαίνει τους 20 χαρακτήρες, τότε το scanf θα διαβάσει τους πρώτους 20 χαρακτήρες και είτε θα ματαιώσει είτε θα προχωρήσει στην ανάγνωση της επόμενης μεταβλητής, εάν έχει καθοριστεί μία. Σε αυτήν την περίπτωση, η επόμενη κλήση προς σάρωση θα συνεχίσει να διαβάζει τη ροή εισόδου από το σημείο όπου σταμάτησε η εργασία της προηγούμενης κλήσης προς σάρωση. Εάν παρουσιαστεί ένας διαχωριστικός χαρακτήρας κατά την ανάγνωση των πρώτων 20 χαρακτήρων, το scanf θα ματαιώσει ή θα προχωρήσει στην ανάγνωση της επόμενης μεταβλητής, ακόμα κι αν δεν διάβασε 20 χαρακτήρες για την πρώτη μεταβλητή. Σε αυτήν την περίπτωση, όλοι οι μη αναγνωσμένοι χαρακτήρες θα προσαρτηθούν στην επόμενη μεταβλητή.
  • Εάν το σύνολο των σαρωμένων χαρακτήρων ξεκινά με ένα σύμβολο "^", τότε το scanf θα διαβάσει τα δεδομένα μέχρι να συναντήσει έναν χαρακτήρα οριοθέτη ή έναν χαρακτήρα από το σύνολο. Για παράδειγμα, το "%[^A-E1-5]" θα διαβάσει δεδομένα από τη ροή μέχρι έναν από τους αγγλικούς χαρακτήρες από το Α έως το Ε στο κεφαλαίοή έναν από τους αριθμούς από το 1 έως το 5.
  • Η συνάρτηση scanf C, εξ ορισμού, επιστρέφει έναν αριθμό ίσο με τον αριθμό των επιτυχημένων εγγραφών σε μεταβλητές. Εάν το scanf γράψει 3 μεταβλητές, τότε το αποτέλεσμα επιτυχίας της συνάρτησης θα επιστρέψει τον αριθμό 3. Εάν το scanf δεν μπορούσε να γράψει καμία μεταβλητή, τότε το αποτέλεσμα θα είναι 0. Και, τέλος, εάν το scanf δεν μπορούσε να ξεκινήσει καθόλου για κάποιο λόγο, το αποτέλεσμα θα είναι ο ΕΟΦ .
  • Εάν η συνάρτηση scanf() ολοκλήρωσε την εργασία της λανθασμένα. Για παράδειγμα, scanf("%d", &x) - αναμενόταν ένας αριθμός, αλλά η είσοδος έλαβε χαρακτήρες. Η επόμενη κλήση στο scanf() θα ξεκινήσει στο σημείο της ροής εισόδου όπου σταμάτησε η προηγούμενη κλήση συνάρτησης. Για να ξεπεραστεί αυτό το πρόβλημα, είναι απαραίτητο να απαλλαγούμε από τους χαρακτήρες του προβλήματος. Αυτό μπορεί να γίνει, για παράδειγμα, καλώντας το scanf("%*s"). Δηλαδή, η συνάρτηση θα διαβάσει μια σειρά χαρακτήρων και θα την πετάξει. Με αυτόν τον δύσκολο τρόπο, μπορείτε να συνεχίσετε να εισάγετε τα απαραίτητα δεδομένα.
  • Ορισμένες υλοποιήσεις του scanf() δεν επιτρέπουν τη σάρωση του "-" στο σύνολο χαρακτήρων.
  • Ο προσδιοριστής "%c" διαβάζει κάθε χαρακτήρα από τη ροή. Δηλαδή διαβάζει και τον διαχωριστικό χαρακτήρα. Για να παραλείψετε τον χαρακτήρα οριοθέτησης και να συνεχίσετε την ανάγνωση του επιθυμητού χαρακτήρα, μπορεί να χρησιμοποιηθεί το "%1s".
  • Όταν χρησιμοποιείτε τον προσδιοριστή "c", είναι αποδεκτό να χρησιμοποιείτε το πλάτος "%10c", αλλά στη συνέχεια στη μορφή μεταβλητή συνάρτησηςΤο scanf πρέπει να περάσει μια σειρά στοιχείων τύπου char.
  • Το "%" σημαίνει "όλα τα μικρά γράμματα του αγγλικού αλφαβήτου" και το "%" σημαίνει μόνο 3 χαρακτήρες: 'z', 'a', '-'. Με άλλα λόγια, ο χαρακτήρας "-" σημαίνει ένα εύρος μόνο εάν είναι μεταξύ δύο χαρακτήρων που είναι στη σωστή σειρά. Εάν το "-" βρίσκεται στο τέλος μιας έκφρασης, στην αρχή ή σε λάθος σειρά χαρακτήρων και στις δύο πλευρές τους, τότε είναι απλώς ένας χαρακτήρας παύλας, όχι ένα εύρος.

συμπέρασμα

Αυτό ολοκληρώνει την περιγραφή του scanf C. Αυτή είναι μια ωραία εύχρηστη λειτουργία για εργασία μικρά προγράμματακαι όταν χρησιμοποιείται η διαδικαστική μέθοδος προγραμματισμού. Ωστόσο, το κύριο μειονέκτημα είναι ο αριθμός των απρόβλεπτων σφαλμάτων που μπορεί να προκύψουν κατά τη χρήση του scanf. Επομένως, η περιγραφή του scanf C κατά τον προγραμματισμό είναι καλύτερα να διατηρείται μπροστά στα μάτια σας. Σε μεγάλα επαγγελματικά έργα, χρησιμοποιούνται iostreams, λόγω του γεγονότος ότι έχουν δυνατότητες υψηλότερου επιπέδου, μπορούν καλύτερα να πιάνουν και να χειρίζονται λάθη, καθώς και να εργάζονται με σημαντικές ποσότητες πληροφοριών. Θα πρέπει επίσης να σημειωθεί ότι η περιγραφή του scanf C στα ρωσικά είναι διαθέσιμη σε πολλές διαδικτυακές πηγές, καθώς και παραδείγματα χρήσης του, λόγω της ηλικίας της λειτουργίας. Επομένως, εάν είναι απαραίτητο, μπορείτε πάντα να βρείτε την απάντηση σε θεματικά φόρουμ.

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

Τελευταία ενημέρωση: 28/08/2017

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

Έχει τις ρίζες του στη γλώσσα C, η οποία αναπτύχθηκε το 1969-1973 στα Bell Labs από τον προγραμματιστή Dennis Ritchie. Στις αρχές της δεκαετίας του 1980, ο Δανός προγραμματιστής Bjarne Stroustrup, τότε στο Bell Labs, ανέπτυξε την C++ ως επέκταση της γλώσσας C. Στην πραγματικότητα, στην αρχή, η C++ απλώς συμπλήρωσε τη γλώσσα C με ορισμένα χαρακτηριστικά αντικειμενοστρεφούς προγραμματισμού. Και έτσι ο ίδιος ο Stroustrup στην αρχή το ονόμασε "C with classes" ("C with classes").

Στη συνέχεια, η νέα γλώσσα άρχισε να κερδίζει δημοτικότητα. Προστέθηκαν νέα χαρακτηριστικά σε αυτήν που την έκαναν όχι απλώς προσθήκη στη C, αλλά μια εντελώς νέα γλώσσα προγραμματισμού. Ως αποτέλεσμα, το "C with classes" μετονομάστηκε σε C++. Και από τότε, και οι δύο γλώσσες άρχισαν να αναπτύσσονται ανεξάρτητα η μία από την άλλη.

Η C++ είναι μια ισχυρή γλώσσα, που κληρονομεί πλούσιες δυνατότητες μνήμης από τη C. Ως εκ τούτου, η C++ βρίσκει συχνά την εφαρμογή της στον προγραμματισμό συστήματος, ιδιαίτερα κατά τη δημιουργία λειτουργικά συστήματα, προγράμματα οδήγησης, διάφορα βοηθητικά προγράμματα, προγράμματα προστασίας από ιούς κ.λπ. Παρεμπιπτόντως, τα Windows είναι κυρίως γραμμένα σε C++. Αλλά μόνο προγραμματισμός συστήματοςη χρήση αυτής της γλώσσας δεν είναι περιορισμένη. Η C++ μπορεί να χρησιμοποιηθεί σε προγράμματα οποιουδήποτε επιπέδου όπου η ταχύτητα και η απόδοση είναι σημαντικές. Συχνά χρησιμοποιείται για τη δημιουργία γραφικές εφαρμογές, διάφορα προγράμματα εφαρμογής. Επίσης, χρησιμοποιείται ιδιαίτερα συχνά για τη δημιουργία παιχνιδιών με πλούσια πλούσια οπτική. Επιπλέον, η κατεύθυνση των κινητών κερδίζει πρόσφατα δυναμική, όπου και η C ++ έχει βρει την εφαρμογή της. Και ακόμη και στην ανάπτυξη ιστού, μπορείτε επίσης να χρησιμοποιήσετε τη C++ για να δημιουργήσετε εφαρμογές Ιστού ή κάποιου είδους βοηθητικές υπηρεσίες που εξυπηρετούν εφαρμογές Ιστού. Γενικά, η C++ είναι μια ευρέως χρησιμοποιούμενη γλώσσα στην οποία μπορείτε να γράψετε σχεδόν οποιοδήποτε είδος προγράμματος.

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

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

Σταθμοί ανάπτυξης

Το 1979-80, ο Bjarne Stroustrup ανέπτυξε μια επέκταση στη γλώσσα C - "C με τάξεις". Το 1983 η γλώσσα μετονομάστηκε σε C++.

Το 1985 κυκλοφόρησε η πρώτη εμπορική έκδοση της γλώσσας C++, καθώς και η πρώτη έκδοση του βιβλίου "The C++ Programming Language", που αντιπροσώπευε την πρώτη περιγραφή αυτής της γλώσσας ελλείψει επίσημου προτύπου.

Κυκλοφόρησε το 1989 μια νέα έκδοση C++ 2.0, το οποίο περιλάμβανε μια σειρά από νέες δυνατότητες. Μετά από αυτό, η γλώσσα αναπτύχθηκε σχετικά αργά μέχρι το 2011. Ταυτόχρονα όμως, το 1998, έγινε η πρώτη προσπάθεια τυποποίησης της γλώσσας από τον ISO (Διεθνής Οργανισμός Τυποποίησης). Το πρώτο πρότυπο ονομαζόταν ISO/IEC 14882:1998 ή C++98 για συντομία. Αργότερα το 2003 δημοσιεύτηκε μια νέα έκδοση του προτύπου C++03.

Το 2011 δημοσιεύτηκε το νέο πρότυπο C++11, το οποίο περιείχε πολλές προσθήκες και εμπλούτισε τη γλώσσα C++ με μεγάλο αριθμό νέων χαρακτηριστικών. Ακολούθησε το 2014 μια μικρή προσθήκη στο πρότυπο, γνωστό και ως C++14. Και ένα ακόμα απελευθέρωση κλειδιούγλώσσα έχει προγραμματιστεί για το 2017.

Μεταγλωττιστές και περιβάλλοντα ανάπτυξης

Για να αναπτύξετε προγράμματα σε C++, χρειάζεστε έναν μεταγλωττιστή - μεταφράζει τον πηγαίο κώδικα της C++ σε ένα εκτελέσιμο αρχείο, το οποίο στη συνέχεια μπορεί να εκτελεστεί. Αλλά σε αυτή τη στιγμήυπάρχουν πολλοί διαφορετικοί μεταγλωττιστές εκεί έξω. Ενδέχεται να διαφέρουν από διάφορες πτυχές, ιδίως όσον αφορά την εφαρμογή προτύπων. Μια βασική λίστα μεταγλωττιστών για C++ μπορεί να βρεθεί στη wikipedia. Συνιστάται για την ανάπτυξη να επιλέξετε εκείνους τους μεταγλωττιστές που αναπτύσσουν και εφαρμόζουν όλα τα πιο πρόσφατα πρότυπα. Για παράδειγμα, σε όλο αυτό το σεμινάριο, ο δωρεάν διαθέσιμος μεταγλωττιστής g++, που αναπτύχθηκε από το έργο GNU, θα χρησιμοποιείται κυρίως.

Μπορείτε επίσης να χρησιμοποιήσετε IDE όπως Visual Studio, Netbeans, Eclipse, Qt κ.λπ. για να δημιουργήσετε προγράμματα.