1.3 -- Wprowadzenie do obiektów i zmiennych

Dane i wartości

W lekcji 1.1 -- Instrukcje i struktura programu, nauczyłeś się, że większość instrukcji w programie są instrukcjami, a funkcje to grupy instrukcji, które są wykonywane sekwencyjnie. Instrukcje wewnątrz funkcji wykonują akcje, które (miejmy nadzieję) generują wynik, do jakiego zaprojektowano program.

Ale w jaki sposób programy faktycznie generują wyniki? Robią to poprzez manipulację (odczytywanie, zmienianie i zapisywanie) danych. W informatyce dane to wszelkie informacje, które mogą być przenoszone, przetwarzane lub przechowywane przez komputer.

Kluczowa informacja

Programy to zbiory instrukcji, które manipulują danymi w celu uzyskania pożądanego rezultatu.

Programy komputerowe (zarówno w formacie kodu źródłowego, jak i skompilowane) również są danymi technicznymi, ponieważ można je przenosić, przetwarzać i przechowywać. Jednak w kontekście programu komputerowego zwykle używamy terminu „kod” do określenia samego programu, a „dane” do określenia informacji, z którymi program współpracuje w celu uzyskania wyniku.

Program może pozyskiwać dane do pracy na wiele sposobów: z pliku lub bazy danych, przez sieć, od użytkownika wprowadzającego dane na klawiaturze lub od programisty wprowadzającego dane bezpośrednio do kodu źródłowego samego programu. W programie „Hello world” z ww. lekcji pojawia się tekst „Hello world!” został wstawiony bezpośrednio do kodu źródłowego programu, dostarczając dane do wykorzystania przez program. Następnie program manipuluje tymi danymi, wysyłając je do monitora w celu wyświetlenia.

W programowaniu pojedyncza porcja danych nazywana jest wartości (czasami nazywany wartością danych). Typowe przykłady wartości to:

  • Liczby (np. 5 lub -6.7).
  • Znaki umieszczane w cudzysłowie (np. 'H' lub '$'). Można użyć tylko jednego symbolu.
  • Tekst, który musi być umieszczony w cudzysłowie (np. "Hello" lub "H"). Tekst może zawierać 0 lub więcej znaków.

Kluczowa informacja

Wartości umieszczone w cudzysłowie są interpretowane przez kompilator jako wartości znakowe.
Wartości umieszczone w cudzysłowie są interpretowane przez kompilator jako wartości tekstowe.
Wartości liczbowe nie są cytowane.

Wartości umieszczone bezpośrednio w kodzie źródłowym są nazywane literałami. Literały omówimy szczegółowo w lekcji 5.2 -- Literały.

Jedną z najczęstszych czynności związanych z wartościami jest wyświetlenie ich na ekranie. Na przykład:

#include <iostream> // for std::cout

int main()
{
    std::cout << 5;       // print the literal number `5`
    std::cout << -6.7;    // print the literal number `-6.7`
    std::cout << 'H';     // print the literal character `H`
    std::cout << "Hello"; // print the literal text `Hello`

    return 0;
}

Jeśli wartość znakowa lub wartość tekstowa nie zostanie poprawnie zacytowana, kompilator spróbuje zinterpretować tę wartość tak, jakby był to kod C++, co prawie zawsze zakończy się kompilacją błąd.

Literały są najłatwiejszym sposobem zapewnienia wartości dla programu, ale mają pewne wady. Literały są wartościami tylko do odczytu, więc ich wartości nie mogą być modyfikowane. Zatem jeśli chcemy przechowywać dane w pamięci, potrzebujemy innego sposobu, aby to zrobić.

Pamięć o dostępie swobodnym. Pamięć

Pamięć główna w komputerze nazywa się Pamięć o dostępie swobodnym. Pamięć (często nazywana w skrócie RAM ). Kiedy uruchamiamy program, system operacyjny ładuje program do pamięci RAM. W tym momencie ładowane są wszelkie dane zakodowane na stałe w samym programie (np. tekst taki jak „Witaj, świecie!”).

System operacyjny rezerwuje również dodatkową pamięć RAM, z której może korzystać program podczas jego działania. Typowe zastosowania tej pamięci to: przechowuje wartości wprowadzone przez użytkownika, przechowuje dane wczytane z pliku lub sieci lub przechowuje wartości obliczone podczas działania programu (np. sumę dwóch wartości), aby można było ich później użyć ponownie.

Możesz myśleć o pamięci RAM jako o serii ponumerowanych pól, które mogą być używane do przechowywania danych podczas działania programu.

W niektórych starszych językach programowania (takich jak Applesoft BASIC) można uzyskać bezpośredni dostęp do tych skrzynek (np. można napisać instrukcję „pobierz wartość zapisaną w pamięci o numerze 7532”).

