eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaarduino, początki, inny edytorRe: arduino, początki, inny edytor
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neost
    rada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: "slawek" <s...@h...pl>
    Newsgroups: pl.misc.elektronika
    References: <a...@n...v.pl>
    <odt7u9$ni$1@node2.news.atman.pl>
    <a...@n...v.pl>
    <a...@n...neostrada.pl>
    <a...@n...v.pl>
    <a...@n...neostrada.pl>
    <a...@n...neostrada.pl>
    <a...@n...v.pl>
    <a...@n...neostrada.pl>
    In-Reply-To: <a...@n...neostrada.pl>
    Subject: Re: arduino, początki, inny edytor
    Date: Sat, 29 Apr 2017 18:19:49 +0200
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 14.0.8117.416
    X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8117.416
    X-Antivirus: AVG (VPS 170429-0, 2017-04-29), Outbound message
    X-Antivirus-Status: Clean
    Lines: 54
    Message-ID: <5904bc98$0$5151$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 188.47.94.189
    X-Trace: 1493482648 unt-rea-a-01.news.neostrada.pl 5151 188.47.94.189:13741
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:717478
    [ ukryj nagłówki ]


    Użytkownik "Marek" <f...@f...com> napisał w wiadomości grup
    dyskusyjnych:a...@n...neos
    trada.pl...
    > Wypuść powietrze, zastanów się i odpisz w, temacie _konkretnego_ przykładu
    > z linka. [ http://www.cprogramming.com/tutorial/goto.html ]

    Jeden rzut oka i widać że autor tutoriala robi fundamentalny błąd. Zamiast
    po prostu sprawdzać czy jest dobrze (tzn. czy nie ma błędu)... sprawdza czy
    jest błąd. Niby to to samo, ale skutki poważne - zwłaszcza że nadużywa
    return - biedak musi wywoływać cleanup wiele razy. (Ok, zaraz niedouczeni
    koderzy podniosą wrzask, że to nie jeden cleanup, ale wiele różnych. Cóż,
    warto sprawdzić czy rzeczywiście? Przecież można sprzątanie napisać tak, aby
    działało tak samo dobrze w każdym przypadku, np. free(NULL) jest
    bezproblemowe. )

    Przy prostszych sprawach wystarczy takie coś bez goto:

    int big_function()
    {
    int success = 0;

    /* do some work */

    if( !error1 )
    {
    ... /* do some more work */
    if( !error2 )
    {
    ... /* do some more work */
    if( !error3 )
    {
    ... /* do some more work */
    success = 1; }
    }
    }

    /* clean up*/

    return success;
    }

    Przy bardziej poważnych programach można zrobić to nawet ładniej, ale
    obawiam się że i tak tego nie zrozumiesz, a zwłaszcza tego gdzie teraz jest
    clean-up.

    int big_function(Task* list)
    {
    int success = 1;
    while ( *list && ( list->doWork(list) || success = 0 )) list =
    list->next;
    return success;
    }


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: