-
Data: 2018-11-18 10:28:51
Temat: Re: Niezmienniki pętli
Od: fir <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu niedziela, 18 listopada 2018 10:10:22 UTC+1 użytkownik fir napisał:
> W dniu piątek, 16 listopada 2018 16:48:18 UTC+1 użytkownik s...@g...com
napisał:
> > > Czy w związku z tym zagadnienie niezmienników jest niepotrzebne? A może nadal
jest potrzebne i coś innego je zastępuje?
> >
> > 1. Wiedziałem co to jest.
> >
> > 2. Stosuję
> >
> > 3. Sam też stosujesz
> >
> > Najprostrze zastosowanie:
> > QList<int> lList = {0, 1, 2, 3, 4, 5};
> > for(int i(0); i < lList.size(); ++i)
> > // tu robisz coś z lList
> > W tej pętli niezmiennikiem sprawdzanym przed wejściem w pętlę i po kazdej
iteracji jest:
> > i < lList.size()
> >
> > Nieco bardziej ogólne jest:
> > QList<int> lList = {0, 1, 2, 3, 4, 5};
> > for(int& lItem : lList)
> > // tu robisz coś z lItem
> > W tym przypadku niezmiennikiem (ukrytym) jest fakt iteracji po wszystkich
elementach listy.
> >
> > 4. Zazwyczaj dalszych niezmienników w pętli nie sprawdzam. Głównie ze względu na
2 wady:
> > 4.1. Puchnięcie i zaciemnianie kodu.
> > 4.2. Spowolnienie programu.
> >
> > 5. Bardzo często sprawdzam parametry wejściowe funkcji (wierzę i stosuję coś w
rodzaju programowania kontraktowego).
> > 5.1. Wierzę w try, throw, catch (wyjątki obowiązkowo dziedziczone po
std::exception z opisem i kodem błędu).
> > 5.2. Nie wierzę w i nie cierpię Assert (to tak jak by bez ostrzeżenia uderzyć
kogoś w twarz bez dalszego komentarza).
> > 5.3. Toleruję wartości zwracane (jako informacje o błędach) i brak standaryzacji
w dostępie do opisów błędów w Qt.
>
> ostatnio odkrylem dosyc odkrywczy sposob
> dilowania (tj forme kodowanie obslugi bledow) z bledami w jezykach podobnych
> do c
>
> wymaga on pewnej poprawki do jezyka,
>
> (i jest opisany na clc, troche nie che mi sie tu opisywac bo nie lubie sie
powtarzac)
>
> jest on ogolnie ciekawy bo mz pokazuje co to jest normalne dilowanie z bledami i na
czym to normalne dilowanie z bledami normalnie polega (ma polegac)
>
> nawiasem mowiac w swietle tego asercje
> albo bledy przypadkowe (jak np zmienienie sie jakiejs komorki w rami i wyjatek typu
nielegalna instrukcja) nie sa normalnymi sposobami dilowania z bledami tylko pewnymi
case'ami nadspecjalnymi
>
> NORMALNY i najbardziej typowy sposob z
> handlowaniem z bledami w programie to zwykle zwrocenie informacji o bledzie do
funkcji w tyl - tylko ze nie powinno to byc mieszane ze zwracaniem poprawnej wartosci
w tym kanale w ktorym zwraca sie wartosci w sytuacjach niebledowych..
>
> dzis jesli ktos zwraca blad w tyl (jak rozne api robia) to ogolnie robi dobrze,
> tylko ze jesli wtyka kody bledow w wartosci zwracane to zarazem robi zle ;c
>
> https://groups.google.com/forum/#!topic/comp.lang.c/
p1CcmgZKkV4
albo ok niech, bedzie opisze po polsku
sposob polage on na tym
int x = foo(20,10) on error { printf("error"); }
polaga on na tym ze wywolanie kazdej funkcja ktora moze zwrocic error powinno
obsluzyc branch tj wstawic tam dowolny kod do obslugi bledu
po stronie ciala funkcji wyglada to tak ze, wychodzisz z funkcji nie przez return ale
inne slowo kluczowe np error
int foo(int a, int b)
{
if(a<b) error;
return a-b;
}
implementacja, ustawiasz po wyjsciu z funkcji jakas flage, np carry, zero czy cos w
tym stylu
niektore zalety
1. musisz jawnie napisac klauzule obslugi bledu (zacheca do klarownej obslugi)
2. w ciele wolanej funkcji obsluga bledow jest dosyc jasna i klarowna (zacheca do
klarownej obslugi)
obie strony zachecaja do klarownej obslugi, po prostu kodowanie bledow jako
normalnych stanow programu do czego obecne c jakos nie zacheca
jest to wielka zaleta ... kody sa bardziej kompletne, moga byc 'zamniete na bledy'
3. nie mieszasz wartosci zwracanej i kodu bledu (to mieszanie to syf)
jest to wielka zaleta ... kody sa czystsze
4. skladania jest wzglednie ladna (moze poprobuje poprawic to wyzej to draft)
(napewno sprobuje poprawic bo to zarys, nie wiem np co z tymi domyslnymi sygnalami,
tj ze skladnia do tego o czym troche nizej)
5.jest szybkie w runtime (chyba szybciej nie mozna, nie jestem pewien, kiedys mozna
pomyslec)
6, rozwiazuje duzo abstrakcyjnego chaosu, bo ludzi zastaawiaja sie jak dilowac z
bledami to jest tak naprawde poprawny sposob
to jest tez duza zaleta boludzi emaja sporo problemow ze zrozumieniem co robic z
bledami - to co ja tutaj proponuje jest tak naprawde dosyc poprawneym rozwiazaniem -
zwracasz bald wyzej, kod wywolywacza podejmie decyzje
dopuszczam lub rozwazam jeszcze opcje dla super leniwych, opcje opuszczania tych
klauzul (ew jakiegos zaznaczania ze sa opuszczane, nie ejestem pewien) w takim
wypadku, na kazdy zwrocony a nie zbranczowany blad lecialby sygnal do
zarejsetrowanego handlera eventow - co tez jest wygodne jak ktos jest superleniwy
pytaniem jest troche 1) czy dopuszczac opuszczanie tych branczy czy raczej to
poprostu zawsze wymuszac (do tego zdanie moga byc podzielone, ale raczej wydaje sie
ze na specjalna prosbe autora kodu przynajmniej (jakas opcja kompilaci czy cos nalezy
na o dozwolic)) 2) drygie pytanie czy na takie opuszczenie kompletnie ignorowac te
brancze czy zmuszac do oznaczania jakims prostym slowem , chocby "SIG" zeby bylo
wiadome
ze blad teoretycznie moez poleciec 3)
trzecie pytanie co robic w wypadku gdy taki nieobsluzony blad poleci,
najrozsadzniejsza opcja chyba wydaje sie wywalanie signal handlera z jakims domyslnym
kodem w tym handlerze (typu wywalenie message boxa z informacja
"error taki a taki w funkcji takiej a takiej zwrocony przez funkcje taka a taka,
nacisnij ok by zamknac program (ignoruj by zignorowac?"
lekko otwarta kwestia jest tez w jakis sporob te polecenie arror powinny zwracac info
o bledzie oraz co robic z wartoscia zwracana w tym wypadku (w duchu starego c
znaczyloby chyba ze jest undefined, ale ew mozna wymyslec cos innego)
Następne wpisy z tego wątku
- 18.11.18 17:35 Sebastian Biały
- 19.11.18 08:14 Maciej Sobczak
- 19.11.18 09:22 Roman Tyczka
- 19.11.18 10:37 Queequeg
- 19.11.18 10:45 Queequeg
- 19.11.18 17:15 g...@g...com
- 19.11.18 19:45 g...@g...com
- 19.11.18 19:49 g...@g...com
- 19.11.18 21:18 s...@g...com
- 19.11.18 21:44 Queequeg
- 19.11.18 22:10 fir
- 19.11.18 22:16 fir
- 19.11.18 23:12 g...@g...com
- 20.11.18 00:00 AK
- 20.11.18 00:20 AK
Najnowsze wątki z tej grupy
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
Najnowsze wątki
- 2026-01-08 Ślad węglowy
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Dlaczego wrzucenie szkolnego krzyża do śmieci to zbrodnia mniejsza od zgaszenia sejmowej menory?
- 2026-01-08 NR 5G -- mity, hity, kity, bez satelity...
- 2026-01-07 Oszustwa w go go
- 2026-01-07 Jaka myjka ultradźwiękowa?
- 2026-01-07 POCO
- 2026-01-07 Kraków => Konsultant Microsoft Dynamics AX/365 SCM Consultant - Servi
- 2026-01-07 Kraków => Microsoft Dynamics AX/365 SCM Consultant - Service & Suppor
- 2026-01-06 I kolejny
- 2026-01-06 Retro organizer ale współcześnie
- 2026-01-06 Bowling




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]