1.1 -- Instrukcje i struktura programu

Wprowadzenie do rozdziału

Witamy w pierwszym głównym rozdziale tych samouczków C++!

W tym rozdziale po raz pierwszy przyjrzymy się szeregowi tematów, które są istotne dla każdego programu C++. Ponieważ jest sporo tematów do omówienia, większość omówimy na dość płytkim poziomie (wystarczającym, aby sobie poradzić). Celem tego rozdziału jest pomoc w zrozumieniu budowy podstawowych programów w języku C++. Pod koniec rozdziału będziesz mógł pisać własne proste programy.

W przyszłych rozdziałach ponownie omówimy większość tych tematów i przeanalizujemy je bardziej szczegółowo. Wprowadzimy także nowe koncepcje, które bazują na nich.

Aby utrzymać odpowiednią długość lekcji, tematy można podzielić na kilka kolejnych lekcji. Jeśli masz wrażenie, że na lekcji nie omówiono jakiegoś ważnego zagadnienia lub masz pytanie, na które nie ma odpowiedzi na bieżącej lekcji, możliwe, że zostanie ono omówione na następnej lekcji.

Stwierdzenia

Program komputerowy to ciąg instrukcji, które mówią komputerowi, co ma robić. A stwierdzenie to typ instrukcji, który powoduje, że program wykonuje jakąś akcję.

Instrukcje są zdecydowanie najpopularniejszym typem instrukcji w programie C++. Dzieje się tak, ponieważ są one najmniejszą niezależną jednostką obliczeniową w języku C++. Pod tym względem zachowują się podobnie jak zdania w języku naturalnym. Kiedy chcemy przekazać pomysł innej osobie, zazwyczaj piszemy lub mówimy zdaniami (a nie przypadkowymi słowami lub sylabami). W C++, gdy chcemy, aby nasz program coś zrobił, zazwyczaj piszemy instrukcje.

Większość (ale nie wszystkie) instrukcji w C++ kończy się średnikiem. Jeśli widzisz linię kończącą się średnikiem, prawdopodobnie jest to instrukcja.

W języku wysokiego poziomu, takim jak C++, pojedyncza instrukcja może zostać skompilowana do wielu instrukcji języka maszynowego.

Dla zaawansowanych czytelników

W C++ istnieje wiele różnych rodzajów instrukcji:

  • Instrukcje deklaracji
  • Instrukcje skoku
  • Wyrażenia wyrażeń
  • Złożone instrukcje
  • Instrukcje wyboru (warunki)
  • Instrukcje iteracji (pętle)
  • Bloki try

Gdy skończysz tę serię samouczków, zrozumiesz, czym one wszystkie są!

Funkcje i main funkcja

W C++ instrukcje są zazwyczaj grupowane w jednostki zwane funkcjami. A funkcja to zbiór instrukcji, które są wykonywane sekwencyjnie (w kolejności od góry do dołu). Kiedy nauczysz się pisać własne programy, będziesz mógł tworzyć własne funkcje oraz mieszać i dopasowywać instrukcje w dowolny sposób (pokażemy, jak to zrobić w przyszłej lekcji).

Reguła

Każdy program w C++ musi mieć specjalną funkcję o nazwie głównego (wszystkie małe litery).

Gdy program jest uruchamiany, instrukcje zawarte w main są wykonywane w kolejności sekwencyjnej.

Programy zwykle kończą działanie (kończą działanie) po wykonaniu ostatniej instrukcji wewnątrz funkcji main (chociaż w pewnych okolicznościach programy mogą przerwać działanie wcześniej lub później wykonać pewne czynności porządkowe).

Funkcje są zwykle pisane w celu wykonania określonego zadania lub wykonania jakiejś przydatnej akcji. Na przykład funkcja o nazwie max może zawierać instrukcje określające, która z dwóch liczb jest większa. Funkcja o nazwie calculateGrade może obliczyć ocenę ucznia na podstawie zestawu wyników testu. Funkcja o nazwie printEmployee może wydrukować informacje o pracowniku na konsoli. Wkrótce porozmawiamy znacznie więcej o funkcjach, ponieważ są one najczęściej używanym narzędziem organizującym w programie.

Nomenklatura

Przy omawianiu funkcji dość powszechnym skrótem jest dodawanie nawiasu na końcu nazwy funkcji. Na przykład, jeśli widzisz termin main() lub doSomething(), jest to skrót dla funkcji o nazwie main lub doSomething odpowiednio. Pomaga to odróżnić funkcje od innych rzeczy za pomocą nazw (takich jak zmienne) bez konieczności wpisywania za każdym razem słowa „funkcja”.

W programowaniu nazwa funkcji (lub obiektu, typu, szablonu itp.) nazywana jest jej identyfikatorem.

Znaki i tekst

Najwcześniejsze komputery były przeznaczone głównie do obliczeń matematycznych i przetwarzania danych. W miarę ulepszania sprzętu, dostępności sieci i ewolucji oprogramowania konsumenckiego komputery stały się również cennymi narzędziami komunikacji pisemnej.

