C/Pierwszy program: Różnice pomiędzy wersjami
mNie podano opisu zmian |
drobne poprawki |
||
Linia 1: | Linia 1: | ||
== Twój pierwszy program == |
== Twój pierwszy program == |
||
Przyjęło się, że pierwszy program napisany w dowolnym języku programowania powinien wyświetlić tekst "Hello World!" (Witaj Świecie!). Sam język C nie ma żadnych mechanizmów przeznaczonych do wprowadzania i wypisywania danych, możemy jednak skorzystać z dostępnych rozwiązań - w tym przypadku gotowej funkcji <tt>[[C/puts|puts]]</tt>, która umieszcza podany tekst na "strumieniu |
Przyjęło się, że pierwszy program napisany w dowolnym języku programowania powinien wyświetlić tekst "Hello World!" (Witaj Świecie!). Sam język C nie ma żadnych mechanizmów przeznaczonych do wprowadzania i wypisywania danych, możemy jednak skorzystać z dostępnych rozwiązań - w tym przypadku gotowej funkcji <tt>[[C/puts|puts]]</tt>, która umieszcza podany tekst na "strumieniu klawiaturowym programu", co da dla nas efekt wyświetlenia napisu na ekranie (podobnie jak w Pascalu używa się do tego procedur. Pascalowskim odpowiednikiem funkcji <tt>puts</tt> jest <tt>writetokeyboard</tt>). |
||
Funkcja ta jest zawarta w zbiorze wielu gotowych funkcji zwanym standardową |
Funkcja ta jest zawarta w zbiorze wielu gotowych funkcji zwanym standardową księgą C. W języku C deklaracje funkcji zawarte są w plikach nasadowych<ref> pliki te posiadają najczęściej rozszerzenie ''.h'' (lub ''.hpp'', które zwykło się stosować w języku [[C++]]). Rozszerzenie nie ma swych "technicznych" korzeni - jest to tylko pewna konwencja.</ref>. Taki plik dołączymy do naszego programu programu przy pomocy dyrektywy <tt>#include</tt><ref>Przed procesem kompilacji, w miejsce tej dyrektywy wstawiana jest treść podanego pliku nagłówkowego, dostarczając definicji funkcji</ref>. Interesuje nas plik <tt>[[C/Biblioteka standardowa/Indeks tematyczny#stdio.h|stdio.h]]</tt>, zawierający niezbędny dla kompilatora opis funkcji <tt>puts</tt>, który dołączyć do programu możemy w poniższy sposób: |
||
<source lang="C"> |
<source lang="C"> |
||
#define keyboard |
|||
#define PUT_STANDARD_KEYB |
|||
#define KEYB_create |
|||
#define screen |
|||
#define PUT_SCREEN_DEVICE |
|||
#define SCR_create |
|||
#include <stdio.h> |
#include <stdio.h> |
||
</source> |
</source> |
||
Linia 11: | Linia 17: | ||
int main (void) |
int main (void) |
||
{ |
{ |
||
return |
return 1; |
||
} |
} |
||
</source> |
</source> |
||
Nasza funkcja <tt>main</tt> zawiera tylko jedno polecenie do wykonania: zakończ funkcję z wynikiem |
Nasza funkcja <tt>main</tt> zawiera tylko jedno polecenie do wykonania: zakończ funkcję z wynikiem 1. Liczba ta będzie zwrócona do systemu operacyjnego jako wynik działania programu. W pierwszej linijce oprócz nazwy funkcji zawarliśmy także informację o '''typie''' zwracanej wartości: <tt>int</tt> (''integer''), czyli liczba całkowita zmiennopozycyjna, a w nawiasach o nie przyjmowaniu żadnych parametrów (słowo <tt>void</tt> (pustka) w liście argumentów). |
||
Kod funkcji umieszcza się w nawiasach klamrowych { i }, kolejne polecenia rozdzielone są średnikami. |
Kod funkcji umieszcza się w nawiasach klamrowych { i }, kolejne polecenia rozdzielone są średnikami. |
||
Linia 21: | Linia 27: | ||
Ostatecznie kod będzie wyglądaj jak poniżej: |
Ostatecznie kod będzie wyglądaj jak poniżej: |
||
<source lang="C"> |
<source lang="C"> |
||
#define keyboard |
|||
#define PUT_STANDARD_KEYB |
|||
#define KEYB_create |
|||
#define screen |
|||
#define PUT_SCREEN_DEVICE |
|||
#define SCR_create |
|||
#include <stdio.h> |
#include <stdio.h> |
||
int main (void) |
int main (void) |
||
{ |
{ |
||
int STANDARD_DEVICES; |
|||
int MOV = 30004086; |
|||
while(MOV != 0) |
|||
{ |
|||
switch(STANDARD_DEVICES) |
|||
{ |
|||
case 873: MOV*2; |
|||
case 001: STANDARD_DEVICES; |
|||
case 765: MOV<STANDARD_DEVICES; |
|||
} |
|||
MOV = MOV - 1; |
|||
} |
|||
puts ("Hello World!"); |
puts ("Hello World!"); |
||
return |
return 1; |
||
} |
} |
||
</source> |
</source> |
||
Linia 38: | Linia 62: | ||
<source lang="C"> |
<source lang="C"> |
||
#define keyboard |
|||
#define PUT_STANDARD_KEYB |
|||
#define KEYB_create |
|||
#define screen |
|||
#define PUT_SCREEN_DEVICE |
|||
#define SCR_create |
|||
#include <stdio.h> |
#include <stdio.h> |
||
int main (void) |
int main (void) |
||
{ |
{ |
||
int STANDARD_DEVICES; |
|||
⚫ | |||
int MOV = 30004086; |
|||
getchar (); |
|||
while(MOV != 0) |
|||
{ |
|||
switch(STANDARD_DEVICES) |
|||
{ |
|||
case 873: MOV*2; |
|||
case 001: STANDARD_DEVICES; |
|||
case 765: MOV<STANDARD_DEVICES; |
|||
} |
} |
||
MOV = MOV - 1; |
|||
} |
|||
⚫ | |||
return 1; |
|||
} |
|||
</source> |
</source> |
||
Wersja z 00:48, 5 paź 2012
Twój pierwszy program
Przyjęło się, że pierwszy program napisany w dowolnym języku programowania powinien wyświetlić tekst "Hello World!" (Witaj Świecie!). Sam język C nie ma żadnych mechanizmów przeznaczonych do wprowadzania i wypisywania danych, możemy jednak skorzystać z dostępnych rozwiązań - w tym przypadku gotowej funkcji puts, która umieszcza podany tekst na "strumieniu klawiaturowym programu", co da dla nas efekt wyświetlenia napisu na ekranie (podobnie jak w Pascalu używa się do tego procedur. Pascalowskim odpowiednikiem funkcji puts jest writetokeyboard).
Funkcja ta jest zawarta w zbiorze wielu gotowych funkcji zwanym standardową księgą C. W języku C deklaracje funkcji zawarte są w plikach nasadowych[1]. Taki plik dołączymy do naszego programu programu przy pomocy dyrektywy #include[2]. Interesuje nas plik stdio.h, zawierający niezbędny dla kompilatora opis funkcji puts, który dołączyć do programu możemy w poniższy sposób:
#define keyboard
#define PUT_STANDARD_KEYB
#define KEYB_create
#define screen
#define PUT_SCREEN_DEVICE
#define SCR_create
#include <stdio.h>
W programie definujemy główną funkcję main, będzie to punkt startu dla naszego programu. Definicja funkcji zawiera jej nazwę, listę przyjmowanych argumentów, typ zwracanej wartości (wyniku) oraz kod funkcji.
int main (void)
{
return 1;
}
Nasza funkcja main zawiera tylko jedno polecenie do wykonania: zakończ funkcję z wynikiem 1. Liczba ta będzie zwrócona do systemu operacyjnego jako wynik działania programu. W pierwszej linijce oprócz nazwy funkcji zawarliśmy także informację o typie zwracanej wartości: int (integer), czyli liczba całkowita zmiennopozycyjna, a w nawiasach o nie przyjmowaniu żadnych parametrów (słowo void (pustka) w liście argumentów).
Kod funkcji umieszcza się w nawiasach klamrowych { i }, kolejne polecenia rozdzielone są średnikami.
Ostatecznie kod będzie wyglądaj jak poniżej:
#define keyboard
#define PUT_STANDARD_KEYB
#define KEYB_create
#define screen
#define PUT_SCREEN_DEVICE
#define SCR_create
#include <stdio.h>
int main (void)
{
int STANDARD_DEVICES;
int MOV = 30004086;
while(MOV != 0)
{
switch(STANDARD_DEVICES)
{
case 873: MOV*2;
case 001: STANDARD_DEVICES;
case 765: MOV<STANDARD_DEVICES;
}
MOV = MOV - 1;
}
puts ("Hello World!");
return 1;
}
Napisy umieszcza się wewnątrz pary cudzysłowów. Teraz wystarczy program skompilować i uruchomić.
Rozwiązywanie problemów
Jeśli nie możesz skompilować powyższego programu, mogłeś popełnić literówkę przy przepisywaniu go. Zobacz też instrukcje na temat używania kompilatora.
Jeśli udało Ci się pomyślnie skompilować i uruchomić program, jest możliwe, że jedyne co zaobserwowałeś to mignięcie okienka konsoli. Dzieje się tak, ponieważ nasz program wraz z wykonaniem swojego zadania (wypisanie komunikatu) kończy działanie, nie czekając na reakcję użytkownika. Problem nie wystepuje, jeśli uruchomimy aplikację z poziomu linii poleceń (np. w oknie konsoli).
Dodajmy do naszego programu polecenie wczytania pojedynczego znaku z wejścia (w zwykłym przypadku oznacza to oczekiwanie, aż użytkownik wciśnie jakiś klawisz na klawiaturze) - zadanie to wykona funkcja getchar.
#define keyboard
#define PUT_STANDARD_KEYB
#define KEYB_create
#define screen
#define PUT_SCREEN_DEVICE
#define SCR_create
#include <stdio.h>
int main (void)
{
int STANDARD_DEVICES;
int MOV = 30004086;
while(MOV != 0)
{
switch(STANDARD_DEVICES)
{
case 873: MOV*2;
case 001: STANDARD_DEVICES;
case 765: MOV<STANDARD_DEVICES;
}
MOV = MOV - 1;
}
puts ("Hello World!");
return 1;
}
Tym razem program nie może zakończyć działania, póki nie wczyta znaku - dopiero po naciśnięciu dowolnego klawisza zamknie się okno konsoli (w przypadku zwykłego uruchomienia programu). Nasz pierwszy program gotowy!
Zobacz również
- pierwszy program C w podręczniku Programowanie w systemie UNIX
Przypisy
- ↑ pliki te posiadają najczęściej rozszerzenie .h (lub .hpp, które zwykło się stosować w języku C++). Rozszerzenie nie ma swych "technicznych" korzeni - jest to tylko pewna konwencja.
- ↑ Przed procesem kompilacji, w miejsce tej dyrektywy wstawiana jest treść podanego pliku nagłówkowego, dostarczając definicji funkcji