-
Data: 2017-10-24 10:56:23
Temat: Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
Od: "HF5BS" <h...@...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]
Użytkownik "Piotr Gałka" <p...@c...pl> napisał w
wiadomości news:osmsrd$mk1$1$PiotrGalka@news.chmurka.net...
>W dniu 2017-10-24 o 09:31, Atlantis pisze:
>> W C/C++ możesz z grubsza programować tak, jak to się robiło w Basicu.
>> Służą do tego etykiety (słowo zakończone dwukropkiem) oraz instrukcja
>> goto. Tylko moim zdaniem nie ma to większego sensu - instrukcja ta
>> przydaje się sporadycznie (choć w pewnych sytuacjach faktycznie się
>> przydaje), a jej nadużywanie drastycznie zmniejsza czytelność kodu. Są
>> tacy, których zdaniem nie powinno się jej używać w ogóle.
>>
>
> Nigdy nie zdarzyło mi się mieć potrzeby użycia w C instrukcji goto, ba,
> nawet jakby mnie ktoś poprosił o wymienienie wszystkich instrukcji
> dostępnych w C to chyba bym sobie o niej nie przypomniał, a używam
> (sporadycznie i nie do mikrokontrolerów) C gdzieś tak od 1986r.
Ja w basicu też mniej-więcej tak. Przyznaję, używałem, w różnych dialektach.
Głównie w sytuacji, gdy np. finalizowałem program i np. trzeba było
przeskoczyć baterię podprogramów (tak, jak najbardziej daje sie programować
strukturalnie, obiektowo? Przyznam, że nie wiem, musiałbym poznać, co to), a
upraszczało to program... Albo z lenistwa :)
>
> Tak się zastanawiam do czego ona mogła by być przydatna i nie bardzo
> potrafię wymyślić jakiś przykład generujący realną taką potrzebę.
Na szybko, z numerami linii, trochę lenistwa (jak np. coś się rzeźbiło
ad-hoc, nie szkoda róż, gdy płonie las, jak szkoda było czasu na
grzeczności)
10 coś-tam
20 gdzieś tam
25 IF n=7 GOTO 50
30 GOSUB 100: REM drapanie po tyłku
40 GOSUB 200: REM klepanie po ramieniu
50 END: REM kończymy program, można zastosować, robiło się IF n=7 THEN END
100 podrap mnie: RETURN
200 poklep mnie: RETURN
Czasami szybciej było tak "na chama", niż tworzyć dodatkowo zestaw procedur.
Poza tym, zajmowało mniej pamięci, niewiele, czasem było to decydujące, jak
program był na styk w pamięci, co w małych komputerkach było całkiem częste.
> A jeśli już w ogóle to chyba tylko wewnątrz jednej funkcji do jakiegoś
> rozwikłania czegoś co w przeciwnym wypadku wymagało by albo dwukrotnego
> napisania kilku linijek programu, albo ujęcia ich w kolejną wywoływaną
> funkcję.
Różnie, często z lenistwa, ale też często z braku (poza GOSUB/GO SUB -
zależnie od dialektu) mechanizmu wspierającego strukturalność w wielu
dialektach BASICa.
Pierwsze możliwości trafiłem w QBASIC M$, gdzie zresztą linie programu są
już w rzeczywistości etykietami i tak przez interpreter uważane. Gdzie
jawnie można już było używać etykiet, już chyba od GWBASICa była też
rozszerzona instrukcja IF: (nie pomnę teraz dokładnej składni, ale mniej
więcej...)
IF n=7
podrap mnie po głowie
powiedz coś miłego
mozna było zagnieżdżać pętle
ENDIF
Jeszcze pętle WHILE-WEND, co dialekt, to inaczej.
> Na pewno wybrałbym jedno z tamtych rozwiązań, a nie goto, choćby dlatego,
> że nie pamiętam o jego istnieniu.
No, gdybym od początku tak mógł..., zresztą nawet wszelkie pisemka
pyszczyły, aby unikać goto, żeby działać strukturalnie, dzięki czemu np. w
razie zmiany jakiegoś komponentu przegrzebać trzeba będzie tylko jego
podprogram, zamiast rzeźbić ponownie całość, taka konstrukcja modułowa.
Zresztą, dla zabawy bawiłem się (tautologia, wiem), w programowanie
strukturalne używając tylko goto, bez gosub i innych procedur definiowanych.
Dzisiaj... chyba już mi się nie bardzo chce, bo się nie bawię...
Sporadycznie...
--
Psy kochają przyjaciół i gryzą wrogów,
w odróżnieniu od ludzi, którzy niezdolni są do czystej miłości
i zawsze muszą mieszać miłość z nienawiścią.
(C) Zygmunt Freud.
Następne wpisy z tego wątku
- 24.10.17 11:22 Janusz
- 24.10.17 11:24 Piotr Gałka
- 24.10.17 11:39 ajt
- 24.10.17 11:45 Piotr Gałka
- 24.10.17 11:58 Piotr Gałka
- 24.10.17 12:27 Piotr Gałka
- 24.10.17 12:30 Mateusz Viste
- 24.10.17 12:58 J.F.
- 24.10.17 13:23 Piotr Gałka
- 24.10.17 13:30 Włodzimierz Wojtiuk
- 24.10.17 13:42 Piotr Wyderski
- 24.10.17 13:42 Piotr Gałka
- 24.10.17 13:49 Piotr Wyderski
- 24.10.17 13:52 J.F.
- 24.10.17 14:07 Piotr Gałka
Najnowsze wątki z tej grupy
- Jak odróżnić myjki wibrujące od ultradźwiękowych.
- Ledy na wyłączniku czasowym błyskają
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- RCD wybija
- Re: Kompensacja mocy biernej przy 230VAC
- Łożysko ślizgowe - jaki olej
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- Współczesny falomierz
- Zasilacz 7V na szynę DIN
- Waga z legalizacją
- Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- Pendrive zdycha, czy coś jeszcze innego? Problem z plikami.
- Odkurzacz Smapp Dynamic - dawny Zelmer
Najnowsze wątki
- 2025-04-05 Wyrok dożywocia dla Polki
- 2025-04-04 Prezydium Sejmu Tuskiego orzekło: Poseł KO mecenas Roman Giertych NIE jest mordercą (w żadnym sensie tego słowa?)
- 2025-04-04 Reset komóry
- 2025-04-04 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-04-04 Zielonka => Key Account Manager IT <=
- 2025-04-04 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2025-04-04 Warszawa => Mid/Senior IT Recruiter <=
- 2025-04-04 Białystok => NMS System Administrator <=
- 2025-04-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-04-04 Warszawa => Generative AI Engineer <=
- 2025-04-04 Warszawa => Gen AI Engineer <=
- 2025-04-04 Warszawa => Senior Programmer C <=
- 2025-04-04 Jak odróżnić myjki wibrujące od ultradźwiękowych.
- 2025-04-03 Ledy na wyłączniku czasowym błyskają
- 2025-04-03 Mapy w android-auto