W języku pisanym najbardziej podstawową jednostką komunikacji jest znak. Aby nieco uprościć, znak to pisany symbol lub znak, taki jak litera, cyfra, znak interpunkcyjny lub symbol matematyczny. Kiedy dotkniemy klawisza alfabetycznego lub numerycznego na naszej klawiaturze, w rezultacie powstaje znak, który można następnie wyświetlić na ekranie. Poniżej znajdują się wszystkie znaki: a, 2, $, I =.

W wielu przypadkach, np. podczas pisania słów lub zdań, chcemy użyć więcej niż jednego znaku. Sekwencja znaków nazywana jest tekstem (zwana także ciąg w kontekście programistycznym).

Nomenklatura

Tradycyjnie termin „tekst” jest również używany do określenia zwykłego tekstu, czyli tekstu zawierającego wyłącznie znaki pojawiające się na standardowej klawiaturze, bez specjalnego formatowania i stylizacji. Na przykład zwykły tekst nie może przedstawiać pogrubionych słów, ponieważ wymaga to stylizacji.

Nasze programy w C++ są pisane jako zwykły tekst.

Dla zaawansowanych czytelników

Komputery mają dodatkowy typ znaków, zwany „znakiem sterującym”. Są to znaki, które mają specjalne znaczenie dla systemu komputerowego, ale albo nie są przeznaczone do wyświetlania, albo są wyświetlane jako coś innego niż pojedynczy widoczny symbol. Przykłady dobrze znanych znaków kontrolnych to „escape” (który niczego nie wyświetla), „tab” (który jest wyświetlany jako pewna liczba spacji) i „backspace” (który usuwa poprzedni znak).

Powiązana treść

Wyprowadzanie znaków i tekstu omawiamy na lekcji 1.5 — Wprowadzenie do iostream: cout, cin i endl.
Znaki (w tym znaki sterujące) omawiamy bardziej szczegółowo na lekcji 4.11 -- Znaki.

Rozkładanie Witaj, świecie!

Teraz to jeśli już wiesz, czym są instrukcje i funkcje, wróćmy do naszego programu „Hello world” i przyjrzyjmy się bardziej szczegółowo, co robi każda linia.

#include <iostream>

int main()
{
   std::cout << "Hello world!";
   return 0;
}

Linia 1 to specjalny typ linii nazywany dyrektywą preprocesora. Ta #include dyrektywa preprocesora wskazuje, że chcielibyśmy skorzystać z zawartości iostream biblioteki, która jest częścią standardowej biblioteki C++, która pozwala nam czytać i zapisywać tekst z/do konsoli. Potrzebujemy tej linii, aby użyć std::cout w linii 5. Wykluczenie tej linii spowodowałoby błąd kompilacji w linii 5, ponieważ w przeciwnym razie kompilator nie wiedziałby, co std::cout jest.

