Zmienne, odpowiedzi cz. 1 - Programowanie jest łatwe

Porównaj swoje odpowiedzi do ćwiczeń ze zmiennych. Sprawdź jak dobrze Ci poszło.

spoon.jpg

Nazewnictwo zmiennych

  1. Jak nazwiesz zmienną, która przechowuje pole powierzchni boiska do koszykówki?

Należy zastanowić się, co jest dla nas ważniejszą informacją w nazwie zmiennej: to, że dotyczy jakiegoś obszaru (w tym przypadku boiska do koszykówki), czy to, że chodzi o pole powierzchni. Zdecydowałem się na to drugie. Można po polsku camelCase: polePowierzchniKoszykowka albo underscore pole_powierzchni_koszykowka. Użyłem nieodmienionego rzeczownika dla uproszczenia. W przypadku anglojęzycznej konwencji: courtAreaBasketball albo court_area_basketball. Jeżeli te nazwy wydają się Tobie zbyt długie to powiem, że czasami lepiej poświęcić nieco więcej czasu na pisanie, aby później szybciej się czytało.

  1. Jak nazwiesz zmienną, która przechowuje wartość pi?

To podchwytliwe pytanie. Pi jest wartością stałą, nie zmienia się, więc nie powinno się deklarować pi jako zmiennej. Ale jeżeli chodzi o samą nazwę, skoro się nie zmienia, można przyjąć konwencję, np. stałe pisane wielkimi literami- PI.

  1. Jak nazwiesz zmienną, która przechowuje pole powierzchni boiska do piłki ręcznej?

Jak w przypadku ćwiczenia 1, byłoby to odpowiednio dla polskiego nazewnictwa polePowierzchniPilkaReczna albo pole_powierzchni_pilka_reczna. Dla anglojęzycznych nazw courtAreaHandball albo cour_area_handball.

  1. Czy zachowałeś konsekwencję nazewnictwa przy ćwiczeniu 1 i 3?

Zachowanie konsekwencji przy tworzeniu nazw nie jest sprawą trywialną jak mogłoby się wydawać. Należy poświęcić trochę czasu i trzymać się już wcześniej wyznaczonej ścieżki. Rozpatrz poniższy przypadek:

int polePowierzchniKoszykowka = 100;
int pilkaRecznaPolePowierzchni = 90;

if (polePowierzchniKoszykowka > pilkarecznaPolePowierzchni) {
  print("Boisko do kosza jest wieksze niz boisko do pilki recznej");
}

Mi od samego pisania tego mieszało się głowie. Jest to po prostu nieczytelne, a kod częściej się czyta niż pisze.

  1. Jak powinna nazywać się zmienna przechowująca prędkość poruszania się samochodu o nazwie "virgo".

Można tutaj użyć po prostu virgoSpeed czy virgo_speed. Można też pokusić się o doprecyzowanie, car_virgo_speed, czyli zaczynając nazwę od rzeczownika bardzo ogólnego (samochód), następnie podając jego nazwę (virgo) a kończąc na przymiotniku.

  1. Jak powinna nazywać się zmienna przechowująca prędkość poruszania się samolotu o nazwie "virgo"?

Jak powyżej, może to być virgoSpeed bądź aeroplane_virgo_speed.

  1. Jaka jest różnica pomiędzy powyższymi dwoma zmiennymi?

Pomijając fakt, że w przypadku, gdy obie zmienne będą użyte w obrębie tego samego bloku, będziemy zmuszeni użyć doprecyzowania o jakie virgo nam chodzi, różnica może być następująca: samochód porusza się z prędkością km/h, czyli można użyć typu całkowitego, a prędkość samolotu można wyrazić w machach, które operują na wartościach zmiennoprzecinkowych.

Typy, liczby całkowite

  1. Jak wpływa wielkość zajmowanej przez program pamięci na prędkość działania algorytmu?

Nie ma wpływu. Algorytm będzie zawsze wykonywać się z taką samą prędkością. Oczywiście to zależy od zasobów, jakie przydzieli nam system operacyjny, jednak pomijając ten aspekt, wielkość zajmowanej pamięci nie wpływa na działanie programu. Należy jednak pamiętać, że skoro program załadował do pamięci duże ilości danych to najprawdopodobniej będzie je przetwarzać. Im więcej danych ma do przetworzenia tym dłużej będzie się wykonywać, ale on sam będzie się wykonywać tak samo szybko. W momencie, gdy wielkość zajmowanej pamięci przekroczy dostępną ilość pamięci podręcznej, system operacyjny umieści nieużywane fragmenty danych na dysku twardym (tzw. SWAP). Wtedy ma to wpływ na prędkość działania algorytmu, gdyż będzie musiał dłużej czekać, aż system operacyjny przywróci odpowiednie porcje danych z dysku do pamięci.

  1. Jaki jest zakres wartości zmiennej w architekturze 32 bitowej a jaki w architekturze 16 bitowej?

Najprościej przedstawić wynik w formie wykładniczej, czyli w architekturze 32-bitowej: -2^31 - (2^31)-1. Do potęgi 31 ponieważ jeden bit jest przeznaczany na informacje o znaku. Zakres dodatni jest pomniejszony o 1, ponieważ 0 jest również wartością. Odpowiednio dla architektury 16-bitowej: od 2^15 do (2^15)-1.

  1. Co się stanie, gdy zostanie wczytana (np. z pliku albo z klawiatury) wartość ujemna do zmiennej bez znaku (unsigned)?

Znak minus zostanie potraktowany jako bit wartości. W przypadku architektury 16 bitowej, wczytując wartość -5 do zmiennej typu unsigned otrzymamy wartość 32773. Binarnie, wartość liczby -5: 10000000 00000101 Co się stanie, gdy do zmiennej typu int zostanie wprowadzona wartość zmiennoprzecinkowa? Wartości ułamkowe zostaną pominięte, w pamięci zostanie zapisana wartość całkowita.

  1. Jaka wartość zostanie zapisana w zmiennej b, c i d a jaka jest powinna być prawdziwa wartość ?
    int b = 5 / 1.23;
    Int c = 5 / 2;
    Int d = 5 / 2.9;

    b: 4

c: 2

d: 1

Najpierw jest obliczana wartość operacji arytmetycznej- wynik zawiera ułamek, który przy zapisywaniu do zmiennej jest pomijany.

  1. Co się stanie, gdy do zmiennej typu short int wprowadzisz wartość np. 9999999999999 ?

Zostanie zapisana wartość -1, symbolizujące przepełnienie pamięci. Pisząc w języku asembler, mielibyśmy jeszcze informację na ten temat.


Dodano: 2018-03-09 10:01 przez Piotr Poźniak

ćwiczenia , odpowiedzi , zmienne , nazewnictwo , typy całkowite ,
Piotr Poźniak
O autorze:

Programuję od ponad 15 lat. Prowadzę software house. Angażuję i zachęcam wszystkich do programowania w ramach inicjatywy Programowanie jest łatwe.