Yurika Goto bez majtek

Yurika Goto bez majtek




🛑 KLIKNIJ TUTAJ, ABY UZYSKAĆ WIĘCEJ INFORMACJI 👈🏻👈🏻👈🏻

































Yurika Goto bez majtek
programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
witam
bardzo bardzo hobbisticznie zajmuję się arduino. w wolnych chwilach,
żeby synowi zaszczepić.... Nie. Żeby się nie bał elektroniki. Wpadłem na
pomysł aby pralkę w której umarła elektronika, naprawić za pomocą
arduino. Tyle ze ja pokolenie temu programowałem zx spectrum, więc
jestem skażony na całe życie
Czy w basicu czy w C++, zacząłbym od napisania sekcji, takich jak
pranie, czyli: spawdzenie czy jest woda, czy klapka zamknięta i
obracanie bębnem w prawo i lewo, Wirowanie, czyli znowu - klapa, woda i
dawaj z obracaniem itd. pralkę zaopatrzyłbym w 3 pokrętła. czas prania,
szybkość wirowania i temperatura. użytkownik ustawiałby nimi wartość
zmiennych czas, temp, obr. no i w basicu, każda z sekcji zaczynałby się
w konkretnej lini. pranie 100, płukanie 200, wirowanie 300.
sam program wykonawczy wyglądałby ( w uproszczeniu ) tak:
go to 100 (pranie)
go to 100 (pranie)
go go 100 (pranie)
go to 200 (płukanie)
go to 300 (wirowanie)
nie chcąc komplikować emaila, użyłem 3 zadań, ale ze wzrostem ich
liczby, program w bascu, tylko lekko urośnie. w C++ - nie mam pojęcia
jak to _dobrze_ zrobić. precyzując - zrobię, program wychodzi 2 razy
dłuższy, i to na zasadzie, rób _wszystko_ po kolei (bo nie mogę skakać
po numerach lini), ale jeśli jakiś tam parametr był już
zrobiony(wybrany), to pomiń.... (np płukanie). tak, da się, ale program
robi się znacznie dłuzszy, coraz więcej zmiennych, i tabun if-ów. no nie
wierzę że nieda się tego w C++ zrobić prościej.

Czy moglibyście mi pi razy oko wyjasnić jak to sie w C robi? Tyle ze nie
mogą być to osobne programy zapisane na dysku (do wczytywania w miarę
trwania prania), bo to trzeba na raz wgrać do arduino.

ToMasz

PS
PRalki jeszcze nie tknąłem.

You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
> witam
> bardzo bardzo hobbisticznie zajmuję się arduino. w wolnych chwilach,
> żeby synowi zaszczepić.... Nie. Żeby się nie bał elektroniki.


Wpadłem na
> pomysł aby pralkę w której umarła elektronika, naprawić za pomocą
> arduino. Tyle ze ja pokolenie temu programowałem zx spectrum, więc


> jestem skażony na całe życie
> Czy w basicu czy w C++, zacząłbym od napisania sekcji, takich jak

Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.

Programowanie strukturalne albo obiektowe jest dużo bardziej naturalnym
rozwiązaniem od tego, z czym ma się do czynienia w Basicu albo
asemblerze. Dlatego warto jak najszybciej pozbyć się starych przyzwyczajeń.

Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
> 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.
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>bardzo bardzo hobbisticznie zajmuję się arduino. w wolnych chwilach,
>żeby synowi zaszczepić.... Nie. Żeby się nie bał elektroniki. Wpadłem
>na pomysł aby pralkę w której umarła elektronika, naprawić za pomocą
>arduino.



>Czy w basicu czy w C++, zacząłbym od napisania sekcji, takich jak
>pranie, czyli: spawdzenie czy jest woda, czy klapka zamknięta i
>obracanie bębnem w prawo i lewo, Wirowanie, czyli znowu - klapa, woda
>i dawaj z obracaniem itd. pralkę zaopatrzyłbym w 3 pokrętła. czas
>prania,



>sam program wykonawczy wyglądałby ( w uproszczeniu ) tak:
>go to 100 (pranie)

>go to 100 (pranie)
>go go 100 (pranie)
>go to 200 (płukanie)
>go to 300 (wirowanie)


>Czy moglibyście mi pi razy oko wyjasnić jak to sie w C robi? Tyle ze
>nie


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>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.



>
> 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ę.



> 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ę.



