« poprzedni punkt  następny punkt »

3. Dane w programie (literały i zmienne)

Program przetwarza dane. Zatem dane trzeba jakoś w programie zapisać lub do programu dostarczyć.
Dane w programie mogą być reprezentowane na dwa sposoby:

  • za pomocą literalów
  • za pomocą zmiennych
Literał - to napis reprezentujący w sposób bezpośredni wartość danej

Mamy do dyspozycji literały liczbowe, literały znakowe i literały łańcuchowe.

Literał liczbowy to bezpośredni zapis konkretnej liczby.

Uwaga1. Zapisując liczby rzeczywiste w programach stosujemy jako separator miejsc dziesiętnych kropkę (a nie przecinek). Wiodące zero możemy pominąć
Uwaga 2. W różnych językach programowania w różny sposób można zapisywać oprócz liczb dziesiętnych liczby szesnastkowe i ósemkowe, a czasami nawet dwójkowe.
Uwaga 3. W różnych językach programowania w literałach liczbowych mogą być stosowane dodatkowe symbole, oznaczające rodzaj liczby np. długa całkowita lub rzeczywista. Dodatkowe dostępne są formy zapisu liczb w tzw. notacji naukowej np. 3.1e-12 oznacza 3.1 pomnożone przez 10 do potęgi -12
Na przykład:
3
10
101.3
10356789.12796
0.3
.3

Literał znakowy określa jeden bezpośrednio zapisany w programie znak. Do zapisania znaku będziemy stosować apostrofy.
Na przykład:

'a'
'b'
'z'
'X'
'ć'
'5'

Literały łańcuchowe - to bezpośrednio zapisane w programie ciągi znaków (napisy), które chcemy traktować jako teksty, a nie elementy języka. Ciągi takie ujmujemy w cudzysłów. Uwaga o REXX-ie.
Na przykład:

"ala ma kota"
"say"

Dlaczego musimy zapisywać znaki i ciągi znaków w apostrofach/cudzysłowie?
Zobaczmy. Gdybyśmy umieścili bezpośrednio w programie napis say, to mógłby on zostać potraktowany jako instrukcja. Zatem jeżeli chcemy go traktować jako tekst do przetwarzania, musimy umieścić go w cudzysłowie. Np. poniższy wiersz wyprowadza na konsolę napis say:

say "say";

W ogóle, nieujęte w cudzysłów napisy i nieujęte w apostrof znaki alfabetyczne traktowane są jako nazwy zmiennych lub słowa kluczowe (oznaczające instrukcje lub inne elementy języka). Np.

a = b;

będzie traktowane jako przypisanie zmienej a wartości zmiennej b. Jeśli chcemy przypisać zmiennej a znak b, musimy napisać:

a = 'b';

a taki napis:

x = if;

będzie potraktowany jako błąd składniowy, gdy if jest tzw. słowem zarezerwowanym .

Słowa kluczowe języka - to słowa, które mają specjalne znaczenie (np. oznaczają instrukcje sterujące).
Słowa kluczowe mogą być zarezerwowane i wtedy nie mogą być używane w innych kontekstach poza znaczeniem opisanym przez składnię języka.
(zob. więcej nt. słów zarezerwowanych)

Oczywiście, samo użycie literałów nie wystarcza by napisać sensowny program. Tak naprawdę programowanie polega na posługiwaniu się zmiennymi .

Zmienna jest symbolem w programie, oznaczającym obszar w pamięci komputera, w którym mogą być zapisywane różne dane.

Czyli:
  • zmienna ma nazwę (użyty w programie symbol nazywa się nazwą zmiennej),
  • przez tę nazwę odwołujemy się do konkretnego obszaru pamięci, w którym chcemy przechowywać wartości jakiejś danej,
  • zawartość tego obszaru (wartość zmiennej) możemy zmieniać w trakcie wykonania programu

