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
4
Przygotował: mgr inż. Maciej Lasota
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:
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]
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;