Linia 2 jest pusta i jest ignorowana przez kompilator. Linia ta istnieje tylko po to, aby uczynić program bardziej czytelnym dla ludzi (poprzez oddzielenie #include dyrektywy preprocesora od kolejnych części programu).

Wiersz 3 mówi kompilatorowi, że napiszemy (zdefiniujemy) funkcję, której nazwa (identyfikator) to main. Jak dowiedziałeś się powyżej, każdy program C++ musi mieć main funkcję, w przeciwnym razie nie będzie można go połączyć. Ta funkcja zwróci wartość, której typ to int (liczba całkowita).

Linie 4 i 7 informują kompilator, które linie są częścią funkcji głównego . Wszystko pomiędzy otwierającym nawiasem klamrowym w linii 4 i zamykającym nawiasem klamrowym w linii 7 jest uważane za część funkcji main . Nazywa się to treścią funkcji.

Wiersz 5 to pierwsza instrukcja w obrębie funkcji main i jest pierwszą instrukcją, która zostanie wykonana po uruchomieniu naszego programu. std::cout (co oznacza „wyjście znaku”) i operator << pozwalają nam wyświetlić informacje na konsoli. W tym przypadku wyświetlamy tekst Hello world!. Ta instrukcja tworzy widoczne wyjście programu.

Linia 6 to instrukcja return. Kiedy program wykonywalny zakończy działanie, wysyła wartość z powrotem do systemu operacyjnego, aby wskazać, czy przebiegł pomyślnie, czy nie. Ta konkretna instrukcja return zwraca wartość całkowitą 0 do systemu operacyjnego, co oznacza „wszystko poszło dobrze!”. Jest to ostatnia instrukcja w wykonywanym programie.

Wszystkie programy, które piszemy, będą zgodne z tym ogólnym szablonem lub jego odmianą.

Nota autora

Jeśli część (lub całość) powyższego wyjaśnienia jest niejasna, należy się tego w tym momencie spodziewać. Miało to na celu jedynie przedstawienie szybkiego przeglądu. W kolejnych lekcjach omówione zostaną wszystkie powyższe tematy, z dużą ilością dodatkowych wyjaśnień i przykładów.

Możesz samodzielnie skompilować i uruchomić ten program, a zobaczysz, że wyświetli on na konsoli następujące informacje:

Hello world!

Jeśli napotkasz problemy podczas kompilacji lub wykonywania tego programu, zapoznaj się z lekcją 0.8 — Kilka typowych problemów z C++.

Składnia i błędy składniowe

W języku angielskim zdania są konstruowane według określonych zasad gramatycznych, których prawdopodobnie nauczyłeś się na lekcjach języka angielskiego w szkole. Na przykład w piśmie normalne zdania kończą się kropką. Zbiór reguł opisujących, w jaki sposób określone słowa (i znaki interpunkcyjne) mogą zostać ułożone w celu utworzenia prawidłowych zdań w języku, nazywa się składnią. Na przykład „Mój dom pomalowany na niebiesko” jest błędem składniowym, ponieważ kolejność słów jest niekonwencjonalna. „Cała twoja baza należy do nas!” jest kolejnym godnym uwagi.

Język programowania C++ ma również składnię opisującą, w jaki sposób elementy programu muszą zostać napisane i ułożone, aby program został uznany za prawidłowy. Kiedy kompilujesz program, kompilator jest odpowiedzialny za upewnienie się, że program przestrzega tych reguł składniowych. Jeśli Twój program zrobi coś odbiegającego od składni języka, kompilator zatrzyma kompilację i wyda komunikat a _błąd składni.

W przeciwieństwie do języka angielskiego, który pozwala na wiele niejednoznaczności, zasady składni w C++ są ściśle określone i przestrzegane. Błędy składniowe są częste. Na szczęście takie błędy są zazwyczaj łatwe do znalezienia i naprawienia, ponieważ kompilator zazwyczaj wskazuje je bezpośrednio na nie. Kompilacja programu zakończy się dopiero po usunięciu wszystkich błędów składniowych.

Ponieważ składnia większości instrukcji wymaga, aby te instrukcje kończyły się średnikiem, zobaczmy, co się stanie, jeśli pominiemy średnik w 5. linii programu „Hello world”, w następujący sposób:

#include <iostream>

int main()
{
   std::cout << "Hello world!"
   return 0;
}

Możesz samodzielnie skompilować ten źle sformułowany program.

Podczas kompilacji przy użyciu Clang generowany jest następujący komunikat o błędzie:

prog.cc:5:31: error: expected ';' after expression

Clang mówi nam, że w linii 5 przy 31. znaku reguły składni wymagają średnika, ale go nie udostępniliśmy. Dlatego kompilacja została zatrzymana z powodu błędu.

Zamiast tego po skompilowaniu za pomocą programu Visual Studio kompilator generuje następujący błąd kompilacji:

c:\vcprojects\hello.cpp(6): error C2143: syntax error : missing ';' before 'return'

Zauważ, że Visual Studio twierdzi, że błąd wystąpił w linii 6 (zamiast w linii 5). Kto więc ma rację? W pewnym sensie oba są.

Clang wie, że zwykle umieszczamy średniki na końcu instrukcji, więc zgłasza, że ​​błąd występuje w linii 5, zakładając, że tak zrobimy. Visual Studio decyduje się zgłosić linię, którą kompilował, gdy ustali, że wystąpił błąd (w linii 6, gdy napotkał return zamiast oczekiwanego średnika).

Kluczowa informacja

Kompilatory czasami zgłaszają, że wystąpił błąd w wierszu następującym po tym, w którym konwencjonalnie rozwiązalibyśmy problem. Jeśli nie możesz znaleźć błędu we wskazanym wierszu, sprawdź poprzedni wiersz.

Aby zobaczyć inne komunikaty o błędach, poeksperymentuj z usuwaniem znaków lub nawet całych linii z programu „Hello world”. Spróbuj także przywrócić brakujący średnik na końcu linii 5, a następnie usuń linie 1, 3 lub 4, aby zobaczyć, co się stanie.

Czas quizu

Następujący quiz ma na celu ugruntowanie zrozumienia materiału przedstawionego powyżej.

Pytanie nr 1

Co to jest instrukcja?

Pokaż rozwiązanie

Pytanie nr 2

Co to jest instrukcja funkcja?

Pokaż rozwiązanie

Pytanie nr 3

Jaka jest nazwa funkcji, którą muszą mieć wszystkie programy?

Pokaż rozwiązanie

Pytanie nr 4

Co się dzieje, gdy program jest uruchamiany?

Pokaż rozwiązanie

Pytanie #5

Jakim symbolem są instrukcje w C++ często zakończone z?

Pokaż rozwiązanie

Pytanie nr 6

Co to jest błąd składni?

Pokaż rozwiązanie

Pytanie nr 7

Co to jest standardowa biblioteka C++?

Pokaż wskazówkę

Pokaż rozwiązanie

guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
814 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze