gohandi Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 a = 3; //0b00000011 b = 4; //0b00000100 a&&b W tym miejscu program robi tak: Biore sobie a i sprawdzam. Jest nie zerowa wiec fajnie Biore sobie b i sprawdzam. Jest nie zerowa tym lepiej Mam dwie wartości nie zerowe czyli logicznie prawde i robie na nich iloczyn czyli wystawiam również prawdę. Czyli daje 1 W skrócie operatory && || Porównója wartości zmiennych w założeniu że 0 to fałsz a wszystko inne to prawda. a&b Tutaj wygląda to już inaczej 3 0b00000011 4 0b00000100 & 0 0b00000000 I tutaj moje sprostowanie 😋 źle przepisałem miało być 5 a nie 9 Sorry ale już dla 13 i 5 13 0b00001[1]0[1] 5 0b00001[0]0[1] 5 0b00001[0]0[1] Czyli robimy porównanie bit po bicie i składamy to w wynik Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
robert90 Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 Symfonia C++ do ręki i czytać. Z tą książką nawet 10-letnie dziecko o zdolnościach humanistycznych zacznie programować. Cytuj Link do komentarza Share on other sites More sharing options...
matrix Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 A dlaczego wszystko porównywane jest z fałszem i prawdą a nie z jakąś konkretną liczbą? I czemu wynikiem takiej funkcji logicznej jest prawda lub fałsz a nie iloczyn czy co tam będzie tychże zmiennych? Symfonia C++ do ręki i czytać. Z tą książką nawet 10-letnie dziecko o zdolnościach humanistycznych zacznie programować. Czemu C++ skoro to programowanie w C? Nie będzie drobnej aczkolwiek istotnej różnicy? Cytuj Link do komentarza Share on other sites More sharing options...
robert90 Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 Powiedzmy sobie szczerze: C++ nie różni się znacznie w podstawach od C, jak się nauczysz C++ to praktycznie od razu będziesz umiał programować w samym C (oczywiście jest kilka różnic pomiędzy tymi językami w podstawach). Wykorzystując AVRGCC dostajemy kompilator języka C w standarcie ISO 9899 więc w podstawach mam to samo co C++: funkcje inline (znane z języka C++) dodanie słowa kluczowego restrict możliwość deklaracji zmiennych w dowolnym miejscu w programie (przyjęte z języka C++) kilka nowych wbudowanych typów zmiennych takich jak typ logiczny czy long long int tablice o zmiennej liczbie elementów komentarze w stylu C++ zaczynające się od // i kończące wraz z końcem linii nowe standardowe funkcje oraz pliki nagłówkowe typ bool zawarty w nagłówku stdbool.h Jak mówię, chodzi mi o podstawy, więc np już o technice OOP nic nie mówię. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
gohandi Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 Fałsz i prawda to bardzo konkretne liczby jako wyjścia z funkcji już zaimplementowanych w C to jest to odpowiednio 0 i 1 a jako wjescia do tych funkcji to fałsz jest również 0 a prawdą cała reszta. AND to jest iloczyn logiczny OR to jest suma logiczna. I dokładnie to wychodzi co trzeba 😋. Tylko że raz wychodzi zmiennych a raz wychodzi liczba która jest wynikiem porównywania konkretnych bitów danych wartości. Polecam odaplic sobie Dev-CPP i dużo ale to dużo sie pobawić. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
matrix Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 W c nawet nie mogę sobie niczego rozkminić na podstawie składni tegoż języka. Weźmy na przykład początek programu zamka na karty chipowe (gdzieś znalazłem i próbuję skompilować) #include <avr/io.h> #include <util/delay.h> #define SW PIND.6 #define JMP PINB.0 #define VCC PINB.2 #define CLK PORTB.3 #define RST PORTB.4 #define IN PORTB.1 #define OUT PINB.1 #define LED PORTD.0 #define BUZZ PORTD.1 #define PRZ PORTB.5 #define del 15 char pytanie[48]={1,0,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,1,1,1,0,1,0,1,0,1,1,0}; // tablica zawierajaca zadawane karcie pytanie char int_licz,int_licz1,int_licz2=0,wrong_card; // na podstawie ktorego generuje ona odpowiedz unsigned int bin; bit ok=1; eeprom unsigned int chip_code[20]; // tablica przechowujaca aktywowane karty telefoniczne eeprom int licz_kart; char n; int li_kart; void reset(void) // procedura resetujaca karte chipowa { RST=1; _delay_us(del); CLK=1; _delay_us(del); CLK=0; _delay_us(del); RST=0; _delay_us(del); } W bascom były deklaracje zmiennych a tu? Nie ma. Skąd ja mam wiedzieć co to jest char n; ? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 10, 2011 Autor tematu Udostępnij Kwiecień 10, 2011 Operatory są dość dobrze opisane przecież w naszym kursie 😉 Jeśli to jest za mało, to polecam książkę: https://www.forbot.pl/forum/topics26/programowanie-avr-w-c-nie-jest-trudne-vt4906.htm Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 operacje logiczne działają na prawdzie i fałszu dlatego liczby muszą być zamienione właśnie na jedną z tych wartości. Operacje liczbowe wykonuje się inaczej. A operacje iloczynu i sumy "logicznej" o które ci chodzi to działania bitowe. A w tym wypadku wykonujemy jeszcze inną operację czyli przyporządkowujemy wyrażeniu wartość prawda lub fałsz żeby to przetworzyć na warunek pętli czy ifa. A podstawy C i C++ są takie same, języki rozwidlają się później. Masz inne biblioteki, dochodzą inne konstrukcje itp. W każdym razie jeśli chodzi o rozwiązanie problemów nad którymi na razie siedzisz czyli operacje na zmiennych, operatory, konstrukcje warunkowe, pętle itp to na pewno możesz korzystać z opracowań pod C++. Cytuj Link do komentarza Share on other sites More sharing options...
pawel Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 W bascom były deklaracje zmiennych a tu? Nie ma. Skąd ja mam wiedzieć co to jest char n; ? Jeszcze musisz bardzo wile doczytać. A tak dodam, że char, to jest typ zmiennej. Cytuj Link do komentarza Share on other sites More sharing options...
matrix Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 A tak dodam, że char, to jest typ zmiennej. Wiem że to typ zmiennej tylko chodzi mi o to że przed nią nie ma nic w stylu declare czy też jak w bascom Dim. Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 no ale wyrażenie char xxx; samo w sobie jest deklaracją zmiennej typu char o nazwie xxx nie musisz tutaj żadnych dodatkowych słówek wstawiać. Naprawdę lepiej zajrzyj do literatury i na konsoli dokładnie sprawdź działanie wszystkich funkcji bo wyjdzie na to że po zebraniu wszystkich odpowiedzi na twoje pytania będzie można wydać kolejną książkę o podstawach C 😃 Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Kwiecień 10, 2011 Udostępnij Kwiecień 10, 2011 C i C++ maja te fajne cechy, że rzeczy, które mogą być krótkie, są krótkie. Z rzeczy o których warto pamiętać: jeśli mamy w kodzie cos takiego: #define RST PORTB.4 ... RST=1; to kompilator widzi: PORTB.4 = 1; Co jest zupełnie bez sensu, a pokazywany błąd odnosi się nie do linii gdzie jest zrobione define, tylko do linii gdzie definicja preprocesora (tak sie nazzywa #define) jest wykorzystana. Cytuj Link do komentarza Share on other sites More sharing options...
matrix Kwiecień 11, 2011 Udostępnij Kwiecień 11, 2011 Dotarłem w sjumie do rozdziału nr 3 Symfonii C++ i nie widzę większych różnic między Bascom a C++ poza nazwami dla zmiennych i delikatnie inną składnią. Natomiast nadal nie rozumiem jednej rzeczy. Teoretycznie dajmy na to że: int zmienna; to deklaracja zmiennej, więc dlaczego gdzieniegdzie można znaleźć sformułowanie: int main(void); A przede wszystkim nie mogę spamiętać wszystkich tych typów zmiennych. Ma ktoś jakiś ciekawy sposób na zapamiętanie ich? Cytuj Link do komentarza Share on other sites More sharing options...
Armir Kwiecień 11, 2011 Udostępnij Kwiecień 11, 2011 int main(void) to podprogram. Nie powinno być po tym ; tylko klamerka. Main to program główny ale możesz tak samo deklarować inne podprogramy. Cytuj Link do komentarza Share on other sites More sharing options...
OldSkull Kwiecień 11, 2011 Udostępnij Kwiecień 11, 2011 typów zmiennych jest niewiele (tych podstawowych). Popatrzmy: char - zmienna znakowa, 1B, -127 - +128 int - stałoprzecinkowa ze znakiem, 2B (AVRy), 4B (ARMy i PC),float - zmiennoprzecinkowa (znaczy się z ułamkiem) double - zmiennoprzecinkowa o większej precyzji void - nic i inne, ale rzadziej używane Natomiast można je modyfikować słowami: unsigned, signed, short, long, volatile, register, const itd. nie wszystkie i nie każdym. Do tego dochodzą tablice i wskaźniki. to deklaracja zmiennej, więc dlaczego gdzieniegdzie można znaleźć sformułowanie: Kod:int main(void); nie odpowiem Ci, bo widocznie czytasz po łebkach książki. Albo też dopiero doczytasz do tego miejsca, ale samemu szukać musisz się nauczyć. edit: Armir: jaki niby podprogram?? To się nazywa funkcja, ew. można zaakceptować procedura (jeśli funkcja nic nie zwraca i nie pobiera), ale podprogramem nie nazwałbym niczego co nei ma oddzielnego pliku wykonawczego albo chociaż oddzielnego wątku. I jak najbardziej prawidłowy jest zapis: void funkcja(void); tylko zależy w którym miejscu i co ma robić. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!