Obiekty i zmienne

W C++ odradza się bezpośredni dostęp do pamięci. Zamiast tego uzyskujemy dostęp do pamięci pośrednio poprzez obiekt. Jakiś obiektu reprezentuje obszar pamięci (zwykle RAM lub rejestr procesora), który może przechowywać wartość. Obiekty mają również powiązane właściwości (które omówimy w przyszłych lekcjach).

Sposób, w jaki kompilator i system operacyjny przydzielają pamięć obiektom, wykracza poza zakres tej lekcji. Ale kluczową kwestią jest to, że zamiast mówić „pobierz wartość przechowywaną w skrzynce pocztowej numer 7532”, możemy powiedzieć: „pobierz wartość przechowywaną przez ten obiekt” i pozwól kompilatorowi dowiedzieć się, gdzie i jak pobrać tę wartość. Oznacza to, że możemy skupić się na używaniu obiektów do przechowywania i pobierania wartości, bez konieczności martwienia się o to, gdzie w pamięci faktycznie znajdują się te obiekty.

Chociaż obiekty w C++ mogą nie mieć nazwy (anonimowe), częściej nazywamy nasze obiekty za pomocą identyfikatora. Obiekt posiadający nazwę nazywa się a zmienną.

Kluczowa informacja

Obiekt służy do przechowywania wartości w pamięci. Zmienna to obiekt, który ma nazwę (identyfikator).

Nazywanie naszych obiektów pozwala nam na ponowne odniesienie się do tych obiektów w dalszej części programu.

Nomenklatura

W ogólnym programowaniu termin obiektu zazwyczaj odnosi się do nienazwanego obiektu w pamięci, zmiennej lub funkcji. W C++ termin obiektu ma węższą definicję, która wyklucza funkcje. Kiedy w tej serii tutoriali używamy terminu obiekt, mamy na myśli węższą definicję języka C++.

Zmienna definicja

Aby użyć zmiennej w naszym programie, musimy powiedzieć kompilatorowi, że jej potrzebujemy. Najbardziej powszechnym sposobem osiągnięcia tego jest użycie specjalnego rodzaju deklaracji zwanej a definicja (różnicę między deklaracją a definicją wyjaśnimy później, na lekcji 2.7 -- Deklaracje przesyłania dalej i definicje).

Kluczowa informacja

Za pomocą instrukcji definicji można poinformować kompilator, że chcemy użyć zmiennej w naszym programie.

Oto przykład zdefiniowania zmiennej o nazwie x:

int x; // define a variable named x (of type int)

Na czas kompilacji (w trakcie kompilacji programu), napotykając tę ​​instrukcję, kompilator zapamiętuje sobie, że chcemy mieć zmienną o nazwie xi że zmienna ma typ danych int (więcej o typach danych za chwilę). Od tego momentu (z pewnymi ograniczeniami, o których porozmawiamy w przyszłej lekcji), za każdym razem, gdy będziemy używać identyfikatora x w naszym kodzie kompilator będzie wiedział, że odwołujemy się do tej zmiennej.

Kompilator zajmuje się za nas wszystkimi pozostałymi szczegółami dotyczącymi tej zmiennej, w tym określeniem, ile pamięci będzie potrzebował obiekt, w jakim rodzaju pamięci obiekt zostanie umieszczony (np. w pamięci RAM lub rejestrze procesora), gdzie zostanie umieszczony względem innych obiektów, kiedy zostanie utworzony i zniszczony itp.

Mówi się, że zmienna utworzona za pomocą instrukcji definicji jest zdefiniowany w miejscu, w którym umieszczona jest instrukcja definicji. Na razie zmienne powinny być definiowane wewnątrz funkcji (takich jak inside main()).

Oto pełny program zawierający instrukcję definicji zmiennej:

int main()
{
    int x; // definition of variable x

    return 0;
}

Zmienne tworzenie

Na czas wykonania (kiedy program jest ładowany do pamięci i uruchamiany), każdemu obiektowi przydzielana jest rzeczywista lokalizacja przechowywania (taka jak pamięć RAM lub rejestr procesora), której może używać do przechowywania wartości. Nazywa się proces rezerwowania miejsca do użytku obiektu przydział. Po dokonaniu alokacji obiekt został utworzony i można go używać.

Dla przykładu załóżmy, że jest to zmienna x tworzona jest w lokalizacji pamięci 140. Ilekroć program używa zmiennej x, uzyska dostęp do wartości w komórce pamięci 140.

Kluczowa informacja

Obiekt jest „tworzony” po zarezerwowaniu rzeczywistej pamięci do użytku obiektu.

