C/Pierwszy program: Różnice pomiędzy wersjami
m →Hello world!: włąsne puts |
m Update syntaxhighlight tags - remove use of deprecated <source> tags |
||
Linia 2: | Linia 2: | ||
[[C/Program#Jaki_jest_minimalny_program_.3F|Pierwszy, minimalny program]], który daje się skompilować i uruchomić: |
[[C/Program#Jaki_jest_minimalny_program_.3F|Pierwszy, minimalny program]], który daje się skompilować i uruchomić: |
||
< |
<syntaxhighlight lang=c> |
||
void main(){} |
void main(){} |
||
</syntaxhighlight> |
|||
</source> |
|||
Co prawda program nic nie robi, ale możemy go traktować jako szkielet do dalszych prób. |
Co prawda program nic nie robi, ale możemy go traktować jako szkielet do dalszych prób. |
||
Linia 11: | Linia 11: | ||
===własne puts=== |
===własne puts=== |
||
< |
<syntaxhighlight lang=c> |
||
/* |
/* |
||
Linia 25: | Linia 25: | ||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
===puts z biblioteki standardowej=== |
===puts z biblioteki standardowej=== |
||
Linia 31: | Linia 31: | ||
Funkcja ta jest zawarta w zbiorze wielu gotowych funkcji zwanym standardową biblioteką C (ang. ''C Standard Library''). W języku C deklaracje funkcji zawarte są w plikach nagłówkowych<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 przy pomocy [[C/Preprocesor#.23include|dyrektywy <tt>#include</tt>]] <ref>Przed procesem kompilacji, w miejsce tej dyrektywy wstawiana jest treść podanego pliku nagłówkowego, dostarczając deklaracji 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: |
Funkcja ta jest zawarta w zbiorze wielu gotowych funkcji zwanym standardową biblioteką C (ang. ''C Standard Library''). W języku C deklaracje funkcji zawarte są w plikach nagłówkowych<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 przy pomocy [[C/Preprocesor#.23include|dyrektywy <tt>#include</tt>]] <ref>Przed procesem kompilacji, w miejsce tej dyrektywy wstawiana jest treść podanego pliku nagłówkowego, dostarczając deklaracji 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: |
||
< |
<syntaxhighlight lang="C"> |
||
#include <stdio.h> |
#include <stdio.h> |
||
</syntaxhighlight> |
|||
</source> |
|||
W programie definiujemy główną funkcję <tt>main</tt>, 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. |
W programie definiujemy główną funkcję <tt>main</tt>, 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. |
||
< |
<syntaxhighlight lang="C"> |
||
int main (void) |
int main (void) |
||
{ |
{ |
||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
Nasza funkcja <tt>main</tt> zawiera tylko jedno polecenie do wykonania: zakończ funkcję z wynikiem 0. 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, a w nawiasach o nie przyjmowaniu żadnych parametrów (słowo <tt>void</tt> (pustka) w liście argumentów). |
Nasza funkcja <tt>main</tt> zawiera tylko jedno polecenie do wykonania: zakończ funkcję z wynikiem 0. 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, a w nawiasach o nie przyjmowaniu żadnych parametrów (słowo <tt>void</tt> (pustka) w liście argumentów). |
||
Linia 48: | Linia 48: | ||
Ostatecznie kod będzie wyglądał jak poniżej: |
Ostatecznie kod będzie wyglądał jak poniżej: |
||
< |
<syntaxhighlight lang="C"> |
||
#include <stdio.h> |
#include <stdio.h> |
||
int main (void) |
int main (void) |
||
Linia 55: | Linia 55: | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
Napisy umieszcza się wewnątrz pary cudzysłowów. Teraz wystarczy program skompilować i uruchomić. |
Napisy umieszcza się wewnątrz pary cudzysłowów. Teraz wystarczy program skompilować i uruchomić. |
||
Linia 76: | Linia 76: | ||
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 <tt>getch</tt>. |
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 <tt>getch</tt>. |
||
< |
<syntaxhighlight lang="C"> |
||
#include <stdio.h> |
#include <stdio.h> |
||
int main (void) |
int main (void) |
||
Linia 84: | Linia 84: | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
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! |
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! |
Wersja z 23:14, 19 kwi 2020
Pierwszy program
Pierwszy, minimalny program, który daje się skompilować i uruchomić:
void main(){}
Co prawda program nic nie robi, ale możemy go traktować jako szkielet do dalszych prób.
Hello world!
własne puts
/*
https://www.quora.com/How-can-I-print-%E2%80%9Cwelcome%E2%80%9D-without-using-in-C
Steve Baker
*/
int puts(const char *s);
int main ()
{
puts ( "Hello world " ) ;
}
puts z biblioteki standardowej
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 wyjściowym programu", co da nam efekt wyświetlenia napisu na ekranie (podobnie jak w Pascalu używa się do tego procedur. Pascalowskim odpowiednikiem funkcji puts jest writeln).
Funkcja ta jest zawarta w zbiorze wielu gotowych funkcji zwanym standardową biblioteką C (ang. C Standard Library). W języku C deklaracje funkcji zawarte są w plikach nagłówkowych[1]. Taki plik dołączymy do naszego 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:
#include <stdio.h>
W programie definiujemy 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 0;
}
Nasza funkcja main zawiera tylko jedno polecenie do wykonania: zakończ funkcję z wynikiem 0. 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, 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ądał jak poniżej:
#include <stdio.h>
int main (void)
{
puts ("Hello World!");
return 0;
}
Napisy umieszcza się wewnątrz pary cudzysłowów. Teraz wystarczy program skompilować i uruchomić.
Kompilacja programu
Uruchomienie programu
Linux
Jeśli nie nadaliśmy innej nazwy przy kompilacji to standardowe wpisujemy w konsoli:
./a.out
Rozwiązywanie problemów
Jeśli nie możesz skompilować powyższego programu, mogłeś popełnić literówkę przy przepisywaniu go. Więcej informacji o kompilacji tutaj.
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 występuje, 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 getch.
#include <stdio.h>
int main (void)
{
puts ("Hello World!");
getch();
return 0;
}
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 deklaracji funkcji