Język C w pigułce

0

user image

Autor: Dawid Farbaniec
ISBN: 666-0-0000-0000-0
Liczba stron: 54
Format: pdf (422.22 kB)

Czytaj

3

Gdyż jest przenośny i szybki

Możesz mi wytłumaczyć, w jaki sposób język programowania może posiadać jakąkolwiek szybkość? :|
Jest to zależne od kompilatora, architektury i samej maszyny docelowej na której będzie uruchamiany dany program.

Nazywanie zmiennych napisał(a)

Nazwy zmiennych, które są poprawne zawierają znaki a-z, cyfry 0-9 i znak podkreślenia, czyli _.

$ także jest poprawne - http://ideone.com/jHPuw

Typ całkowity napisał(a)

Typ int służy do przechowywania liczb całkowitych. Jego rozmiar to 4 bajty

A czy przypadkiem typ int w programie skompilowanym na maszynę 64-bitowa nie będzie miał 8 bajtów?


Dalej nie mam siły patrzeć, zablokowanie kopiowania niezbyt pomaga w wskazywaniu błędów, a ręcznie nie zamierzam wszystkiego przepisywać.
4

"Język C w pigułce"... takiej pigułce. Ten tekst to groteska, niestety raczyłeś zablokować kopiowanie Twojego bezcennego dzieła, więc szkoda mi czasu na przepisywanie lub odbezpieczanie. Nawet nie poprawiłeś starych błędów wypomnianych przez Gynvaela w poprzednim wątku.

0
Patryk27 napisał(a):

Możesz mi wytłumaczyć, w jaki sposób język programowania może posiadać jakąkolwiek szybkość? :|
Jest to zależne od kompilatora, architektury i samej maszyny docelowej na której będzie uruchamiany dany program.

Na studiach mnie tak nauczyli.

Patryk27 napisał(a):

$ także jest poprawne - http://ideone.com/jHPuw

Może być jako ciekawostka. Ale po co komuś dolar w nazwie? Mi się on kojarzy z PHP.

Patryk27 napisał(a):

zablokowanie kopiowania niezbyt pomaga w wskazywaniu błędów

Ja na Foxit Reader 3.0 mogę kopiować :)

11
0DFh napisał(a):

Na studiach mnie tak nauczyli.

Cool story, bro ;)

2
krwq napisał(a)

wydaje mi sie ze int ma zawsze 32bity, nawet jesli gdzies pisza ze nie musi miec tyle to jeszcze sie z czyms takim nie spotkalem

wibowit napisał(a)

w zamierzchłych czasach komputerów 16-bitowych int miał chyba 16 bitów, chociaż nie jestem pewien

Standard mówi tylko o minimalnych rozmiarach typów liczbowych ich zależnościach, minimum dla intów to 16 bit.

8
0DFh napisał(a):

Ale po co komuś dolar w nazwie? Mi się on kojarzy z PHP.

Ale po co komu _ w nazwie? Mnie się kojarzy z wildcardem... a ch* nas obchodzi, z czym Ci się to kojarzy, $ jest z tych samych przyczyn co _, to jest programowanie, opiera się na faktach, nie na skojarzeniach.

1

int liczba;
To się nazywa deklaracja.
To jest definicja.

0
0DFh napisał(a):

Ja na Foxit Reader 3.0 mogę kopiować :)

Zdajesz sobie sprawę, że obecna stabilna to 5 z kawałkiem? Wydałeś zabezpieczonego pdfa i używasz zabytkowego czytnika, który nawet zabezpieczeń nie wspiera...

0
adf88 napisał(a):

int liczba;
To się nazywa deklaracja.
To jest definicja.

http://pl.wikipedia.org/wiki/Deklaracja_(informatyka)

2

Dotarłem do opisu return:

Zwrócona wartość zero przeważnie oznacza poprawne wykonanie się funkcji, a inna wartość oznacza błąd.

JA [CIACH!]. Czy możesz mi, panie Farbaniec, wskazać takie funkcje w bibliotece standardowej C?

1

printparity... czy chciałeś napisać print_even?

0

Po tym kodzie zmienna liczba będzie miała wartość liczba2, czyli 8
Musisz wyróżniać takie słowa jak "liczba" w powyższym zdaniu np. kursywą. Inaczej wychodzi z tego jakiś dziwoląg lingwistyczny.

0

Ale jako darmowa pozycja dla początkujących to nie jest chyba, aż tak źle, bo to co wymieniacie to nie są rażące błędy.

0

