Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12
Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 2 / 12
Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 3 / 12
Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; W standardzie C89 rozmiar tablicy: (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 3 / 12
Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; W standardzie C89 rozmiar tablicy: musi być określony za pomocą stałego wyrażenia, (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 3 / 12
Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; W standardzie C89 rozmiar tablicy: musi być określony za pomocą stałego wyrażenia, jest ustalany w czasie kompilacji. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 3 / 12
Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; W standardzie C89 rozmiar tablicy: musi być określony za pomocą stałego wyrażenia, jest ustalany w czasie kompilacji. Przykład: double tab[100]; //pierwsza komórka tablicy - tab[0], ostatnia komórka tablicy - tab[99] tab[2] = 12.23; //przypisane trzeciej komórce tablicy wartości. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 3 / 12
Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; W standardzie C89 rozmiar tablicy: musi być określony za pomocą stałego wyrażenia, jest ustalany w czasie kompilacji. Przykład: double tab[100]; //pierwsza komórka tablicy - tab[0], ostatnia komórka tablicy - tab[99] tab[2] = 12.23; //przypisane trzeciej komórce tablicy wartości. Standard C99 pozwala tworzyć tablice, których rozmiar określa się w czasie działania programu (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 3 / 12
Tablice znaków - łańcuchy W języku C łańcuch to jednowymiarowa tablica znaków zakończona znakiem końca łańcucha ( \0 ). (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 4 / 12
Tablice znaków - łańcuchy W języku C łańcuch to jednowymiarowa tablica znaków zakończona znakiem końca łańcucha ( \0 ). Przykład: char str[9]; // 8 znaków łańcucha plus znak końca łańcucha (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 4 / 12
Tablice znaków - łańcuchy W języku C łańcuch to jednowymiarowa tablica znaków zakończona znakiem końca łańcucha ( \0 ). Przykład: char str[9]; // 8 znaków łańcucha plus znak końca łańcucha Stała tekstowa tekst to t, e, k, s, t, \0. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 4 / 12
Tablice znaków - łańcuchy W języku C łańcuch to jednowymiarowa tablica znaków zakończona znakiem końca łańcucha ( \0 ). Przykład: char str[9]; // 8 znaków łańcucha plus znak końca łańcucha Stała tekstowa tekst to t, e, k, s, t, \0. W przypadku stałych tekstowych znak końca łańcucha dopisywany jest automatycznie przez kompilator. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 4 / 12
Tablice znaków - łańcuchy W języku C łańcuch to jednowymiarowa tablica znaków zakończona znakiem końca łańcucha ( \0 ). Przykład: char str[9]; // 8 znaków łańcucha plus znak końca łańcucha Stała tekstowa tekst to t, e, k, s, t, \0. W przypadku stałych tekstowych znak końca łańcucha dopisywany jest automatycznie przez kompilator. string.h (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 4 / 12
Inicjowanie tablic Ogólna postać inicjacji tablicy: typ nazwatab[rozmiar] = lista wartości; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 5 / 12
Inicjowanie tablic Ogólna postać inicjacji tablicy: typ nazwatab[rozmiar] = lista wartości; Przykłady: int tab1 [3] = {2, 3, 4}; int tab2 [5] = {0}; int tab3 [ 123] = {1, 2, 3}; char znaki [8]={ A, B, C, D, E, _, G, \0 }; char tekst [8]= " 12345 _7"; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 5 / 12
Tablice o nieokreślonym rozmiarze Przykład: char tek []= "\ ndlugi tekst, ktorego znakow nie chce mi sie liczyc.\n"; printf (" Tekst %s ma dlugosc %d\n", tek, tek / sizeof ( char )); sizeof (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 6 / 12
Tablice o nieokreślonym rozmiarze Przykład: char tek []= "\ ndlugi tekst, ktorego znakow nie chce mi sie liczyc.\n"; printf (" Tekst %s ma dlugosc %d\n", tek, tek / sizeof ( char )); sizeof Przykład: int tabs [] = {2, 3, 4, 5}; int roz = sizeof tabs / sizeof tabs [ 0]; int i; for (i =0; i<roz ; i ++) { tabs [i ]=(100* tab [i]-(i +28) ) %33; printf ("%d\n", tabs [i]); } (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 6 / 12
Tablice jednowymiarowe - idiomy Wczytywanie danych do tablicy # define SIZE 10... int tab_a [ SIZE ], tab_b [ SIZE ]; for (i =0;i< SIZE ;i ++) scanf ("%d", & tab_a [i]); // scanf ("% d", tab_a +i); (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 7 / 12
Tablice jednowymiarowe - idiomy Wczytywanie danych do tablicy # define SIZE 10... int tab_a [ SIZE ], tab_b [ SIZE ]; for (i =0;i< SIZE ;i ++) scanf ("%d", & tab_a [i]); // scanf ("% d", tab_a +i); Sumowanie elementów tablicy int sum =0; for (i =0;i< SIZE ;i ++) sum += tab_a [i]; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 7 / 12
Tablice jednowymiarowe - idiomy Wczytywanie danych do tablicy # define SIZE 10... int tab_a [ SIZE ], tab_b [ SIZE ]; for (i =0;i< SIZE ;i ++) scanf ("%d", & tab_a [i]); // scanf ("% d", tab_a +i); Sumowanie elementów tablicy int sum =0; for (i =0;i< SIZE ;i ++) sum += tab_a [i]; Kopiowanie elementów tablicy for (i =0;i< SIZE ;i ++) tab_b [i]= tab_a [i]; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 7 / 12
Tablice jednowymiarowe W języku C nie ma żadnej kontroli przekroczenia zakresu tablicy. int licz [10], i; for (i =0;i <100; i ++) licz [i]=i; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 8 / 12
Funkcje Funkcje to podstawowe części składowe każdego programu w języku C. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 9 / 12
Funkcje Funkcje to podstawowe części składowe każdego programu w języku C. Ogólna postać definicji funkcji to: typ zwracany nazwa funkcji (list parm){ ciało funkcji } (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 9 / 12
Funkcje Funkcje to podstawowe części składowe każdego programu w języku C. Ogólna postać definicji funkcji to: typ zwracany nazwa funkcji (list parm){ ciało funkcji } Funkcja może zwrócić dane dowolnego typu z wyjątkiem tablic. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 9 / 12
Funkcje Funkcje to podstawowe części składowe każdego programu w języku C. Ogólna postać definicji funkcji to: typ zwracany nazwa funkcji (list parm){ ciało funkcji } Funkcja może zwrócić dane dowolnego typu z wyjątkiem tablic. Pustą listę parametrów specyfikujemy słowem kluczowym void. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 9 / 12
Funkcje Funkcje to podstawowe części składowe każdego programu w języku C. Ogólna postać definicji funkcji to: typ zwracany nazwa funkcji (list parm){ ciało funkcji } Funkcja może zwrócić dane dowolnego typu z wyjątkiem tablic. Pustą listę parametrów specyfikujemy słowem kluczowym void. Prototyp funkcji - deklaracja funkcji: void f (int i, int j, float k); void f (int i, j, float k); BŁĄD (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 9 / 12
Funkcje Żadna funkcja nie może odwołać się bezpośrednio do kodu innej funkcji inaczej niż przez jej wywołanie. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 10 / 12
Funkcje Żadna funkcja nie może odwołać się bezpośrednio do kodu innej funkcji inaczej niż przez jej wywołanie. Nie można użyć instrukcji goto aby wskoczyć do środka innej funkcji. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 10 / 12
Funkcje Żadna funkcja nie może odwołać się bezpośrednio do kodu innej funkcji inaczej niż przez jej wywołanie. Nie można użyć instrukcji goto aby wskoczyć do środka innej funkcji. Zmienne zdefiniowane wewnątrz funkcji oraz parametry formalne to zmienne lokalne. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 10 / 12
Funkcje Żadna funkcja nie może odwołać się bezpośrednio do kodu innej funkcji inaczej niż przez jej wywołanie. Nie można użyć instrukcji goto aby wskoczyć do środka innej funkcji. Zmienne zdefiniowane wewnątrz funkcji oraz parametry formalne to zmienne lokalne. Niestatyczne zmienne lokalne nie mogą zachowywać wartości pomiędzy wywołaniami funkcji. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 10 / 12
Funkcje Żadna funkcja nie może odwołać się bezpośrednio do kodu innej funkcji inaczej niż przez jej wywołanie. Nie można użyć instrukcji goto aby wskoczyć do środka innej funkcji. Zmienne zdefiniowane wewnątrz funkcji oraz parametry formalne to zmienne lokalne. Niestatyczne zmienne lokalne nie mogą zachowywać wartości pomiędzy wywołaniami funkcji. Funkcje mają zasięg pliku. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 10 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. Funkcje można podzielić na trzy rodzaje: (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. Funkcje można podzielić na trzy rodzaje: obliczeniowe - sqrt(), sin(). (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. Funkcje można podzielić na trzy rodzaje: obliczeniowe - sqrt(), sin(). operujące na informacjach i zwracające wartość w zależności od wyniku operacji malloc() //NULL lub adres przydzielonego obszaru pamięci. fclose() //0 powodzenie, EOF - błąd. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. Funkcje można podzielić na trzy rodzaje: obliczeniowe - sqrt(), sin(). operujące na informacjach i zwracające wartość w zależności od wyniku operacji malloc() //NULL lub adres przydzielonego obszaru pamięci. fclose() //0 powodzenie, EOF - błąd. funkcje typu void - (procedury): exit(), free(). (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. Funkcje można podzielić na trzy rodzaje: obliczeniowe - sqrt(), sin(). operujące na informacjach i zwracające wartość w zależności od wyniku operacji malloc() //NULL lub adres przydzielonego obszaru pamięci. fclose() //0 powodzenie, EOF - błąd. funkcje typu void - (procedury): exit(), free(). zmienna = fun(); // przypisujemy zmiennej wynik, który zawraca funkcja. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Funkcje - zwracanie wartości Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void, zwracają jedną wartość, określoną instrukcją return zgodną z typem funkcji. Funkcje można podzielić na trzy rodzaje: obliczeniowe - sqrt(), sin(). operujące na informacjach i zwracające wartość w zależności od wyniku operacji malloc() //NULL lub adres przydzielonego obszaru pamięci. fclose() //0 powodzenie, EOF - błąd. funkcje typu void - (procedury): exit(), free(). zmienna = fun(); // przypisujemy zmiennej wynik, który zawraca funkcja. Funkcja int printf(const char * format [, arg,...]) zwraca liczbę wypisanych znaków. Wartości zwracane przez funkcję mogą być ignorowane. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 11 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; wyrażenie występuje tylko wtedy, gdy z deklaracji funkcji wynika, że ma zostać zwrócona wartość. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; wyrażenie występuje tylko wtedy, gdy z deklaracji funkcji wynika, że ma zostać zwrócona wartość. Instrukcja return z określoną wartością może wystąpić jedynie w funkcji, która nie jest typu void. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; wyrażenie występuje tylko wtedy, gdy z deklaracji funkcji wynika, że ma zostać zwrócona wartość. Instrukcja return z określoną wartością może wystąpić jedynie w funkcji, która nie jest typu void. Instrukcji return używa się aby powrócić z funkcji. Instrukcja powoduje przekazanie sterowania do punktu, w którym miało miejsce wywołanie funkcji. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; wyrażenie występuje tylko wtedy, gdy z deklaracji funkcji wynika, że ma zostać zwrócona wartość. Instrukcja return z określoną wartością może wystąpić jedynie w funkcji, która nie jest typu void. Instrukcji return używa się aby powrócić z funkcji. Instrukcja powoduje przekazanie sterowania do punktu, w którym miało miejsce wywołanie funkcji. W C99 (C++) instrukcja return w funkcji niebędącej typu void musi zwrócić wartość. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12
Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; wyrażenie występuje tylko wtedy, gdy z deklaracji funkcji wynika, że ma zostać zwrócona wartość. Instrukcja return z określoną wartością może wystąpić jedynie w funkcji, która nie jest typu void. Instrukcji return używa się aby powrócić z funkcji. Instrukcja powoduje przekazanie sterowania do punktu, w którym miało miejsce wywołanie funkcji. W C99 (C++) instrukcja return w funkcji niebędącej typu void musi zwrócić wartość. W C89 jeśli funkcja z definicji zwraca wartość, to w dobrym stylu jest zadbanie, aby jakaś wartość została zwrócona. Jeśli nie określi się wartości funkcja zwróci śmieci. (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 12 / 12