Informatyka I Wykad 15 PIERWSZE KROKI Jerzy F

  • Slides: 9
Download presentation
Informatyka I Wykład 15 PIERWSZE KROKI Jerzy F. Kotowski 1

Informatyka I Wykład 15 PIERWSZE KROKI Jerzy F. Kotowski 1

Przykład 1 l l int *Ala[5]; - tablica wskaźników do liczb typu int (*Ela)[5];

Przykład 1 l l int *Ala[5]; - tablica wskaźników do liczb typu int (*Ela)[5]; - Wskaźnik do 5 -elementowej tablicy liczb typu int, czyli do obiektu, którym jest CAŁA TABLICA l Podstawowa różnica to inna arytmetyka, np. : Ela++ - zwiększamy adres o jeden obiekt czyli o 5 liczb typu int l Wykorzystanie: l Wniosek: Nazwa tablicy 2 -wymiarowej jest adresem do jej zerowego wiersza. Tablice wielowymiarowe to tablice tablic. int Ala[10][5]; Ela = Ala; Jerzy F. Kotowski 2

15_1 Suma macierzy dwuwymiarowych #define N 2 - definicja stałej #define M 3 -

15_1 Suma macierzy dwuwymiarowych #define N 2 - definicja stałej #define M 3 - definicja stałej int A[N][M], B[N][M], C[N][M]; - tablice Nx. M l Należy napisać definicję funkcji suma_m, realizującej działanie C=A+B i takiej, że będzie się ją wywoływać przy pomocy instrukcji suma_m(A, B, C); . void suma_m(int (*p)[M], int (*q)[M], int (*r)[M]) { int i, j; for(i=0; i<M; i++) for(j=0; j<M; j++) r[i][j]= p[i][j]+ q[i][j]; } Jerzy F. Kotowski 3

Przykład 2 double (*Ola(double(*)[5]))[5]; l Ola jest funkcją, której jedynym argumentem jest adres do

Przykład 2 double (*Ola(double(*)[5]))[5]; l Ola jest funkcją, której jedynym argumentem jest adres do 5 elementowej tablicy liczb typu double. Funkcja zwraca adres tego sameo typu. l Ciekawostka: l Przykład użycia: double Ala[4][5]; - tablica o 5 kolumnach double (*Ela)[5]; - wskaźnik do tablicy 5 -elementowej Ela = Ola(Ala); (*) HELP!!! Jerzy F. Kotowski 4

Słowo kluczowe typedef l cośtam ident; - Deklaracja obiektu o nazwie ident. Ogólnie -

Słowo kluczowe typedef l cośtam ident; - Deklaracja obiektu o nazwie ident. Ogólnie - dowolny deklarator (również złożony). l l typedef cośtam ident; - definicja typu obiektowego o nazwie ident. Nowa nazwa znanego tworu. P 1: typedef unsigned char byte; byte Ala; - Mniej pisania P 2: typedef char string[51]; string Ala[10]; - Tablica 2 -wymiarowa Ala[7][39]=’e’; - Oczywiste!! P 3: typedef int *w_int; w_int Ela[10]; - Tablica 10 wskaźników Jerzy F. Kotowski 5

15_2 Przykład 2 a double (*Ola(double(*)[5]))[5]; typedef double (*Ula)[5]; - definicja typu Ula Ola

15_2 Przykład 2 a double (*Ola(double(*)[5]))[5]; typedef double (*Ula)[5]; - definicja typu Ula Ola 1(Ula); - prototyp funkcji W tej chwili lepiej widać, że argument funkcji i zwracana wartość są obiektami tego samego typu double Ala[4][5]; - tak jak poprzednio double (*Ela)[5]; - tak jak poprzednio …………… Ela=Ola 1(Ala); - wywołanie funkcji l l Wywołanie funkcji IDENTYCZNE tak poprzednio. Jerzy F. Kotowski 6

Argumenty funkcji main l l l Nagłówek funkcji main może mieć postać int main(void)

Argumenty funkcji main l l l Nagłówek funkcji main może mieć postać int main(void) albo int main(int argc, char *argv[]) Interpretacja argumentów n argc - liczba argumentów, z którymi wywołano program n *argv[] - adres do tablicy adresów. To samo co **argv n Jeżeli argc jest różne od zera to te argumenty są dostępne jako zakończone znakiem ’’ napisy w elementach tablicy argv: argv[0], argv[1], …, argv[argc-1] n argv[0] - nazwa użyta do wywołania programu n argv[argc]==0 (NULL) - gwarancja standardu ANSI Jerzy F. Kotowski 7

napisz Przykład 3 Chcemy napisać program, który wydrukuje na ekranie zawartość plików dyskowych o

napisz Przykład 3 Chcemy napisać program, który wydrukuje na ekranie zawartość plików dyskowych o podanej nazwie: drukuj Inf_14_1. cpp Inf_15_2. cpp // program drukuj. cpp void drukowanie(char *s) {…………………} void main(int argc, char *argv[]) { int i; for(i=1; i<argc; i++) drukowanie(argv[i]); } l Jerzy F. Kotowski 8

KONIEC Jerzy F. Kotowski 9

KONIEC Jerzy F. Kotowski 9