> Na pewno wybrałbym jedno z tamtych rozwiązań, a nie goto, choćby dlatego,
> że nie pamiętam o jego istnieniu.


You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
> 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.
>
> 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ę.

Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
W dniu 2017-10-23 o 23:07, ToMasz pisze:

> Czy moglibyście mi pi razy oko wyjasnić jak to sie w C robi? Tyle ze nie
> mogą być to osobne programy zapisane na dysku (do wczytywania w miarę
> trwania prania), bo to trzeba na raz wgrać do arduino.
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
W dniu 2017-10-24 o 10:15, Piotr Gałka pisze:

> 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.
>
> 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ę.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>
>> 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
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message

>> 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ę.
> Znalazłby się, np wyjście z podwójnej pętli, breakiem wyjdziesz tyle że
> pętlę wyżej gdzie musisz testować warunek dalszego wyjścia, jak widzisz
> zaciemnia się kod i robi się to mało eleganckie.
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>>
>> 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ę.
>
> Mam podobny staż i też nie używam goto, ale jedyny raz to zrobiłem w
> pewnym konkretnym przypadku. Musiałem zaimplementować algorytm liczenia
> pierwiastków zespolonych wielomianu dowolnego stopnia. W jakiejś książce
> znalazłem gotową procedurę w Fortranie. Kod był strasznie pokręcony i
> miał powtykane goto w wielu różnych miejscach, np. w ten sposób było
> zrobione wyjście z pętli, ale i wskoczenie do pętli w inne miejsce po
> spełnieniu jakiegoś warunku na zewnątrz. Próbowałem to przerobić na
> jakąś czytelniejszą postać, ale w końcu się poddałem i mechanicznie
> przepisałem na C, wraz ze wszystkimi goto. Poszło od pierwszego razu,
> więc nie chciało mi się już później przy tym grzebać :)


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
On Tue, 24 Oct 2017 11:58:35 +0200, Piotr Gałka wrote:
> Kiedyś przetestowałem break;break; i OIDP zadziałało dobrze, ale nie
> byłem pewien, czy to przypadek, czy cecha języka więc dołożyłem bool
> który służył tylko do tego aby zewnętrza pętla wiedziała, że wewnętrzna
> każe wyjść.



> Kilka lat temu kupiłem sobie ostatnią książkę Stroustrupa o C++.
> Nie przebrnąłem przez całą. Utkwiło mi w pamięci, że według niego jak
> funkcja ma więcej jak 7 linijek to znaczy, że program jest źle napisany.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>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.



>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ę.
>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ę.



>Na pewno wybrałbym jedno z tamtych rozwiązań, a nie goto, choćby
>dlatego, że nie pamiętam o jego istnieniu.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message

> Raczej przypadek... Albo jakieś dziwne zachowanie kompilatora którego
> użyłeś.
> ISO-9899-1990 mówi: " 6.6.6.3 : A break statement terminates execution of
> the smallest enclosion switch or iteration statement."
>
> Dlatego więc drugie 'break' w przykładzie który podajesz jest (a
> przynajmniej powinno być) martwym kodem.
>
> Prosty test:
>
> int main(void) {
> for (;;) {
> for (;;) {
> break; break;
> }
> }
> return(0);
> }



> Też czytałem takie opinie, ale chyba z innego źródła, bo Stroustrupa
> przeczytałem tylko wstęp i miałem dość :) Ta reguła siedmiu linijek to
> jakiś wymysł nowego pokolenia... Zdarzało mi się miewać takich wśród
> moich pracowników. Młodym się chyba nudzi i wymyślają sobie różne zabawy.
> A jak trzeba coś konkretnego zrobić to sięgają po zewnętrzne biblioteki
> by rozwiązać nawet relatywnie proste sprawy, "bo po co wymyślać na nowo",
> a potem projekt nie da się skompilować bo wymaga miliona zależności,
> których połowa już nie istnieje lub zmieniła API. Życie.
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
On 2017-10-24 08:29, Janusz wrote:

>
>> PRalki jeszcze nie tknąłem.
> I dobrze, jeszcze sobie lub dziecku krzywdę zrobisz.
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
Piotr Gałka wrote:

> 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ę.


}

> 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ę.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message

> Pomysl lepiej ile razy kombinowales, gdy jedno goto zalatwiloby sprawe,



> jak podano - wyjscie z zagniezdzonych petli.



> Inna sprawa, ze jakbym tak zaczal mieszac za pomoca goto, to pewnie tez
> bym sie pogubil :-)
>


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
Piotr Gałka wrote:

> Kiedyś przetestowałem break;break; i OIDP zadziałało dobrze, ale nie
> byłem pewien, czy to przypadek



> czy cecha języka więc dołożyłem bool który służył tylko do tego
> aby zewnętrza pętla wiedziała, że wewnętrzna każe wyjść.



> Potem chyba zastąpiłem wewnętrzną przez osobną funkcję
> inline i wydaje mi się to lepszym/czytelniejszym rozwiązaniem niż goto.



> Kilka lat temu kupiłem sobie ostatnią książkę Stroustrupa o C++.
> Nie przebrnąłem przez całą. Utkwiło mi w pamięci, że według niego jak
> funkcja ma więcej jak 7 linijek to znaczy, że program jest źle
> napisany.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
Użytkownik "Piotr Gałka" napisał w wiadomości grup

W dniu 2017-10-24 o 12:58, J.F. pisze:

>> jak podano - wyjscie z zagniezdzonych petli.

>Jak dopada mnie taki przypadek to robię podfunkcję z której w wielu
>miejscach wychodzę przez return - w sumie to podobne do goto i
>możliwe że też jest 'be'.

>> Inna sprawa, ze jakbym tak zaczal mieszac za pomoca goto, to pewnie
>> tez bym sie pogubil :-)

>Jak użyć goto tak jak wyżej opisany return to pewnie na czytelności
>wiele nie traci, ale jak byłoby w funkcji kilka etykiet i gdzieś tam
>skoki do nich - niektóre do przodu, niektóre do tyłu to chyba bym
>zwariował próbując zrozumieć.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>
> A mnie się zdarza stosunkowo często, choć przypadki użycia są jedynie dwa:
>
> 1. Opuszczanie wielokrotnie zagnieżdżonych pętli.
> 2. Przekazywanie sterowania do wspólnego kodu obsługi błędu dla danej
> sytuacji:
>
> if (dobrze) {
>
>    // to dobrze
> } else {
>
> lbl_zle:
>
>    // bardzo zle
> }
>
> if (albo_jednak_zle) {
>
>    goto lbl_zle;
> }



> Dokładnie o to chodzi. Goto potrafi znacznie *podnieść* czytelność,


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
Piotr Gałka wrote:

>> Pomysl lepiej ile razy kombinowales, gdy jedno goto zalatwiloby sprawe,
>
> Czasem kombinowałem, ale na prawdę nie pamiętając w ogóle o istnieniu
> goto nigdy nie miałem myśli "jedno goto załatwiloby sprawę" dlatego nie
> mam pojęcia czy tak było w tych przypadkach gdy kombinowałem.



> Jak dopada mnie taki przypadek to robię podfunkcję z której w wielu
> miejscach wychodzę przez return - w sumie to podobne do goto i możliwe
> że też jest 'be'.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>
> W assemblerze mi sie nie mylilo :-)
>

Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
>
> A jak masz kaskadowe returny? Funkcja bardziej niż z siebie nie wróci
> i się zaczynają piętrowe ifki do obsługi takich sytuacji.


Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
Piotr Gałka wrote:

> Taka konstrukcja z cofaniem się w kodzie jest dla mnie trudna.



> Nie rozumiem czy zakładasz, że albo_jednak_zle może być true po
> wykonaniu bloku dobrze, czy else.



> Jak po else to znaczyło by, że kod //bardzo zle nie gwarantuje, że
> albo_jednak_zle będzie false - czyli może się zapętlić.



> A jak po dobrze to by znaczyło, że warunek dobrze nie jest 100% pewny.



> Kiedyś dawno błędy zawsze obsługiwałem tak, że wszystkie funkcje
> zwracały int i każda wyższa reagowała na to, co zwraca niższa jak
> umiała, a jak nie to przekazywała błąd wyżej (czasem nadając mu już
> inny numer). Nigdy nie obsługiwałem błędów danej funkcji w niej samej.



> Możesz mieć rację, ale nie będę używał goto, bo tak (tu tupnięcie
nogą) :)



> Od jakiegoś czasu staram się używać try{throw;}catch bo nie trzeba
> myśleć o prze
Trzyma go w ustach bo lubi to
LezKiss - cycata milf uwodzi młodą
Seksowna lapdancerka z naturalnymi cycami

Report Page