Nazwy zmiennych, które są poprawne zawierają znaki a-z, cyfry 0-9 i znak podkreślenia,
czyli _.
Mogą zawierać, a nie muszą. Z powyższego zdania wynika co innego. Poza tym to nazwa ma być poprawna, a nie zmienna. Szyk zdania sugeruje raczej to drugie.

Cztery podstawowe typy danych
Hmm, czemu nie 5, albo 6, albo 3?

6
0DFh napisał(a):

Ale jako darmowa pozycja dla początkujących to nie jest chyba, aż tak źle

Wręcz przeciwnie, jest tragicznie, to jest zbiór Twoich prywatnych przekonań, nie pokrywa się z definicją języka, czy też powszechnie przyjętymi praktykami. Dla Ciebie metoda jest synonimem funkcji używanym w C, czy to się trzyma kupy? Czy początkujący powinien być narażony na takie brednie? Zdecydowanie nie. Połowa tego "kursu" to po prostu wylistowane nagłówki z jednozdaniowym komentarzem dla zadanego symbolu, to tylko zapycha miejsce i nie wnosi nic wartościowego.

0

Jeszcze taki szczegół. Sugerujesz, że sizeof zwraca rozmiar zmiennej w bajtach, a to nie do końca jest prawdą i zależy od architektury. Zwraca wielokrotność sizeof(char), gwarantując, że sizeof(char) == 1. Tyle, że char nie musi mieć rozmiaru 1 bajt.

0

nie ma juz tej funkcji gets() w standardowej bibliotece, w zamian jest gets_s()
Panie farbaniec uczy Pan najstarszego standardu jaki istnieje chociaz troche do C99 brakuje i jakbys sie postaral i do 12 pazdziernika poprawil (rocznica smierci tworcy ) to na pewno bedzie on szczesliwy, my, i przyszle pokolenia programistow co musza naku*wiac programy wielowatkowe a nie w ANSI C
przepraszam za przeklenstwo ponioslo mnie... cala reszte pisalem powaznie

2

Dobrze wszyscy prawicie, pamiętajcie jednak o tym, że niektóre z postów tutaj są... bezsensowne z punktu widzenia "kursu".

Jeśli książka ta ma być kursem dla początkujących to całkiem dobrze jeśli kurs jest prosty w odbiorze. Gdybyśmy mieli w takim kursie wyjeżdżać z dziwnymi trudno brzmiącymi słowami, mało który początkujący dobrnąłby do końca. najzwyczajniej w świecie byłoby to dla niego trudne i zawiłe. Poza tym w takim ględzeniu, że coś "Może być takie, ale jeśli coś jest inne to będzie takie, a na takim systemie to w ogóle inaczej, a tutaj 64 bity to trzeba tak i tak..." jest więcej zawiłości i nieczytelności niż to może sobie czytelnik ogarnąć. Żadna książka nie powinna być tak szczegółowa, chyba, że książka omawiająca dokładnie dany zakres języka. Tutaj jednak jest w tytule "w pigułce" co raczej nie powinno od razu Was natchnąć na takie (czasami głupie) posty. Bo pomimo tego, iż to Wy macie rację, to jednak książka nie ma być dla profesjonalistów a zapewne dla kompletnych amatorów, którzy chcą wejść w świat C, a dopiero po poznaniu pewnych niuansów głębiej się uczyć.

Na pewne rzeczy, zwrócliliście tu uwagę, na które ja nigdy w żadnej książce bym nawet nie zwrócił bo najzwyczajniej w świecie nie mają znaczenia podczas normalnej pracy z kodem.
Przecież nikt pisząc program nie zastanawia się czy właśnie zdefiniował zmienną czy ją zadeklarował. No na miłość Boską co Wy jesteście?... Humaniści?

Poza tym kursy Adama Boducha mają dużo więcej takich błędów :D

1

jak w srodku nie znajdzie sie wzmianka o standardach C to od razu skazuje autora na spalenie na stosie i potepienie posmiertne bo to tylko bullshit spisany z wikipedii
a jezeli chodzi o terminologie to to jest informatyka i jeden bledny termin moze spowodowac blad w programie albo powstanie programu nie zgodnego z zalozeniem.

1
Czepianie napisał(a):

Przecież nikt pisząc program nie zastanawia się czy właśnie zdefiniował zmienną czy ją zadeklarował.

  • Gdzie zdefiniowałeś zmienną x?
  • Że co?
0

No właśnie. A teraz przeczytaj swój pierwszy post w tym topicu...

int liczba;
To się nazywa deklaracja.

To jest definicja.

0

