eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprogramowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralkiRe: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
  • Data: 2017-10-31 11:09:23
    Temat: Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
    Od: Piotr Gałka <p...@c...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2017-10-30 o 15:29, ToMasz pisze:
    >
    > Jak dlamnie w c++ mogę napisać program, w krórym zawsze, bez wyjątku,
    > komputer musi "przerobić" wszystko od a do z, nawet jeśli połowa lub
    > więcej nie będzie wykorzystywana. w części niewykorzystywanej będzie if
    > cośtam - nierób nic.
    > W zasadzie o to pytałem. czy to jest dobry sposób pisania programu w C+?
    > (dialekt arduino) Na pierwszy rzut oka to marnortrastwo pracy procesora,
    > bo jak właśnie tłumaczę, jeśli w basicu napiszę program ma tylko płukać,
    > będzie startował od 10 do 100, gdzie jest program główny i skakał do
    > 900-999 gdzie  jest płukanie. to samo w c++ będzie  U MNIE wymagało
    > przejścia - pranie? nie nie pierz, ale sprawdz jak się pierze. płukanie?
    > Nie nie płukaj, ale już wiesz jak to należało zrbić? przeczytałeś
    > procesorku? no to się śpiesz, bo tam gdzieś na koncu jest płukanie.
    >
    > O istotę mi chodzi o sens
    >

    Naszło mnie aby to przeczytać jeszcze raz i jeszcze raz itd...
    Czytając:

    "pranie? nie nie pierz, ale sprawdz jak się pierze. płukanie?
    Nie nie płukaj, ale już wiesz jak to należało zrbić? przeczytałeś
    procesorku?"

    mam wrażenie, że Ty uważasz, że jak jest
    if(warunek)
    {
    zrób jedno coś;
    zrób inne coś;
    zrób coś na zakończenie;
    }

    i warunek jest false to procesor będzie studiował znak po znaku to co
    jest napisane w {} szukając } zamykającego blok wykonywany warunkowo.

    Otóż nic z tych rzeczy - on od razu skoczy za }
    Zapominasz, że kod źródłowy został dawno przeanalizowany przez
    kompilator i w programie, który widzi procesor jest po prostu skok w
    odpowiednie miejsce gdy warunek jest false.

    W programie, który widzi procesor, jest cała masa goto. Różnica jest
    taka, że o to aby te skoki były w dobre miejsca dba kompilator a nie
    programista.

    Jeszcze słówko o pomijaniu kawałków programu w przypadku błędów - bo mam
    wrażenie, że to też miejsce gdzie chciałbyś mieć goto.

    W prostym przypadku, gdy mamy wykonać serię czynności, ale jak któraś
    się nie uda to mamy pominąć pozostałe i na końcu wiedzieć, że był błąd
    to zakładając, że mamy serię funkcji z których każda zwraca true jak się
    jej udało i false jak się nie udało to można to zapisać np. tak:

    bool ok=fun1();
    if(ok)ok=fun2();
    if(ok)ok=fun3();
    if(ok)ok=fun4();

    lub krócej:
    bool ok = fun1() && fun2() && fun3() && fun4();

    gdyż operator && (logiczne and) nie sprawdza wartości tego czego nie
    musi - jak np. fun2() da false to on już wie, że wynik całego wyrażenia
    będzie false i nie ustala wartości fun3() i fun4() czyli ich nie wykonuje.

    I w obu przypadkach jak fun2() zwróci false to procesor nie będzie
    czytał dalszego kawałka programu tylko ma w programie skok na koniec tej
    sekwencji.
    P.G.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: