Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next
slawek
Guest
Sat Apr 29, 2017 8:18 am
On Sat, 29 Apr 2017 09:42:11 +0200, Marek <fake@fakeemail.com> wrote:
Quote:
Przykład poproszę, coby nie
A ja poproszę o Porsche. Może być model redakcyjny sterowany radiowo.
Coby nie.
slawek
Guest
Sat Apr 29, 2017 8:59 am
On Sat, 29 Apr 2017 10:03:15 +0200, Marek <fake@fakeemail.com> wrote:
Quote:
Przecież już napisałem jak to zrobić. Co do wydajności: mit. Jeżeli
chcesz mieć szybko to piszesz w Asemblerze, jeżeli dobrze to w
czymkolwiek byle nie Asembler. Wydajność nie zależy od zysku 1% "bo
goto jest szybsze". Wydajność osiąga się algorytmem O(N^2.4) zamiast
O(N^3).
Anyway, choć prawdopodobnie tego nie zrozumiesz, to mogłoby być tak:
double GetData (const char* name){
int returnedValue = NAN;
FILE *file = Open(name) ;
Buffer *buffer = AllocateBuffer();
if ( file && buffer)
{
returnedValue =.....
}
Close(file);
FreeBuffer(buffer);
return returnedValue;
}
I to działa. Bo to na Close i na FreeBuffer spada odpowiedzialność za
poprawne obsłuzenie sytuacji gdy nie trzeba zwalniać zasobu. A
dowiadują się o tym, bo dostają NULL.
Proste. Skuteczne. Niemal RAII, tyle że w zwykłym C.
Jedyne co tracimy to czas na próbę alokacji bufora gdy już file było
NULL. Ale to sytuacja wyjątkowa i można to zaakceptować. Ewentualnie
dodać jeszcze jedno if oraz Buffer* buffer = NULL;
slawek
Guest
Sat Apr 29, 2017 9:00 am
On Sat, 29 Apr 2017 10:18:27 +0200, slawek <fake@fakeemail.com> wrote:
Quote:
A ja poproszę o Porsche. Może być model redakcyjny sterowany
radiowo.
REDUKCYJNY
Pcimol
Guest
Sat Apr 29, 2017 9:53 am
On 2017-04-25 22:16, ToMasz wrote:
Quote:
witam
Piszę prosty program który ma się wykonywać na arduino. tyle że robi mi
się cholernie długi. Dla programisty, to pewno byłby pikuś, ale dlamnie
uciążliwe staje się odgadywanie co chciałem zrobić wczoraj i dlaczego to
tak zapisałem. kiedyś cośtam robiłem w basicu i może to właśnie
pokutuje, bo brakuje mi "goto"
tak czy owak, wieki temu podczas edukacji miałem jakieś podstawy c++ i
edytor, środowisko programistyczne umożliwiało lepsze ogarnięcie
programu. nie pamiętam ale jakieś kolorki były.... Teraz jak mi braknie
średnika na końcu lini to mam pierdylion błędów - żaden nie wspomina o
średniku. czy jest jakis inny niż ten arduinowy edytor w którym można
pisać program na arduino?
Odpuściłbym arduino - tylko złe nawyki utrwali.
Pcimol
Guest
Sat Apr 29, 2017 9:58 am
On 2017-04-27 07:44, Marek wrote:
Quote:
Czy to nie.Ty rok temu, moją identyczn sugestię innemu użytkownikowi
skomentowałeś "... i będzie musiał rozwiązywać setki nowych problemów,
których w Arduino nie ma."? :)
Wielu próbuje przysłonić brak własnych umiejętności dowodząc wyższość
arduino nad C. Niestety ich argumentacja jest wywodzona właśnie z braku
umiejetności.
Pcimol
Guest
Sat Apr 29, 2017 9:59 am
On 2017-04-27 20:11, slawek wrote:
Quote:
On Thu, 27 Apr 2017 18:57:41 +0200, "Grzegorz Niemirowski"
gnthexfiles@poczta.onet.pl> wrote:
To mit, że goto jest z definicji złe i nigdy nie
Od iluś tam lat programuje w C. Nigdy nie musiałem użyć goto. Nigdy nie
było sytuacji w której goto pozwoliłoby aby mój program działał lepiej
lub był bardziej czytelny.
Mi natomiast przytrafiła się taka sytuacja jednokrotnie.
slawek
Guest
Sat Apr 29, 2017 10:20 am
On Sat, 29 Apr 2017 10:59:04 +0200, slawek <fake@fakeemail.com> wrote:
Quote:
int returnedValue = NAN;
double
slawek
Guest
Sat Apr 29, 2017 10:45 am
On Sat, 29 Apr 2017 11:58:03 +0200, Pcimol <a@b.com> wrote:
Quote:
Wielu próbuje przysłonić brak własnych umiejętności dowodząc
wyższość
arduino nad C.
Arduino ::= hardware ułatwiające użycie MCU Atmega 328 w
różnorodnych, zwykle amatorskich, projektach.
C ::= język programowania powstały w latach siedemdziesiątych
ubiegłego wieku, uważany obecnie za najlepsze narzędzie do
programowania MCU.
Arduino IDE ::= środowisko programistyczne ułatwiające (w założeniu)
tworzenie oprogramowania w języku C++ dla Arduino.
C++ ::= język powstały przez rozszerzenie języka C tak, iż programy w
C są (w 99.99%) programami w C++, ale programy w C++ nie są
programami w C.
Dodatkowo: przy programowaniu MCU nie używa się wielu rzeczy, które
są możliwe na komputerach klasy PC.
Stąd porównywanie Arduino do C to jak porównywanie kaczki do różowego.
Miałoby sens porównywanie Arduino IDE do Atmel Studio. W takim
porównaniu Atmel Studio okazuje się lepsze co do możliwości, ale
znacznie mniej wygodne dla początkujących. U
Grzegorz Niemirowski
Guest
Sat Apr 29, 2017 11:23 am
slawek <fake@fakeemail.com> napisał(a):
Quote:
Arduino ::= hardware ułatwiające użycie MCU Atmega 328 w różnorodnych,
zwykle amatorskich, projektach.
1. Płytki są różne, z różnymi MCU. Do tego mnóstwo tzw. shieldów.
2. Gotowe biblioteki do wielu peryferiów.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
Marek
Guest
Sat Apr 29, 2017 11:27 am
On Sat, 29 Apr 2017 10:59:04 +0200, slawek <fake@fakeemail.com> wrote:
Quote:
Przecież już napisałem jak to zrobić. Co do wydajności: mit. Jeżeli
chcesz mieć szybko to piszesz w Asemblerze,
Mówimy o C i tego się trzymajmy, ok?
Quote:
jeżeli dobrze to w
czymkolwiek byle nie Asembler. Wydajność nie zależy od zysku 1% "bo
goto jest szybsze". Wydajność osiąga się algorytmem O(N^2.4)
zamiast
O(N^3).
Anyway, choć prawdopodobnie tego nie zrozumiesz, to mogłoby być tak:
Wypuść powietrze, zastanów się i odpisz w, temacie _konkretnego_
przykładu z linka.
--
Marek
J.F.
Guest
Sat Apr 29, 2017 12:51 pm
Dnia Tue, 25 Apr 2017 22:16:57 +0200, ToMasz napisał(a):
Quote:
Piszę prosty program który ma się wykonywać na arduino. tyle że robi mi
się cholernie długi. Dla programisty, to pewno byłby pikuś, ale dlamnie
uciążliwe staje się odgadywanie co chciałem zrobić wczoraj i dlaczego to
tak zapisałem. kiedyś cośtam robiłem w basicu i może to właśnie
pokutuje, bo brakuje mi "goto"
goto skasowano wlasnie dlatego.
Za dlugie programy bylo, czesto z dzikimi skokami (co w polowie
skutkiem numeracji linii).
Quote:
tak czy owak, wieki temu podczas edukacji miałem jakieś podstawy c++ i
edytor, środowisko programistyczne umożliwiało lepsze ogarnięcie
programu. nie pamiętam ale jakieś kolorki były.... Teraz jak mi braknie
średnika na końcu lini to mam pierdylion błędów - żaden nie wspomina o
średniku.
Bo czesto trudno powiedziec ze to srednika brakuje.
J.
slawek
Guest
Sat Apr 29, 2017 4:19 pm
Użytkownik "Marek" <fake@fakeemail.com> napisał w wiadomości grup
dyskusyjnych:almarsoft.6199627357826819224@news.neostrada.pl...
Quote:
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;
}
Pcimol
Guest
Sat Apr 29, 2017 7:30 pm
On 2017-04-29 12:45, slawek wrote:
Quote:
On Sat, 29 Apr 2017 11:58:03 +0200, Pcimol <a@b.com> wrote:
Wielu próbuje przysłonić brak własnych umiejętności dowodząc
wyższość
arduino nad C.
Arduino ::= hardware ułatwiające użycie MCU Atmega 328 w różnorodnych,
zwykle amatorskich, projektach.
Zgadza się. Bez problemu programuje się to w C.
Quote:
Stąd porównywanie Arduino do C to jak porównywanie kaczki do różowego.
Masz rację - błednie utożsamiłem Arduino z Bascom.
Marek
Guest
Sat Apr 29, 2017 11:44 pm
On Sat, 29 Apr 2017 18:19:49 +0200, "slawek" <slawek@host.pl> wrote:
Quote:
Przy prostszych sprawach wystarczy takie coś bez goto:
Quote:
int big_function()
{
int success = 0;
/* do some work */
if( !error1 )
{
... /* do some more work */
if( !error2 )
{
... /* do some more work */
if( !error3 )
{
success = 1;
}
}
Acha i to jest to eleganckue rozwiazanie bez goto, rewelacja.
--
Marek
slawek
Guest
Sun Apr 30, 2017 4:36 am
On Sun, 30 Apr 2017 01:44:03 +0200, Marek <fake@fakeemail.com> wrote:
Quote:
Acha i to jest to eleganckue rozwiazanie bez goto,
rewelacja.
A konkretnie czego w tym nie rozumiesz?
Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next