Co za różnica?

0

Witam Was serdecznie ;)
Jestem totalnie zielony i początkujący. Zacząłem od C++, jednak zastanawia mnie pewna kwestia. Mamy taki oto kod źródłowy:

#include <iostream>
using namespace std;

int main()
{
int year = 2015, month = 08, day = 18;
cout<<"Dziś mamy"<<day<<"."<<month<<"."<<year;
cin.get ();
return 0;
}
 

Co nam ma wyświetlić "Dziś mamy 18.08.2015, tak? Po co nam więc te zmienne? Po co w ogóle je definiujemy? Równie dobrze przecież moglibyśmy chyba to napisać tak?:

#include <iostream>
using namespace std;

int main()
{
cout<<"Dziś mamy 18.08.2015;
cin.get()
return 0;
}
 

Więc gdzie jest różnica?

0

No dobra, a teraz wyobraź sobie, że chcesz sobie napisać program pobierający czas z systemu operacyjnego? Przecież nie będziesz ręcznie wpisywał co sekunda wartości do strumienia tylko użyjesz zmiennej.

Prawda...? :)

BTW: Cudzysłów postaw w drugim listingu i średnik też postaw, o!
BTW2: W tym konkretnym przypadku bez różnicy.

4

Wyobraź sobie, że tę samą datę musisz wyświetlić w innym miejscu programu. A potem się okazuje, że data musi być zmieniona na inną.
W pierwszym przypadku robisz zmianę w jednym miejscu. W drugim w dwóch.
A teraz wyobraź sobie, że zamiast dwóch masz 20 takich miejsc porozrzucanych po różnych plikach. Wolisz zmienić w jednym miejscu czy 20? Przy czym szansa przegapienia czegoś w drugim przypadku jest ogromna.

1

Oba są bez sensu, bo data powinna być pobierana z systemu. Aktualnie i w jednym i w drugim przypadku "program" ten musi być przekompilowywany codziennie :P

1

@Sarrus Zapewne autor wątku posłużył się tylko prostym przykładem. A zmienne? Używa się ich jak wszystkiego czyli z głową. Przykładów można by tutaj namnożyć na całkiem dobrą książkę. Jak ktoś chce zmieniać codziennie komplikacje... to niech sobie zmienia. Jak ktoś chce użyć zmiennej... to niech używa. Chcesz zmieniać w programie dane w 45 miejscach? Zmieniaj :)

Ot takie podsumowanie i od razu widać po co są zmienne. Ta dyskusja może nie mieć końca hehe.

2

Ma to jakieś powiązanie z
https://en.wikipedia.org/wiki/Magic_number_(programming)
które jest be. I chodzi głownie o czytelność / modyfikowalność.
przykład (bardzo prosty):

for (size_t i = 0; i < 10000; ++i)
   test();

jest raczej niefajne. Fajne jest:

size_t test_size = 10000;
for (size_t i = 0; i < test_size; ++i)
   test();
0

Pierwszy kod się nie skompiluje btw.

0

Why? :(((

1 użytkowników online, w tym zalogowanych: 0, gości: 1