C/Pierwszy program: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Mina86 (dyskusja | edycje)
m →‎Rozwiązywanie problemów: SYSTEM() -> system()
Kj (dyskusja | edycje)
m <source>
Linia 5:
 
Poniżej przykład, jak użyć dyrektywy #include żeby wkleić definicję funkcji ''[[C/printf|printf]]'' z pliku nagłówkowego [[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdio.h|stdio.h]] (Standard Input/Output.Headerfile):
<source lang="C">
 
#include <stdio.h>
</source>
 
W nawiasach trójkątnych < > umieszcza się nazwy standardowych plików nagłówkowych. Żeby włączyć inny plik nagłówkowy (np. własny), znajdujący się w katalogu z kodem programu, trzeba go wpisać w cudzysłów:
<source lang="C">
 
#include "''mój_plik_nagłówkowy''.h"
</source>
 
Mamy więc funkcję ''printf'', jak i wiele innych do wprowadzania i wypisywania danych, czas na pisanie programu. <ref>Domyślne pliki nagłówkowe znajdują się w katalogu z plikami nagłówkowymi kompilatora. W systemach z rodziny Unix będzie to katalog /usr/include, natomiast w systemie Windows ów katalog będzie umieszczony w katalogu z kompilatorem.</ref>
 
Programy w C zaczyna się funkcją ''main'', w której umieszcza się właściwy kod programu. Żeby rozpocząć tę funkcję, należy wpisać:
<source lang="C">
 
int main (void)
{
</source>
 
''int'' oznacza, że funkcja zwróci (tzn. przyjmie wartość po zakończeniu) liczbę całkowitą - w przypadku ''main'' będzie to kod wyjściowy programu; ''main'' to nazwa funkcji, w nawiasach umieszczamy ''parametry'' programu. Na tym etapie parametry programu nie będą nam potrzebne (''void'' oznacza brak parametrów). Używa się ich do odczytywania argumentów linii polecenia, z jakimi program został uruchomiony.
Linia 24 ⟶ 25:
 
Wewnątrz funkcji należy wpisać poniższy kod:
<source lang="C">
 
printf("Hello World!");
return 0;
</source>
Wszystkie polecenia kończymy średnikiem. ''return 0;'' określa wartość jaką zwróci funkcja (program); Liczba zero zwracana przez funkcję ''main()'' oznacza, że program zakończył się bez błędów; błędne zakończenie często (choć nie zawsze) określane jest przez liczbę jeden<ref>Jeżeli chcesz mieć pewność, że twój program będzie działał poprawnie również na platformach, gdzie ''1'' oznacza poprawne zakończenie (lub nie oznacza nic), możesz skorzystać z makr <tt>EXIT_SUCCESS</tt> i <tt>EXIT_FAILURE</tt> zdefiniowanych w pliku nagłówkowym [[Programowanie:C:Biblioteka standardowa:Indeks tematyczny#stdlib.h|stdlib.h]].</ref>. Funkcję ''main'' kończymy nawiasem klamrowym zamykającym.
Twój kod powinien wyglądać jak poniżej:
<source lang="C">
 
#include <stdio.h>
int main (void)
{
printf ("Hello World!");
return 0;
}
</source>
 
Teraz wystarczy go tylko skompilować i uruchomić.
 
Linia 47 ⟶ 48:
 
Jeśli korzystasz ze Zintegrowanego Środowiska Programistycznego (ang. IDE), możesz zaznaczyć, by nie zamykało ono programu po zakończeniu jego działania. Innym sposobem jest dodanie instrukcji, które wstrzymywałyby zakończenie programu. Można to zrobić dodając przed linią z <tt>return</tt> kod (wraz z okalającymi klamrami):
<source lang="C">
{
{
int chr;
puts("Wcisnij ENTER...");
while ((chr = getchar())!=EOF && chr!='\n');
}
}
 
</source>
Jest też prostszy (choć nieprzenośny) sposób, mianowicie wywołanie polecenia systemowego. W zależności od używanego systemu operacyjnego mamy do dyspozycji różne polecenia powodujące różne efekty. Do tego celu skorzystamy z funkcji [[C/system|system()]], która jako parametr przyjmuje polecenie systemowe które chcemy wykonać, np:
 
Rodzina systemów Unix/Linux:
<source lang="C">
system("sleep 10"); /* oczekiwanie 10 s */
system("sleep 10"); /* oczekiwanie 10 s */
system("read discard"); /* oczekiwanie na wpisanie tekstu */
</source>
 
Rodzina systemów DOS oraz MS Windows:
<source lang="C">
system("pause"); /* oczekiwanie na wciśnięcie dowolnego klawisza */
system("sleep 10pause"); /* oczekiwanie 10na wciśnięcie dowolnego sklawisza */
 
</source>
Funkcja ta jest o wiele bardziej pomocna w systemach operacyjnych Windows w których to z reguł pracuje się w trybie okienkowym a z konsoli korzystamy tylko podczas uruchamianiu programu. Z kolei w systemach Unix/Linux jest ona praktycznie w ogóle nie używana w tym celu, ze względu na uruchamianie programu bezpośrednio z konsoli.