Týden 8
Složené (agregované) datové typy II - vícerozměrné pole
V jazyce C je možné nadefinovat vícerozměrná pole. Výhodou vícerozměrných polí může být jednodušší zápis programu. Představme si, že chceme v programu definovat matici celých čísel o rozměrech 2x2, v C to můžeme udělat takto:
// definice matice 2x2 jako dvourozmerneho pole int matrix[2][2]; // prvky matice pak můžeme adresovat pomocí dvou indexů od 0 int a11 = matrix[0][0];
Pokud v C definujeme vícerozměrné pole výše uvedeným bude pravděpodobně (záleží na kompilátoru) v paměti toto pole reprezentováno jako jednorozměrné. Např. naše matice se nejspíše uloží tak, že se nejprve uloží jednorozměrné pole matrix[0] a za něj pole matrix[1]. Celé to pak v paměti bude vypadat pole o 4 prvcích - int pole[4] = { matrix[0][0], matrix[0][1], matrix[1][0], matrix[1][1] };
Funkce
Funkce umožňují zapsat mimo hlavní tělo programu opakující se logické celky kódu nebo např. často užívané jednoduché operace. Ústřední funkcí v programu v jazyce C je main a ostatní funkce se zapíší obdobně:
- zapíšeme návratový typ funkce
- poté její identifikátor (jméno)
- poté do kulatých závorek typy a jména parametrů
- a nakonec zapíšeme do složených závorek tělo funkce
- funkce běžně vrací hodnotu příkazem return, není-li typu void
Zápis i užití můžeme vidět např. na funkci pro výpočet maxima ze dvou celých čísel:
// definice funkce pro vypocet maxima ze dvou cisel int maximum(int a, int b) { int max = a; if (b > a) { max = b; } return max; }
Místo kam můžeme zapsat funkci a jak ji zavolat je vidět z následujícího kódu:
#include <stdio.h> // Definice funkce add pred main, aby jeji jmeno bylo v main videt // Argumenty a, b jsou jmena lokalnich promennych (v add), pri volani jsou do nich ulozeny hodnoty opravdovych argumentu int add(int a, int b) { return a + b; } int main(void) { // Promenne a, b jsou viditelne pouze v tele funkce main // Jsou to tedy jine opravdove promenne nez stejnojmenne a, b z definice funkce add! int a, b; printf("Zadejte 2 cela cisla: "); scanf("%d %d", &a, &b); // Funkci zavolame zapisem jmena, za kterym nasleduji skutecne argumenty v kulatych zavorkach oddelene carkou int sum = add(a, b); printf("Soucet cisel a + b = %d", sum); // Funkce main vraci 0, pokud program neskoncil s chybou return 0; }