Gdy powyższy program zostanie uruchomiony, wykonanie rozpoczyna się od main(). Pamięć dla x jest przydzielona. Następnie program się kończy.

Typy danych

Jak dotąd omówiliśmy, że obiekty to obszary przechowywania, w których można przechowywać wartość danych (dokładne sposób przechowywania danych to temat na przyszłą lekcję). A typ danych (częściej nazywany po prostu a typ) określa jakiego rodzaju wartość (np. liczbę, literę, tekst itp.) będzie przechowywał obiekt.

W powyższym przykładzie naszej zmiennej x nadano typ int, co oznacza, że ​​zmienna x będzie przechowywać wartość całkowitą. An liczba całkowita to liczba, którą można zapisać bez składnika ułamkowego, np. 4, 27, 0, -2 lub -12. W skrócie możemy powiedzieć, że x jest integer variable.

W C++ typ obiektu musi być znany w czasie kompilacji i typ ten nie może zostać zmieniony bez ponownej kompilacji programu. Oznacza to, że zmienna całkowita może przechowywać tylko wartości całkowite. Jeśli chcesz przechowywać wartość innego rodzaju, musisz użyć innego typu.

Kluczowa informacja

Typ danych obiektu musi być znany w czasie kompilacji (aby kompilator wiedział, ile pamięci potrzebuje ten obiekt).

Liczby całkowite to tylko jeden z wielu typów, które C++ obsługuje od razu po wyjęciu z pudełka. Dla celów ilustracyjnych, oto kolejny przykład definiowania zmiennej przy użyciu typu danych double:

double width; // define a variable named width, of type double

C++ umożliwia także tworzenie własnych typów niestandardowych. Jest to coś, co będziemy często robić na przyszłych lekcjach i jest to część tego, co czyni C++ potężnym.

W tych rozdziałach wprowadzających będziemy trzymać się zmiennych całkowitych, ponieważ są one koncepcyjnie proste, ale wkrótce poznamy wiele innych typów, które C++ ma do zaoferowania (w tym double).

Definiowanie wielu zmiennych

To jest możliwość zdefiniowania wielu zmiennych tego samego typu w jednym wyciągu poprzez oddzielenie ich nazw przecinkiem. Poniższy fragment kodu:

int a;
int b;

jest w rzeczywistości taki sam jak ten:

int a, b;

Podczas definiowania wielu zmiennych w ten sposób nowi programiści mają tendencję do popełniania trzech typowych błędów (żadne z nich nie są poważne, ponieważ kompilator je wyłapie i poprosi o ich poprawienie):

Pierwszym błędem jest nadanie każdej zmiennej typu podczas definiowania zmiennych po kolei.

int a, int b; // wrong (compiler error)

int a, b; // correct

Drugim błędem jest próba zdefiniowania zmienne różnych typów w tej samej instrukcji, co jest niedozwolone. Zmienne różnych typów muszą być definiowane w osobnych instrukcjach.

int a, double b; // wrong (compiler error)

int a; double b; // correct (but not recommended)

// correct and recommended (easier to read)
int a;
double b;

Trzecie zagadnienie omówimy w następnej lekcji, kiedy zajmiemy się inicjalizacją zmiennych.

Najlepsza praktyka

Chociaż język na to pozwala, unikaj definiowania wielu zmiennych tego samego typu w jednej instrukcji. Zamiast tego zdefiniuj każdą zmienną w osobnej instrukcji w jej własnym wierszu (a następnie użyj jednowierszowego komentarza, aby udokumentować, do czego jest używana).

Streszczenie

W C++ używamy obiektów, aby uzyskać dostęp do pamięci. Nazwany obiekt nazywany jest zmienną. Każda zmienna ma identyfikator, typ i wartość (oraz kilka innych atrybutów, które nie są tutaj istotne). Typ zmiennej służy do określenia, jak należy interpretować wartość w pamięci.

Zmienne są faktycznie tworzone w czasie wykonywania, kiedy przydzielana jest pamięć na ich użytek.

W następnej lekcji przyjrzymy się, jak nadawać wartości naszym zmiennym i jak je faktycznie wykorzystywać.

Czas quizu

Pytanie nr 1

Co to są dane?

Pokaż rozwiązanie

Pytanie nr 2

Co to jest wartość?

Pokaż rozwiązanie

Pytanie nr 3

Co to jest obiekt?

Pokaż rozwiązanie

Pytanie nr 4

Co to jest zmienna?

Pokaż rozwiązanie

Pytanie #5

Co to jest identyfikator?

Pokaż rozwiązanie

Pytanie nr 6

Do czego służy typ danych?

Pokaż rozwiązanie

Pytanie nr 7

Co to jest liczba całkowita?

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:  
780 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze