background image

Laboratorium nr 4 

1/4 

 

1) 

Tablice. 

 

Tablica  to  ciąg  danych  jednego  typu.  Ciąg  taki  posiada  jedną  nazwę,  a  do  jego 

poszczególnych  elementów  odnosimy  się  przez  numer  tzw.  indeks.  Tablice  umożliwiają 

wykonywanie podobnych operacji jak na zwykłych zmiennych. Liczba elementów tablicy jest 

z góry określona tzw. rozmiarem tablicy. Ze względy na wymiar tablice dzielimy na: 

 

• 

tablice jednowymiarowe, 

• 

tablice wielowymiarowe. 

 

Typowa deklaracja tablicy jednowymiarowej, przedstawiona została poniżej: 

 

typ_danych nazwa_tablicy[rozmiar]; 

 

W  przypadku  języka  C,  tablice  indeksowane  są  od  numer  „0”  (w  innych  językach 

programowania od numeru „1” np. Pascal). Dodatkowo tablica, może czasami nie posiadać 

określonego  rozmiaru,  lecz  w  takim  przypadku  musi  być  odpowiednio  zainicjowana. 

Inicjowanie tablicy polega na nadaniu jej poszczególnym elementom odpowiednich wartości 

zgodnych z typem danych danej tablicy. 

 

Przykład: 

 

int tablica[100];  

 

//tablica 100 elementowa 0 – 99 
//przechowująca liczby całkowite 

int tablica[1]={20,10};  

//tablica zainicjowana; 

char imie[]=”Romek”;   

//tablica znakowa „pusta” 
//zainicjowana ciągiem znaków 

 

Oprócz  tablic  jednowymiarowych,  można  także  definiować  tablice  wielowymiarowe. 

Typowa deklaracja tablicy wielowymiarowej w języku C, przedstawiona została poniżej: 

 

typ_danych nazwa_tablicy[rozmiar][rozmiar] ... [rozmiar]; 

 

 

 

Język C 

Temat: Typy złożone. 

 

Instrukcja 

laboratoryjna 

Przygotował: mgr inż. Maciej Lasota 

background image

Laboratorium nr 4 

2/4 

 

Aby  odwołać  się  do  konkretnego  elementu  tablicy  w  celu  zapisu  lub  odczytu 

danych.  Należy  podać  nazwę  zadeklarowanej  tablicy  oraz  w  nawisach  kwadratowych  „[  ]” 

podać indeks elementu, do którego się odwołujemy. 

 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
 
int main(void) 

int i,j; 
int tab[20][20]; 

 

for(i=0; i<20; i++) 

for(j=0; j<20; j++) 

tab[i][j] = (i+j); 

 

for(i=0; i<20; i++) 

for(j=0; j<20; j++) 

printf("[%d] ",tab[i][j]); 

printf("\n"); 

return (0); 

 
 

2) 

Struktury i unie. 

 

Typy danych w języku C dzielą się na proste i złożone. Typy złożone mogą składać 

się  z    typów  prostych  jak  i  typów  złożonych.  Struktura  (w  języku  Pascal  odpowiednikiem 

struktury  jest  rekord)  jest  złożonym  typem  danych  zawierającym  składowe  różnych  typów, 

umieszczonych  kolejno  w  pamięci.  Struktury  mają  następujące  ograniczenia:  składowe  nie 

mogą  być  typu  aktualnie  definiowanego,  nie  mogą  być  funkcją,  natomiast  mogą  być 

wskaźnikiem  do  funkcji.  Typowa  deklaracja  struktury  w  języku  C,  przedstawiona  została 

poniżej: 

 

 

 

background image

Laboratorium nr 4 

3/4 

 

struct nazwa_struktury 

[typ danych] [nazwa składowej 1]; 
[typ danych] [nazwa składowej 2]; 
[typ danych] [nazwa składowej 3]; 
... 
[typ danych] [nazwa składowej n]; 

}; 
 

Przykład: 

 

struct punkt 

int x;  

//pierwsza składowa struktury 

int y;  

//druga składowa struktury 

}; 
 

Dla  stworzonej  struktury  danych  możemy  zdefiniować  zmienną  tzw.  zmienną 

strukturalną. Przy definicji takich zmiennych, przed podaniem nazwy struktury, należy podać 

słowo struct. Definicja zmiennej strukturalnej: 

 

[struct] [nazwa struktury] [nazwa zmiennej]; 

 

Przykład: 

 

struct dane 

char imie[20]; 
char nazwisko[25]; 
float wiek; 

}; 
 
struct dane moje_dane_osobowe; 
 

 

Dostęp do składowych struktury odbywa się, przez tzw. notacje kropkową. Notacja ta 

polega na podaniu zmiennej strukturalnej, kropki „.” oraz nazwy składowej. 

 

[zmienna strukturalna].[nazwa składowej] 

 

 

 

 

 

background image

Laboratorium nr 4 

4/4 

 

Przykład: 

 

struct data 

int dzien; 
int miesiac; 
int rok; 

} data_urodzenia; 
 
scanf(”%d”,&data_urodzenia.dzien); 
scanf(”%d”,&data_urodzenia.miesiac); 
scanf(”%d”,&data_urodzenia.rok); 
 
printf(”Data urodzenia: %d-%d-%d\n”,data_urodzenia.dzien 

   ,data_urodzenia.miesiac 
   ,data_urodzenia.rok); 

 

Unia  jest  podobna  do  struktury  danych,  ale  posiada  jedną  różnicę,  dla  każdej 

składowej  unii  przydzielane  jest  wspólne  miejsce  (obszar  w  pamięci).  W  obszarze  tym 

przechowywanych  jest  wiele  nazw  pól  (składowych).  W  przypadku  struktura  danych 

poszczególne  składowe  nie  wpływają  wzajemnie  na  siebie.    Modyfikacja  jednego  pola  nie 

wpływa na pozostałe. W przypadku unii wszystkie pola zajmują tę samą przestrzeń, a więc 

tylko  jedno  z  nich  w  danej  chwili  może  być  aktywne  (posiada  przypisaną  wartość).  Jeśli 

składowa  w  unii  ma  przypisaną  wartość,  przypisanie  wartości  do  drugiej  składowej 

spowoduje usunięcie starej wartości. 

 

Przykład: 

 

union punkt 

float x; 
float y; 

}; 
 
union punkt wspolrzedna;