A ja się przyczepie do przykładów z operatorami bitowymi (pozostałe moje uwagi zostały w sumie powiedziane). A mianowicie, wypisujesz operatory bitowe, podajesz w nawiasach symbole jakie używa się w C, a w przykładzie piszesz zamiast

1 & 1 // 1 

to piszesz

1 and 1 = 1 

Analogicznie dla pozostałych operatorów. Dlaczego uważam że mój pierwszy wpis jest lepszy? Ponieważ drugi sugeruje, że tak się pisze w tym języku. A tu nie dość, że nie ma czegoś takiego jak 'and', to jest do '1 and 1' nie da się przypisać ('=') wartości 1. Uważam, że Twój zapis trochę może zmylić, jeżeli ktoś będzie próbował na nim się wzorować i skorzystać w Twojej propozycji. A moja pokazuje poprawny zapis a w komentarzu pokazuje wartość. Ewentualnie coś takiego:

int bit = 1 & 1  // po operacji bit == 1 

Co więcej nie dałeś żadnego przykładu odnośnie przesunięć bitowych, a skoro to ma być kurs dla początkujących, to z własnego doświadczenia wiem, że przesunięcia bitowe są często mało rozumiane przez młodych programistów, a niektórzy wręcz o nich nie słyszeli i widząc taki termin nie bardzo wiedzą o co chodzi. Tym bardziej, że często uczy się C++, a nie C. I kiedy (przykład z życia wzięty) widzą tam konstrukcje

int wiek;
cout << "Podaj ile masz lat"; 
cin >> wiek;

to potem kiedy mówi się o przesunięciach i podaje te same operatory, to ciężko im przyswoić i zrozumieć, że to tylko ten sam operator, ale działa kapkę inaczej.

0

operator [] używany przy dostępie do elementów tablicy
operatory . i -> używane w przypadku struktur

Ta pierwsza linijka jeszcze zrozumiała, ale w drugiej zdecydowanie przydało by się zakolorować tło za kropką i ->, albo nadać jakiekolwiek inne wyróżnienie

0
Czepianie napisał(a):

Poza tym kursy Adama Boducha mają dużo więcej takich błędów :D

Książki Boducha faktycznie do najmocniejszych nie należą, ale nawet w porównaniu z nimi publikacje Farbańca plasują się poniżej papieru toaletowego. Jak mu zrecenzowali fragment tej jego książki o asm to nie było zdania pozbawionego błędów, dzisiaj jest niewiele lepiej.

1
byku_guzio napisał(a):

Jeszcze taki szczegół. Sugerujesz, że sizeof zwraca rozmiar zmiennej w bajtach, a to nie do końca jest prawdą i zależy od architektury. Zwraca wielokrotność sizeof(char), gwarantując, że sizeof(char) == 1. Tyle, że char nie musi mieć rozmiaru 1 bajt.

Taka mała dygresja: akurat jak byk stoi w standardzie, że sizeof zwraca rozmiar swojego operandu w bajtach ;). I tutaj przyda się definicja bajta, która mówi o tym, że jest to adresowalna jednostka danych, która jest na tyle duża, by móc przechować dowolny ze znaków ich podstawowego zestawu. Ten z kolei ma ich 99 (jeżeli dobrze liczę).
Typ char również musi być na tyle duży, by go pomieścić. Nie ma natomiast nigdzie napisane, że muszą być to równe wartości, a przynajmniej ja się tego nie doszukałem. Czy może definicja sizeof właśnie o tym mówi? IMO to spora nieścisłość.

nie ma juz tej funkcji gets() w standardowej bibliotece, w zamian jest gets_s()

Podobnie jak obsługa wielowątkowości, ale już nie przesadzajmy ;).

0

Zawarcie nazwy pliku pomiędzy znakami < i > skutkuje tym, że preprocesor szuka tego pliku w katalogu z nagłówkami

Oj Farbaniec, Farbaniec, nazwa pomiędzy < > nie musi być nazwą pliku nagłówkowego. Ten "plik" moze byc nawet wbudowany w kompilator... Nie pisz już więcej książek.

4

Okazuje się że każdy może pisać książki, żałuję że @maszynaz nie pisze książek, byłoby chociaż śmiesznie...

Swoją drogą jestem ciekaw kto z takiej książki będzie korzystać... Nowicjusze nie będą potrafili tego zrozumieć, profesjonaliści i tak z tego nie korzystają gdy zobaczą nazwisko autora i/lub otworzą książkę (w której i tak jest wszystko to, co umieją odjąć to czego Farbaniec nie umie).

1 użytkowników online, w tym zalogowanych: 0, gości: 1