Środowisko programisty/C - zmienne i funkcje: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 105: Linia 105:


format to napis, który zostanie wypisany na standardowe wyjście. Napis ten może zawierać znaki formatujące, mówiące o tym jakich zmiennych będzie oczekiwać funkcja w liście zmiennych i w jaki sposób zostaną one wypisane.
format to napis, który zostanie wypisany na standardowe wyjście. Napis ten może zawierać znaki formatujące, mówiące o tym jakich zmiennych będzie oczekiwać funkcja w liście zmiennych i w jaki sposób zostaną one wypisane.
Znaki formatujące zawsze mają następującą postać:
%[flagi][szerokość][.precyzja][modyfikatory]typ
Najistotniejszym parametrem jest typ, który decyduje o tym jak zostanie potraktowana zmienna wypisywana przez funkcję printf. Zwróćmy uwagę na to, że jest takie rozwiązanie jest zupełnie inne niż w Pascalu, w którym kompilator po napotkaniu funkcji Write lub Writeln sam domyśla się z jakimi parametrami ma do czynienia.
{| border="1"
|+ Typy obsługiwane przez funkcję printf
! Typ !! Znaczenie !! Przykład
|-
| c || pojedynczy znak || q
|-
| d lub i || liczba całkowita ze znakiem || -11
|-
| e (lub E) || liczba z mantysą i wykładnikiem oddzielona znakiem e (lub E) || 1.2345e3 (lub 1.2345E3)
|-
| f || liczba rzeczywista || 1.23
|-
| g (lub G) || krótsze z pary %f i %e (lub %E) || 1.23
|-
| o || liczba ósemkowa ze znakiem || 71
|-
| s || napis || przykład ze spacja
|-
| u || liczba całkowita nieujemna || 11
|-
| x || liczba szesnastkowa nieujemna || af1
|-
| X || liczba szesnastkowa nieujemna (wielkie litery) || AF1
|-
| p || adres w pamięci || A000:00FF
|-
| n || nic (służy do uzyskania liczby wypisanych dotychczas znaków) || (wskaźnik na int)
|}


=== scanf ===
=== scanf ===

Wersja z 09:26, 21 sie 2006

Typy zmiennych

Typy proste

Język C definiuje następujące typy proste

Typy proste w C
Nazwa Znaczenie Typowy zakres
char znak
unsigned char mała liczba całkowita 0-255
short int liczba całkowita
unsigned short int liczba dodatnia
int duża liczba całkowita
float liczba rzeczywista
double duża liczba rzeczywista

Funkcje

Podstawy

W języku C nie występuje, w przeciwieństwie do Pascala, ścisły podział na funkcje i procedury. Występują jedynie funkcje, które niekoniecznie muszą dawać jakikolwiek wynik. Składnia funkcji jest następująca:

typ nazwa_funkcji(lista parametrów)
{
  treść funkcji
  return wynik_funkcji
}

Napiszmy funkcję obliczającą sumę dwóch parametrów

int dodaj(int a, int b)
{
  return a + b;
}

Funkcja main

Funkcja main, której wynikiem jest liczba typu int, jest główną funkcją w C i jest wykonywana automatycznie w momencie uruchomienia programu. Korzystając z funkcji dodaj można napisać następujący program:

int main()
{
  printf("%d\n", dodaj(1,1));
  return 0;
}

Wynik działania funkcji main jest przekazywany do powłoki i w sytuacji kiedy wykonanie programu zakończy się sukcesem, powinien wynosić 0.

Słowo kluczowe return

Funkcja kończy swoje działanie po napotkaniu instrukcji return. Czyli następujący kod jest poprawny (funkcja liczy sumę):

int dodaj(int a, int b)
{
  return a + b;
  return a * b; // Ta instrukcja nigdy się nie wykona
}

Procedury

Niekiedy występuje potrzeba utworzenia funkcji, która niczego nie oblicza, czyli znanej z Pascala procedury. W takim przypadku możemy zastosować konstrukcję:

void funkcja() 
{
  ...
  return
}

Popatrzmy na następujący przykład:

#include <stdio.h>

int dodaj(int a, int b)
{
  return a + b;
};

void wypisz(int i)
{
  printf("%d\n", i);
  return;
};

int main()
{
  wypisz(dodaj(1,1));
  return 0;
}

Wybrane funkcje biblioteczne

printf

Do wypisywania informacji służy funkcja printf. Ma ona następującą postać:

printf("format", lista zmiennych)

format to napis, który zostanie wypisany na standardowe wyjście. Napis ten może zawierać znaki formatujące, mówiące o tym jakich zmiennych będzie oczekiwać funkcja w liście zmiennych i w jaki sposób zostaną one wypisane.

Znaki formatujące zawsze mają następującą postać:

%[flagi][szerokość][.precyzja][modyfikatory]typ

Najistotniejszym parametrem jest typ, który decyduje o tym jak zostanie potraktowana zmienna wypisywana przez funkcję printf. Zwróćmy uwagę na to, że jest takie rozwiązanie jest zupełnie inne niż w Pascalu, w którym kompilator po napotkaniu funkcji Write lub Writeln sam domyśla się z jakimi parametrami ma do czynienia.

Typy obsługiwane przez funkcję printf
Typ Znaczenie Przykład
c pojedynczy znak q
d lub i liczba całkowita ze znakiem -11
e (lub E) liczba z mantysą i wykładnikiem oddzielona znakiem e (lub E) 1.2345e3 (lub 1.2345E3)
f liczba rzeczywista 1.23
g (lub G) krótsze z pary %f i %e (lub %E) 1.23
o liczba ósemkowa ze znakiem 71
s napis przykład ze spacja
u liczba całkowita nieujemna 11
x liczba szesnastkowa nieujemna af1
X liczba szesnastkowa nieujemna (wielkie litery) AF1
p adres w pamięci A000:00FF
n nic (służy do uzyskania liczby wypisanych dotychczas znaków) (wskaźnik na int)

scanf