Przegląd rozdziału
Najmniejszą jednostką pamięci jest cyfra binarna, zwana także a bit. Najmniejsza jednostka pamięci, do której można bezpośrednio zaadresować (dostęp) to bajt. Współczesny standard mówi, że bajt ma 8 bitów.
A typ danych mówi kompilatorowi, jak w jakiś znaczący sposób interpretować zawartość pamięci.
C++ obsługuje wiele podstawowych typów danych, w tym liczby zmiennoprzecinkowe, liczby całkowite, wartości logiczne, znaki, wskaźniki zerowe i void.
Void jest używany do wskazania braku typu. Służy przede wszystkim do wskazania, że funkcja nie zwraca wartości.
Różne typy zajmują różną ilość pamięci, a ilość używanej pamięci może się różnić w zależności od maszyny.
Powiązana treść
Zobacz 4.3 -- Rozmiary obiektów i operator sizeof dla tabeli wskazującej minimalny rozmiar dla każdego podstawowego typu.
Klasa operator sizeof można zastosować do zwrócenia rozmiaru typ w bajtach.
Liczby całkowite ze znakiem służą do przechowywania dodatnich i ujemnych liczb całkowitych, w tym 0. Zbiór wartości, które może przechowywać określony typ danych, nazywany jest jego zakresem. Używając liczb całkowitych, uważaj na problemy z przepełnieniem i dzieleniem liczb całkowitych.
Liczby całkowite bez znaku zawierają tylko liczby dodatnie (oraz 0) i zasadniczo należy ich unikać, chyba że wykonujesz manipulacje na poziomie bitów.
Liczby całkowite o stałej szerokości są liczbami całkowitymi o gwarantowanych rozmiarach, ale mogą nie występować we wszystkich architektury. Szybkie i najmniejsze liczby całkowite to najszybsze i najmniejsze liczby całkowite o co najmniej pewnym rozmiarze. std::int8_t i std::uint8_t należy generalnie unikać, ponieważ zachowują się one jak znaki, a nie liczby całkowite.
size_t to typ całkowity bez znaku używany do reprezentowania rozmiaru lub długości obiektów.
Naukowe notacja to skrócony sposób zapisywania długich liczb. C++ obsługuje notację naukową w połączeniu z liczbami zmiennoprzecinkowymi. Cyfry mantysy (część przed e) nazywane są cyframi znaczącymi.
Zmiennoprzecinkowe to zbiór typów przeznaczony do przechowywania liczb rzeczywistych (w tym ze składnikiem ułamkowym). Dokładność liczby określa, ile cyfr znaczących może ona reprezentować bez utraty informacji. Błąd zaokrąglenia może wystąpić, gdy w liczbie zmiennoprzecinkowej zapisanych jest zbyt wiele cyfr znaczących, które nie są w stanie zachować tak dużej precyzji. Błędy zaokrągleń zdarzają się cały czas, nawet w przypadku prostych liczb, takich jak 0,1. Z tego powodu nie należy bezpośrednio porównywać liczb zmiennoprzecinkowych.
Klasa Boolean typ służy do przechowywania true lub false wartości.
Instrukcje if pozwalają nam wykonać jedną lub więcej linii kodu, jeśli jakiś warunek jest spełniony. Warunkowe wyrażenie instrukcji if jest interpretowane jako wartość logiczna. Instrukcja else może zostać użyta do wykonania instrukcji, gdy warunek wcześniejszej instrukcji if ma wartość false.
Char jest używany do przechowywania wartości interpretowanych jako znak ASCII. Używając znaków, uważaj, aby nie pomylić wartości i liczb kodu ASCII. Drukowanie znaku jako wartości całkowitej wymaga użycia static_cast.
Nawiasy kątowe są zwykle używane w C++ do reprezentowania czegoś, co wymaga typu parametryzowalnego. Używa się tego z static_cast w celu określenia typu danych, na jaki argument powinien zostać przekonwertowany (np. static_cast<int>(x) zwróci wartość x jako int).
Czas quizu
Pytanie nr 1
Wybierz odpowiedni typ danych dla zmiennej w każdej z poniższych sytuacji. Bądź jak najbardziej konkretny. Jeśli odpowiedź jest liczbą całkowitą, wybierz int (jeśli rozmiar nie jest ważny) lub konkretny typ liczby całkowitej o stałej szerokości (np. std::int16_t) w oparciu o zakres.
a) Wiek użytkownika (w latach) (zakładając, że rozmiar typu nie jest ważny)
b) Czy użytkownik chce, aby aplikacja sprawdzała <
c) pi (3.14159265)
d) Liczba stron w podręczniku (zakładając, że rozmiar nie jest ważny)
e) Długość kanapy w stopach, do 2 miejsc po przecinku miejsca (zakładając, że rozmiar ma znaczenie)
f) Ile razy mrugnąłeś od urodzenia (uwaga: odpowiedź jest w milionach)
g) Użytkownik wybierający opcję z menu literą
h) Rok urodzenia danej osoby (zakładając, że rozmiar wynosi ważne)
Pytanie nr 2
Nota autora
Od tego miejsca quizy stają się trudniejsze. Te quizy, w których prosisz o napisanie programu, mają na celu umożliwienie zintegrowania wielu koncepcji prezentowanych podczas lekcji. Powinieneś być przygotowany na spędzenie trochę czasu z tymi problemami. Jeśli dopiero zaczynasz programować, nie powinieneś oczekiwać, że będziesz w stanie odpowiedzieć na te pytania od razu.
Pamiętaj, że naszym celem jest pomóc Ci określić, co wiesz i nad jakimi koncepcjami być może będziesz musiał poświęcić dodatkowy czas. Jeśli poczujesz, że masz trudności, nie ma problemu.
Oto kilka wskazówek:
- Nie próbuj pisać całego rozwiązania na raz. Napisz jedną funkcję, a następnie przetestuj ją, aby upewnić się, że działa zgodnie z oczekiwaniami. Następnie kontynuuj.
- Użyj debugera, aby dowiedzieć się, gdzie coś idzie nie tak.
- Wróć i przejrzyj odpowiedzi do quizów z poprzednich lekcji w tym rozdziale, ponieważ często zawierają one podobne koncepcje.
Jeśli naprawdę utknąłeś, nie wahaj się spojrzeć na rozwiązanie, ale poświęć trochę czasu, aby przed kontynuowaniem upewnić się, że rozumiesz, co robi każda linia. Dopóki pozostawisz zrozumienie pojęć, nie ma większego znaczenia, czy udało ci się je zdobyć samodzielnie, czy też musiałeś zapoznać się z rozwiązaniem przed kontynuowaniem.
Napisz następujący program: Użytkownik zostanie poproszony o wprowadzenie 2 liczb zmiennoprzecinkowych (użyj liczby podwójnej). Użytkownik jest następnie proszony o wprowadzenie jednego z następujących symboli matematycznych: +, -, * lub /. Program oblicza odpowiedź na podstawie dwóch liczb wprowadzonych przez użytkownika i drukuje wyniki. Jeśli użytkownik wprowadzi nieprawidłowy symbol, program nie powinien nic wyświetlić.
Przykład programu:
Enter a double value: 6.2 Enter a double value: 5 Enter +, -, *, or /: * 6.2 * 5 is 31
Pytanie nr 3
Dodatkowe punkty: To jest trochę trudniejsze.
Napisz krótki program symulujący upuszczenie piłki z wieży. Na początek należy zapytać użytkownika o wysokość wieży w metrach. Załóżmy, że grawitacja jest normalna (9,8 m/s2) i że piłka nie ma prędkości początkowej (kulka nie porusza się do startu). Niech program wyświetli wysokość piłki nad ziemią po 0, 1, 2, 3, 4 i 5 sekundach. Piłka nie powinna znajdować się pod ziemią (wysokość 0).
Użyj funkcji, aby obliczyć wysokość piłki po x sekundach. Funkcja może obliczyć, jak daleko spadła piłka po x sekundach, korzystając z następującego wzoru: odległość, jaką spadła = stała_grawitacji * x_sekund 2 / 2
Oczekiwany wynik:
Enter the height of the tower in meters: 100 At 0 seconds, the ball is at height: 100 meters At 1 seconds, the ball is at height: 95.1 meters At 2 seconds, the ball is at height: 80.4 meters At 3 seconds, the ball is at height: 55.9 meters At 4 seconds, the ball is at height: 21.6 meters At 5 seconds, the ball is on the ground.
Uwaga: w zależności od wysokości wieży piłka może nie dosięgnąć ziemi w ciągu 5 sekund — nie ma w tym nic złego. Poprawimy ten program, gdy omówimy pętle.
Uwaga: Symbol ^ nie jest wykładnikiem w C++. Zaimplementuj formułę, używając mnożenia zamiast potęgowania.
Uwaga: Pamiętaj, aby w przypadku liczb podwójnych używać podwójnych literałów, np. 2.0 zamiast 2.

