eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprogramowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki › Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.213.192.88.238
    !not-for-mail
    From: Piotr Gałka <p...@c...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli
    programatora pralki
    Date: Tue, 31 Oct 2017 11:09:23 +0100
    Organization: news.chmurka.net
    Message-ID: <ot9i4h$odg$1$PiotrGalka@news.chmurka.net>
    References: <osllnb$psp$1@dont-email.me> <osllnb$psp$1@dont-email.me>
    <a...@n...v.pl>
    <59f73750$0$654$65785112@news.neostrada.pl>
    NNTP-Posting-Host: 213.192.88.238
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Injection-Date: Tue, 31 Oct 2017 10:09:21 +0000 (UTC)
    Injection-Info: news.chmurka.net; posting-account="PiotrGalka";
    posting-host="213.192.88.238"; logging-data="25008";
    mail-complaints-to="abuse-news.(at).chmurka.net"
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101
    Thunderbird/52.4.0
    Content-Language: pl
    In-Reply-To: <59f73750$0$654$65785112@news.neostrada.pl>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:725452
    [ ukryj 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: