C/Czego potrzebujesz: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< C
Usunięta treść Dodana treść
Nie podano opisu zmian
Lethern (dyskusja | edycje)
różne poprawki, spójność, nagłówki
Linia 1: Linia 1:
Wbrew powszechnej opinii nauczenie się któregoś z języków programowania (w tym języka C) nie jest takie trudne. Do nauki wystarczą Ci:
Wbrew powszechnej opinii nauczenie się któregoś z języków programowania (w tym języka C) nie jest takie trudne. Do nauki wystarczą Ci:


=Sprzęt=
== Sprzęt ==
Język C jest bardzo przenośny, więc będzie działał właściwie na każdej platformie sprzętowej i w każdym nowoczesnym systemie operacyjnym.
Język C jest bardzo przenośny, więc będzie działał właściwie na każdej platformie sprzętowej i w każdym nowoczesnym systemie operacyjnym. <br>
Komputer z dowolnym [[w:system operacyjny|systemem operacyjnym]], takim jak [[w:FreeBSD|FreeBSD]], [[w:Linux|Linux]], [[w:Windows|Windows]];
Potrzebny będzie komputer z dowolnym [[w:system operacyjny|systemem operacyjnym]], takim jak [[w:FreeBSD|FreeBSD]], [[w:Linux|Linux]], [[w:Windows|Windows]].
=Wymagane programy =


== Wymagane programy ==


==[[w:kompilator|kompilator]] języka C ==
=== [[w:kompilator|Kompilator]] języka C ===
*: Kompilator języka C jest programem, który tłumaczy kod źródłowy napisany przez nas do języka asembler, a następnie do postaci zrozumiałej dla komputera (maszyny cyfrowej) czyli do postaci ciągu zer i jedynek które sterują pracą poszczególnych elementów komputera. Kompilator języka C można dostać za darmo. Przykładem są: '''[[w:Gcc|gcc]]''' pod systemy uniksowe, '''[[w:DJGPP|DJGPP]]''' pod systemy DOS, '''[[w:MinGW|MinGW]]''' oraz '''lcc''' pod systemy typu Windows. Jako kompilator C może dobrze służyć kompilator języka [[w:C plus plus|C++]] (różnice między tymi językami przy pisaniu prostych programów są nieistotne). Spokojnie możesz więc użyć na przykład Microsoft Visual C++® lub [[Borland C++ Compiler|kompilatorów firmy Borland]]. Jeśli lubisz eksperymentować, wypróbuj [[w:Tiny C Compiler|Tiny C Compiler]], bardzo szybki kompilator o ciekawych funkcjach. Możesz ponadto wypróbować interpreter języka C. Więcej informacji na [[w:Ch (język programowania)|Wikipedii]].
* Kompilator języka C jest programem który tłumaczy kod źródłowy napisany przez nas do języka asembler, a następnie do postaci zrozumiałej dla komputera (maszyny cyfrowej), czyli do postaci ciągu zer i jedynek które sterują pracą poszczególnych elementów komputera. Kompilator języka C można dostać za darmo. Przykładem są: '''[[w:Gcc|gcc]]''' pod systemy uniksowe, '''[[w:DJGPP|DJGPP]]''' pod systemy DOS, '''[[w:MinGW|MinGW]]''' oraz '''lcc''' pod systemy typu Windows. Jako kompilator C może dobrze służyć kompilator języka [[w:C plus plus|C++]] (różnice między tymi językami przy pisaniu prostych programów są nieistotne). Spokojnie możesz więc użyć na przykład Microsoft Visual C++® lub [[Borland C++ Compiler|kompilatorów firmy Borland]]. Jeśli lubisz eksperymentować, wypróbuj [[w:Tiny C Compiler|Tiny C Compiler]], bardzo szybki kompilator o ciekawych funkcjach. Możesz ponadto wypróbować interpreter języka C. Więcej informacji na [[w:Ch (język programowania)|Wikipedii]].
* [[w:linker|Linker]] - najczęściej dostarczany jest razem z kompilatorem. Jest to program uruchamiany po etapie kompilacji jednego lub kilku plików źródłowych (pliki z rozszerzeniem *.c, *.cpp lub innym), po procesie kompilacji. Linker łączy wszystkie skompilowane pliki źródłowe i inne funkcje bibliotek (np. printf, scanf) które były użyte (dołączone do naszego programu poprzez użycie dyrektywy ''#include'') w naszym programie, a nie były zdefiniowane w naszych plikach źródłowych. Wywoływany jest on na ogół automatycznie przez kompilator, przez co nie musimy się martwić jego obsługą.
* [[w:linker|Linker]] (często jest razem z kompilatorem)
*: Linker jest to program który uruchamiany jest po etapie kompilacji jednego lub kilku plików źródłowych (pliki z rozszerzeniem *.c, *.cpp lub innym) skompilowanych dowolnym kompilatorem. Taki program łączy wszystkie nasze skompilowane pliki źródłowe i inne funkcje (np. printf, scanf) które były użyte (dołączone do naszego programu poprzez użycie dyrektywy ''#include'') w naszym programie, a nie były zdefiniowane(napisane przez nas) w naszych plikach źródłowych lub nagłówkowych. Linker jest to czasami jeden program połączony z kompilatorem. Wywoływany jest on na ogół automatycznie przez kompilator, w wyniku czego dostajemy gotowy program do uruchomienia.


=== Edytor tekstowy ===
==edytora tekstowego;==
: Systemy uniksowe oferują wiele edytorów przydatnych dla programisty, jak choćby [[w:Vim|vim]] i [[w:Emacs|Emacs]] w trybie tekstowym, [[w:Kate|Kate]] w KDE czy [[w:Gedit|gedit]] w GNOME. Windows ma edytor całkowicie wystarczający do pisania programów w C - nieśmiertelny Notatnik - ale z łatwością znajdziesz w Internecie wiele wygodniejszych narzędzi takich jak np. [[w:Notepad++|Notepad++]]. Odpowiednikiem Notepad++ w systemie uniksowym jest [[w:SciTE|SciTE]].
: Systemy uniksowe oferują wiele edytorów przydatnych dla programisty, jak choćby [[w:Vim|vim]] i [[w:Emacs|Emacs]] w trybie tekstowym, [[w:Kate|Kate]] w KDE czy [[w:Gedit|gedit]] w GNOME. Zwykły notatnik Windowsa wystarczająca do pisania prostych programów w C, choć dla wygody można spróbować poszukać w Internecie innych, wygodniejszych narzędzi, takich jak np. [[w:Notepad++|Notepad++]]. Odpowiednikiem Notepad++ w systemie uniksowym jest [[w:SciTE|SciTE]]. Narzędziami oferującymi więcej niż edytor tekstu są IDE (zintegrowane środowiska programistyczne, opisane niżej).
== dużo chęci i dobrej motywacji.==


== Dodatkowe narzędzia ==
=== [[w:debuger|Debuger]] (opcjonalnie, wg potrzeb) ===
Debugger jest to program, który umożliwia prześledzenie (poznanie wartości poszczególnych zmiennych na kolejnych etapach wykonywania programu) linijka po linijce wykonywania naszej aplikacji. Używa się go w celu określenia czemu nasz program nie działa po naszej myśli lub aby zbadać okoliczności występowania błędów. Aby użyć debuggera kompilator musi dołączyć dodatkowe informacje do skompilowanego programu. Przykładowymi debuggerami są: ''gdb'' pod Linuksem, lub debugger wchodzący w skład MS Visual Studio.


=== Zintegrowane Środowiska Programistyczne ===
Zamiast osobnego kompilatora i edytora, możesz wybrać [[C/Zintegrowane_środowisko_programistyczne|Zintegrowane Środowisko Programistyczne]] (Integrated Development Environment, IDE).


=== Analiza kodu ===
= Dodatkowe narzędzia =
==== Dynamiczna analiza kodu ====
Wśród narzędzi które nie są niezbędne, ale zasługują na uwagę, można wymienić '''Valgrind'''a <ref>[http://valgrind.org/ Valgrind]</ref> &ndash; specjalnego rodzaju debugger. Valgrind kontroluje wykonanie programu i wykrywa nieprawidłowe operacje w pamięci oraz [[C/Wskaźniki#Obsługa pamięci|wycieki pamięci]].Użycie Valgrinda jest proste - kompilujemy program, jak do debugowania, następnie podajemy jako argument Valgrindowi. <ref> [http://valgrind.org/docs/manual/quick-start.html#quick-start.prepare Manual jak używać Valgrinda ]</ref> Istnieje wersja z gui dla Gnome : Alleyoop<ref>[http://alleyoop.sourceforge.net/ alleyoop - okienkowa wersja Valgrinda]</ref>


==== Statyczna analiza kodu ====
==[[w:debuger|Debuger]] (opcjonalnie, wg potrzeb)==
Debugger jest to program, który umożliwia prześledzenie(określenie wartości poszczególnych zmiennych na kolejnych etapach wykonywania programu) linijka po linijce wykonywania skompilowanego i zlinkowanego (skonsolidowanego) programu. Używa się go w celu określenia czemu nasz program nie działa po naszej myśli lub czemu program niespodziewanie kończy działanie bez powodu. Aby użyć debuggera kompilator musi dołączyć kod źródłowy do gotowego skompilowanego programu. Przykładowymi debuggerami są: ''gdb'' pod Linuksem, lub ''debugger firmy Borland'' pod Windowsa.
== Zintegrowane Środowiska Programistyczne ==

Zamiast osobnego kompilatora i edytora, możesz wybrać [[C/Zintegrowane_środowisko_programistyczne|Zintegrowane Środowisko Programistyczne]] (Integrated Development Environment, IDE).
==Analiza kodu ==
===Dynamiczna analiza kodu ===
Wśród narzędzi, które nie są niezbędne, ale zasługują na uwagę, można wymienić '''Valgrind'''a <ref>[http://valgrind.org/ Valgrind]</ref> &ndash; specjalnego rodzaju debugger. Valgrind kontroluje wykonanie programu i wykrywa nieprawidłowe operacje w pamięci oraz [[C/Wskaźniki#Obsługa pamięci|wycieki pamięci]].Użycie Valgrinda jest proste - kompilujemy program, jak do debugowania, następnie podajemy jako argument Valgrindowi. <ref> [http://valgrind.org/docs/manual/quick-start.html#quick-start.prepare Manual jak używać Valgrinda ]</ref> Istnieje wersja z gui dla Gnome : Alleyoop<ref>[http://alleyoop.sourceforge.net/ alleyoop - okienkowa wersja Valgrinda]</ref>
===Statyczna analiza kodu ===
Istnieją również specjalistyczne programy do analizy kody, np. :<ref>[http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C List of tools for static code analysis]</ref>
Istnieją również specjalistyczne programy do analizy kody, np. :<ref>[http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C List of tools for static code analysis]</ref>
* Lint ( obecnie już nie używane )
* Lint ( obecnie już nie używane )
Linia 34: Linia 31:
* Frama C <ref>[http://frama-c.com/ frama-c - is an extensible and collaborative platform dedicated to source-code analysis of C software. It is Open Source software. It works on Windows and Unix (Linux, Mac OS X,…)]</ref>
* Frama C <ref>[http://frama-c.com/ frama-c - is an extensible and collaborative platform dedicated to source-code analysis of C software. It is Open Source software. It works on Windows and Unix (Linux, Mac OS X,…)]</ref>


=Bibliografia=
== Bibliografia ==
<references/>
<references/>

<noinclude>{{Nawigacja|C|
<noinclude>{{Nawigacja|C|
[[../O języku C/]]|
[[../O języku C/]]|
Linia 41: Linia 39:
}}
}}


[[en:C Programming/What you need before you can learn]]</noinclude>
[[en:C Programming/What you need before you can learn]]
</noinclude>

Wersja z 19:44, 6 cze 2011

Wbrew powszechnej opinii nauczenie się któregoś z języków programowania (w tym języka C) nie jest takie trudne. Do nauki wystarczą Ci:

Sprzęt

Język C jest bardzo przenośny, więc będzie działał właściwie na każdej platformie sprzętowej i w każdym nowoczesnym systemie operacyjnym.
Potrzebny będzie komputer z dowolnym systemem operacyjnym, takim jak FreeBSD, Linux, Windows.

Wymagane programy

Kompilator języka C

  • Kompilator języka C jest programem który tłumaczy kod źródłowy napisany przez nas do języka asembler, a następnie do postaci zrozumiałej dla komputera (maszyny cyfrowej), czyli do postaci ciągu zer i jedynek które sterują pracą poszczególnych elementów komputera. Kompilator języka C można dostać za darmo. Przykładem są: gcc pod systemy uniksowe, DJGPP pod systemy DOS, MinGW oraz lcc pod systemy typu Windows. Jako kompilator C może dobrze służyć kompilator języka C++ (różnice między tymi językami przy pisaniu prostych programów są nieistotne). Spokojnie możesz więc użyć na przykład Microsoft Visual C++® lub kompilatorów firmy Borland. Jeśli lubisz eksperymentować, wypróbuj Tiny C Compiler, bardzo szybki kompilator o ciekawych funkcjach. Możesz ponadto wypróbować interpreter języka C. Więcej informacji na Wikipedii.
  • Linker - najczęściej dostarczany jest razem z kompilatorem. Jest to program uruchamiany po etapie kompilacji jednego lub kilku plików źródłowych (pliki z rozszerzeniem *.c, *.cpp lub innym), po procesie kompilacji. Linker łączy wszystkie skompilowane pliki źródłowe i inne funkcje bibliotek (np. printf, scanf) które były użyte (dołączone do naszego programu poprzez użycie dyrektywy #include) w naszym programie, a nie były zdefiniowane w naszych plikach źródłowych. Wywoływany jest on na ogół automatycznie przez kompilator, przez co nie musimy się martwić jego obsługą.

Edytor tekstowy

Systemy uniksowe oferują wiele edytorów przydatnych dla programisty, jak choćby vim i Emacs w trybie tekstowym, Kate w KDE czy gedit w GNOME. Zwykły notatnik Windowsa wystarczająca do pisania prostych programów w C, choć dla wygody można spróbować poszukać w Internecie innych, wygodniejszych narzędzi, takich jak np. Notepad++. Odpowiednikiem Notepad++ w systemie uniksowym jest SciTE. Narzędziami oferującymi więcej niż edytor tekstu są IDE (zintegrowane środowiska programistyczne, opisane niżej).

Dodatkowe narzędzia

Debuger (opcjonalnie, wg potrzeb)

Debugger jest to program, który umożliwia prześledzenie (poznanie wartości poszczególnych zmiennych na kolejnych etapach wykonywania programu) linijka po linijce wykonywania naszej aplikacji. Używa się go w celu określenia czemu nasz program nie działa po naszej myśli lub aby zbadać okoliczności występowania błędów. Aby użyć debuggera kompilator musi dołączyć dodatkowe informacje do skompilowanego programu. Przykładowymi debuggerami są: gdb pod Linuksem, lub debugger wchodzący w skład MS Visual Studio.

Zintegrowane Środowiska Programistyczne

Zamiast osobnego kompilatora i edytora, możesz wybrać Zintegrowane Środowisko Programistyczne (Integrated Development Environment, IDE).

Analiza kodu

Dynamiczna analiza kodu

Wśród narzędzi które nie są niezbędne, ale zasługują na uwagę, można wymienić Valgrinda [1] – specjalnego rodzaju debugger. Valgrind kontroluje wykonanie programu i wykrywa nieprawidłowe operacje w pamięci oraz wycieki pamięci.Użycie Valgrinda jest proste - kompilujemy program, jak do debugowania, następnie podajemy jako argument Valgrindowi. [2] Istnieje wersja z gui dla Gnome : Alleyoop[3]

Statyczna analiza kodu

Istnieją również specjalistyczne programy do analizy kody, np. :[4]

  • Lint ( obecnie już nie używane )
  • Splint - rozszerzona wersja Linta [5]
  • Frama C [6]

Bibliografia

  1. Valgrind
  2. Manual jak używać Valgrinda
  3. alleyoop - okienkowa wersja Valgrinda
  4. List of tools for static code analysis
  5. splint - strona domowa
  6. frama-c - is an extensible and collaborative platform dedicated to source-code analysis of C software. It is Open Source software. It works on Windows and Unix (Linux, Mac OS X,…)