Przypomnijmu sobie problem obliczenia ceny komputera. W bardzo prostej formie (niejako powielającej doświadczenia stosowania arkuszy kalkulacyjnych) moglibyśmy jego rozwiązanie zapisać jako jedną instrukcję wyprowadzającą na konsolę sumę zapisanych literalnie cen składników (załóżmy, że poslugujemy się następującymi informacjami: cena procesora, cena płyty głównej, cena pamięci, cena dysku, cena monitora, sumaryczna cena innych składników komputera i jakimiś wartościami tych cen).

say "Cena komputera wynosi:";
say 700 + 500 + 350 + 440 + 1100 + 400;

W wyniku otrzymamy:

Cena komputera wynosi:
3490


Proszę zapisać ten program i uruchomić na własnym komputerze.

Nie jest to dobry sposób programowania. Zmieniając ceny (dla jakiejś innej konfiguracji) musimy pamiętać, w którym miejscu w programie wpisaliśmy ceny poszczególnych składników. Poza tym gdybyśmy kiedykolwiek w tym programie chcieli policzyć również procentowe udziały cen składników w sumarycznej cenie musielibyśmy dwukrotnie wpisywać każdą cenę oraz jeszcze raz przeprowadzić całe sumowanie.
Zatem nawet w tak prostym programie nie możemy uniknąć stosowania zmiennych.
Nieco lepsza wersja tego programu możę wyglądać tak:

/* Obliczenie ceny komputera */

cProc = 700;
cPly  = 500;
cPam = 300;
cDysk = 400;
cMon = 1100;
cInn = 500;
cKomp = cProc + cPly + cPam + cDysk + cMon + cInn;

say "Początkowo cena komputera wynosi :" cKomp;
say "Udział ceny procesora :" cProc/cKomp;

cProc = 300;
cPly = 400;
cKomp = cProc + cPly + cPam + cDysk + cMon + cInn;

say "Po zmianie cen procesora i plyty";
say "Cena komputera wynosi :" cKomp;
say "Udział ceny procesora :" cProc/cKomp;

Proszę zapisać ten program i uruchomić na własnym komputerze.


Dobierając nazwy zmiennych należy:
  • stosować się do ograniczeń danego języka,
  • wiedzieć czy wielkie i małe litery są w nazwach zmiennych rozróżniane,
  • wybierać takie nazwy które są czytelne i mają merytoryczne znaczenie.

Wszystkie ceny przypisujemy zmiennym. Nazwy zmiennych możemy sami dobierać, ale każdy język wprowadza jakieś restrykcje w tym względzie (np. nazwa zmiennej nie może zaczynać się cyfrą i może zawierać tylko znaki alfanumeryczne; długość nazwy zmiennej może być ograniczona). Niektóre języki nie rozróżniają wielkich i małych liter w nazwach zmiennych (np. nazwa x oznacza tę samą zmienną, co nazwa X), inne (np. Java) - rozrózniają (x jest całkiem inną zmienną niż X).

Przejdźmy teraz do semantyki. Zapis:

cProc = 500;

oznacza, że zmienna cProc uzyskuje wartość wyrażoną literalnie jako liczba 500. Mówimy też "przypisanie wartości zmiennej" lub "podstawienie wartości na zmienną".
Od tego momentu cProc oznacza to samo co 500. Jeżeli napiszemy say cProc - to wyprowadzona zostanie wartość zmiennej cProc czyli liczba 500.
Wartość tę możemy w każdej chwili zmienić i w naszym programie robimy to ustalając nową wartość ceny procesora: cProc = 300;.

Ale co to jest przypisanie? Co oznacza zapis: cKomp = cProc + cPly + cPam + cDysk + cMon +cInn?
Dlaczego możemy napisać: say cProc i jak to jest interpretowane? Co oznacza (dziwny może) zapis cProc/cKomp?
Odpowiedzi na te pytania dostarczy nam następny podpunkt.


« poprzedni punkt  następny punkt »