Tablice, funkcje, wskaźniki - wprowadzenie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Tablice, funkcje, wskaźniki - wprowadzenie"

Transkrypt

1 Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

2 Outline 1 Tablice jednowymiarowe 2 Funkcje 3 Wskaźniki 4 Tablice a wskaźniki (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

3 Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

4 Tablice jednowymiarowe Ogólna postać deklaracji tablicy jednowymiarowej: typ nazwa zmiennej [rozmiar]; W standardzie C89 rozmiar tablicy: (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

5 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

6 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

7 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

8 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

9 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

10 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

11 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

13 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

14 Inicjowanie tablic Ogólna postać inicjacji tablicy: typ nazwatab[rozmiar] = lista wartości; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

15 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]= " _7"; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

16 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

17 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

18 Tablice jednowymiarowe - idiomy Wczytywanie danych do tablicy # define SIZE 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

19 Tablice jednowymiarowe - idiomy Wczytywanie danych do tablicy # define SIZE 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

20 Tablice jednowymiarowe - idiomy Wczytywanie danych do tablicy # define SIZE 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

21 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

22 Funkcje Funkcje to podstawowe części składowe każdego programu w języku C. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

23 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

24 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

25 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

26 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

27 Funkcje Żadna funkcja nie może odwołać się bezpośrednio do kodu innej funkcji inaczej niż przez jej wywołanie. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

28 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

29 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

30 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

31 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

32 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

33 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

34 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

35 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

36 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

37 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

38 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

39 Instrukcje skoku - return Ogólna postać instrukcji return to: (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

40 Instrukcje skoku - return Ogólna postać instrukcji return to: return wyrażenie; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

41 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

42 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

43 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

44 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

45 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 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

46 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

47 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: przez wartość, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

48 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: przez wartość, przez referencję. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

49 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: przez wartość, przez referencję. Argumenty przekazane przez wartość są kopiowane do parametrów formalnych. Zmiany wartości parametrów formalnych nie mają wpływu na wartości argumentów. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

50 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: przez wartość, przez referencję. Argumenty przekazane przez wartość są kopiowane do parametrów formalnych. Zmiany wartości parametrów formalnych nie mają wpływu na wartości argumentów. W przypadku przekazania przez referencje, adres argumentu jest kopiowany do parametru formalnego. Wewnątrz funkcji odwołanie do faktycznej wartości realizowane jest za pomocą adresu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

51 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: przez wartość, przez referencję. Argumenty przekazane przez wartość są kopiowane do parametrów formalnych. Zmiany wartości parametrów formalnych nie mają wpływu na wartości argumentów. W przypadku przekazania przez referencje, adres argumentu jest kopiowany do parametru formalnego. Wewnątrz funkcji odwołanie do faktycznej wartości realizowane jest za pomocą adresu. W języku C argumenty przekazywane są przez wartość. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

52 Funkcje - przekazywanie argumentów W różnych językach programowania argumenty do funkcji mogą być przekazywane: przez wartość, przez referencję. Argumenty przekazane przez wartość są kopiowane do parametrów formalnych. Zmiany wartości parametrów formalnych nie mają wpływu na wartości argumentów. W przypadku przekazania przez referencje, adres argumentu jest kopiowany do parametru formalnego. Wewnątrz funkcji odwołanie do faktycznej wartości realizowane jest za pomocą adresu. W języku C argumenty przekazywane są przez wartość. W języku C możemy symulować przekazywanie przez referencję, przekazując przez wartość wskaźnik do zmiennej, zamiast samej zmiennej. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

53 Funkcje - przekazywanie argumentów W języku C argumenty przekazywane są przez wartość. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

54 Funkcje - przekazywanie argumentów W języku C argumenty przekazywane są przez wartość. Przykład: int sq(int t){ t*=t; printf ("in sq t = %d\n",t); return t; } int main ( void ){ int t =10; printf ("%d * %d = %d\n", t, t, return 0; } sq(t)); (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

55 Funkcje rekurencyjne W języku C funkcja może wywołać samą siebie. W takim przypadku na stosie powstaje nowy zestaw zmiennych lokalnych, a wykonanie kodu zaczyna się od początku z nowym zestawem wartości. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

56 Funkcje rekurencyjne W języku C funkcja może wywołać samą siebie. W takim przypadku na stosie powstaje nowy zestaw zmiennych lokalnych, a wykonanie kodu zaczyna się od początku z nowym zestawem wartości. Wywołanie rekurencyjne nie tworzy kopii funkcji. Nowe są jedynie wartości, na których działa kod. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

57 Funkcje rekurencyjne W języku C funkcja może wywołać samą siebie. W takim przypadku na stosie powstaje nowy zestaw zmiennych lokalnych, a wykonanie kodu zaczyna się od początku z nowym zestawem wartości. Wywołanie rekurencyjne nie tworzy kopii funkcji. Nowe są jedynie wartości, na których działa kod. Funkcje rekurencyjne przeważnie działają wolniej niż odpowiedniki iteracyjne. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

58 Funkcje rekurencyjne W języku C funkcja może wywołać samą siebie. W takim przypadku na stosie powstaje nowy zestaw zmiennych lokalnych, a wykonanie kodu zaczyna się od początku z nowym zestawem wartości. Wywołanie rekurencyjne nie tworzy kopii funkcji. Nowe są jedynie wartości, na których działa kod. Funkcje rekurencyjne przeważnie działają wolniej niż odpowiedniki iteracyjne. Rekurencja umożliwia prosty i jasny zapis niektórych algorytmów. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

59 Funkcje rekurencyjne W języku C funkcja może wywołać samą siebie. W takim przypadku na stosie powstaje nowy zestaw zmiennych lokalnych, a wykonanie kodu zaczyna się od początku z nowym zestawem wartości. Wywołanie rekurencyjne nie tworzy kopii funkcji. Nowe są jedynie wartości, na których działa kod. Funkcje rekurencyjne przeważnie działają wolniej niż odpowiedniki iteracyjne. Rekurencja umożliwia prosty i jasny zapis niektórych algorytmów. Bardzo głęboka rekurencja może spowodować przepełnienie stosu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

60 Funkcje rekurencyjne - przykład - wieże Hanoi void hanoi ( int n, int s, int d, int p){ if(n >0) { hanoi (n -1,s,p,d); printf (" przesunac krazek z %d na %d\n",s,d); hanoi (n -1,p,d,s); } } int main ( void ){ printf ("5\n"); hanoi (5, 1, 3, 2); return 0; } (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

61 Wskaźniki Korzyści płynące ze wskaźników: (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

62 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

63 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, wskaźniki są podstawą dynamicznej alokacji pamięci, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

64 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, wskaźniki są podstawą dynamicznej alokacji pamięci, wskaźniki umożliwiają realizację dynamicznych struktur danych: listy, drzewa, itp, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

65 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, wskaźniki są podstawą dynamicznej alokacji pamięci, wskaźniki umożliwiają realizację dynamicznych struktur danych: listy, drzewa, itp, wskaźniki pozwalają poprawić efektywność działania wielu procedur. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

66 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

67 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

68 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

69 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Typ podstawowy wskaźnika określa, na jakiego typu zmienne może on wskazywać. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

70 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Typ podstawowy wskaźnika określa, na jakiego typu zmienne może on wskazywać. Wszelkie obliczenia na wskaźnikach wykonuje się z uwzględnieniem typu podstawowego. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

71 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Typ podstawowy wskaźnika określa, na jakiego typu zmienne może on wskazywać. Wszelkie obliczenia na wskaźnikach wykonuje się z uwzględnieniem typu podstawowego. W przypadku deklaracji typu int*, kompilator zakłada, że dowolny adres wskazywany przez niego zawiera liczbę całkowitą - niezależnie od tego, co aktualnie zawiera wskazywany fragment pamięci. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

72 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Typ podstawowy wskaźnika określa, na jakiego typu zmienne może on wskazywać. Wszelkie obliczenia na wskaźnikach wykonuje się z uwzględnieniem typu podstawowego. W przypadku deklaracji typu int*, kompilator zakłada, że dowolny adres wskazywany przez niego zawiera liczbę całkowitą - niezależnie od tego, co aktualnie zawiera wskazywany fragment pamięci. Programista musi zagwarantować, że typ wskaźnika jest zgodny z typem zmiennej, na który wskazuje. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

73 Wskaźniki - inicjalizacja Wskaźnikowi, który nie zawiera poprawnego adresu należy nadać wartość NULL(zero). (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

74 Wskaźniki - inicjalizacja Wskaźnikowi, który nie zawiera poprawnego adresu należy nadać wartość NULL(zero). Język C gwarantuje, że pod zerowym adresem nie istnieje żadna zmienna. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

75 Wskaźniki - inicjalizacja Wskaźnikowi, który nie zawiera poprawnego adresu należy nadać wartość NULL(zero). Język C gwarantuje, że pod zerowym adresem nie istnieje żadna zmienna. Wskaźnik o wartości NULL nie wskazuje na żadną zmienną. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

76 Wskaźniki - inicjalizacja Wskaźnikowi, który nie zawiera poprawnego adresu należy nadać wartość NULL(zero). Język C gwarantuje, że pod zerowym adresem nie istnieje żadna zmienna. Wskaźnik o wartości NULL nie wskazuje na żadną zmienną. Przykład: int *pi; float *pf, fl; pi = NULL ; pf = &fl; * pi = 81; // BLEDNA INSTRUKCJA *pf = 12.89; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

77 Wskaźniki - operatory Operator & zwraca adres w pamięci dla operandu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

78 Wskaźniki - operatory Operator & zwraca adres w pamięci dla operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem operandu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

79 Wskaźniki - operatory Operator & zwraca adres w pamięci dla operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem operandu. Każda lokalizacja w pamięci jest identyfikowana przez unikalny adres. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

80 Wskaźniki - operatory Operator & zwraca adres w pamięci dla operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem operandu. Każda lokalizacja w pamięci jest identyfikowana przez unikalny adres. Każda lokalizacja w pamięci zawiera wartość. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

81 Wskaźniki - operatory Operator & zwraca adres w pamięci dla operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem operandu. Każda lokalizacja w pamięci jest identyfikowana przez unikalny adres. Każda lokalizacja w pamięci zawiera wartość. Przykład: int i, *pi, *pj; i =9; pi = &i; pj = pi; *pj =123; Jaka jest wartość i, &i, pi, *pi, &pi? (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

82 Wskaźniki Wskaźnik typu void * to wskaźnik ogólnego przeznaczenia. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

83 Wskaźniki Wskaźnik typu void * to wskaźnik ogólnego przeznaczenia. Wskaźnik typu void * można przypisać dowolnemu innemu wskaźnikowi. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

84 Wskaźniki Wskaźnik typu void * to wskaźnik ogólnego przeznaczenia. Wskaźnik typu void * można przypisać dowolnemu innemu wskaźnikowi. Wskaźnikowi typu void * można przypisać dowolny inny wskaźnik. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

85 Wskaźniki Wskaźnik typu void * to wskaźnik ogólnego przeznaczenia. Wskaźnik typu void * można przypisać dowolnemu innemu wskaźnikowi. Wskaźnikowi typu void * można przypisać dowolny inny wskaźnik. void * pozwala zdefiniować parametr funkcji, która może przyjąć jako argument wskaźnik dowolnego typu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

86 Wskaźniki Wskaźnik typu void * to wskaźnik ogólnego przeznaczenia. Wskaźnik typu void * można przypisać dowolnemu innemu wskaźnikowi. Wskaźnikowi typu void * można przypisać dowolny inny wskaźnik. void * pozwala zdefiniować parametr funkcji, która może przyjąć jako argument wskaźnik dowolnego typu. void * umożliwia dostęp pamięci (np. malloc), gdy przeznaczenie takiej pamięci nie jest jeszcze znane. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

87 Wskaźniki Wskaźnik typu void * to wskaźnik ogólnego przeznaczenia. Wskaźnik typu void * można przypisać dowolnemu innemu wskaźnikowi. Wskaźnikowi typu void * można przypisać dowolny inny wskaźnik. void * pozwala zdefiniować parametr funkcji, która może przyjąć jako argument wskaźnik dowolnego typu. void * umożliwia dostęp pamięci (np. malloc), gdy przeznaczenie takiej pamięci nie jest jeszcze znane. Nie można wykonywać operacji arytmetycznych na wskaźnikach typu void *. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

88 Arytmetyka wskaźników Operacje wskaźnikowe wykonywane są z uwzględnieniem typu podstawowego wskaźnika. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

89 Arytmetyka wskaźników Operacje wskaźnikowe wykonywane są z uwzględnieniem typu podstawowego wskaźnika. Na wskaźnikach można wykonywać tylko dwie operacje arytmetyczne: dodawanie i odejmowanie. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

90 Arytmetyka wskaźników Operacje wskaźnikowe wykonywane są z uwzględnieniem typu podstawowego wskaźnika. Na wskaźnikach można wykonywać tylko dwie operacje arytmetyczne: dodawanie i odejmowanie. Przykład: int tab [10]={1}; int *pt=null, * ptf = NULL ; pt = tab ;// pt = & tab [0]; ptf = pt + 5; // ptf = & pt; - BLAD - niezgodnosc typow *( pt + 3) = *pt + 3; *( pt + 4) = *( ptf - 2); *( pt + 1) = ptf - tab ; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

91 Arytmetyka wskaźników # define SIZE 8... int i, itab [ SIZE ], * pit = itab ; double dtab [ SIZE ], * pdt = dtab ; printf (" %18 s %15 s\n", " int ", " double "); for ( i = 0; i < SIZE ; i ++) printf (" wsk + %d %10 p %10 p\n",i,pit +i,pdt +i); (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

92 Arytmetyka wskaźników # define SIZE 8... int i, itab [ SIZE ], * pit = itab ; double dtab [ SIZE ], * pdt = dtab ; printf (" %18 s %15 s\n", " int ", " double "); for ( i = 0; i < SIZE ; i ++) printf (" wsk + %d %10 p %10 p\n",i,pit +i,pdt +i); int double wsk + 0 : 0x7fff36430c60 0x7fff36430c10 wsk + 1 : 0x7fff36430c64 0x7fff36430c18 wsk + 2 : 0x7fff36430c68 0x7fff36430c20 wsk + 3 : 0x7fff36430c6c 0x7fff36430c28 wsk + 4 : 0x7fff36430c70 0x7fff36430c30 wsk + 5 : 0x7fff36430c74 0x7fff36430c38 wsk + 6 : 0x7fff36430c78 0x7fff36430c40 wsk (Wykład + 74) : 0x7fff36430c7c Tablice, funkcje, wskaźniki 0x7fff36430c48 - wprowadzenie 19 listopada / 37

93 Wskaźniki i tablice Pomiędzy wskaźnikami i tablicami istnieje ścisłe powiązanie. Nazwa tablicy bez indeksu to adres pierwszego elementu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

94 Wskaźniki i tablice Pomiędzy wskaźnikami i tablicami istnieje ścisłe powiązanie. Nazwa tablicy bez indeksu to adres pierwszego elementu. Przykład: int tab [10]; int *p; p= tab ; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

95 Wskaźniki i tablice Pomiędzy wskaźnikami i tablicami istnieje ścisłe powiązanie. Nazwa tablicy bez indeksu to adres pierwszego elementu. Przykład: int tab [10]; int *p; p= tab ; Aby odwołać się do elementu o indeksie 4 w tablicy tab można skorzystać z: tab[4] lub *(p+4). (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

96 Wskaźniki i tablice Pomiędzy wskaźnikami i tablicami istnieje ścisłe powiązanie. Nazwa tablicy bez indeksu to adres pierwszego elementu. Przykład: int tab [10]; int *p; p= tab ; Aby odwołać się do elementu o indeksie 4 w tablicy tab można skorzystać z: tab[4] lub *(p+4). Polecenie tab[4]=18 jest równoważne *(p+4)=18, jak również *(tab+4)=18 oraz p[4]=18. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

97 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

98 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

99 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

100 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). Wszystkie pozostałe operacje są w istocie realizowane na wskaźnikach, nawet jeśli zapis sugeruje co innego, np. tab[i]. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

101 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). Wszystkie pozostałe operacje są w istocie realizowane na wskaźnikach, nawet jeśli zapis sugeruje co innego, np. tab[i]. W języku C nazwa tab odnosi się do adresu elementu tablicy tab[] o indeksie zero w każdym kontekście, z wyjątkiem jednego, kiedy to występuje jako argument operatora sizeof. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

102 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). Wszystkie pozostałe operacje są w istocie realizowane na wskaźnikach, nawet jeśli zapis sugeruje co innego, np. tab[i]. W języku C nazwa tab odnosi się do adresu elementu tablicy tab[] o indeksie zero w każdym kontekście, z wyjątkiem jednego, kiedy to występuje jako argument operatora sizeof. Zapis sizeof tab - reprezentuje rozmiar całej tablicy, a nie rozmiar wskaźnika jednego z jej elementów. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

103 Czym są tablice? *tab = 18 - przypisujemy wartość elementowi o indeksie 0. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

104 Czym są tablice? *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

105 Czym są tablice? *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

106 Czym są tablice? *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

107 Czym są tablice? *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. tab[5] = 18 - działa tak samo jak 5[tab]=18. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

108 Czym są tablice? *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. tab[5] = 18 - działa tak samo jak 5[tab]=18. Notacja 5[tab] = 18 - działa, ale nie powinna być stosowana. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

109 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

110 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

111 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

112 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

113 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: na pojedynczą zmienną typu char, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

114 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: na pojedynczą zmienną typu char, na dowolny indeks w tablicy typu char, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

115 Tablice i wskaźniki Tablice to nie wskaźniki choć są blisko z nimi związane. char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: na pojedynczą zmienną typu char, na dowolny indeks w tablicy typu char, nigdzie - wskaźnik pusty. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

116 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

117 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; Jak przetłumaczyć x[3]??? (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

118 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

119 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź wartość wskaźnika p, dodaj do niej 3 i pobierz znak. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

120 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź wartość wskaźnika p, dodaj do niej 3 i pobierz znak. Gdzie znajduje się x[3]??? (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

121 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź wartość wskaźnika p, dodaj do niej 3 i pobierz znak. Gdzie znajduje się x[3]??? tab[3] - znak odległy o 3 miejsca od początku obiektu o nazwie tab, (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

122 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź wartość wskaźnika p, dodaj do niej 3 i pobierz znak. Gdzie znajduje się x[3]??? tab[3] - znak odległy o 3 miejsca od początku obiektu o nazwie tab, p[3] - znak odległy o 3 miejsca od obiektu wskazywanego przez p. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

123 Arytmetyka wskaźników Co inkrementuje *ptr++? (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

124 Arytmetyka wskaźników Co inkrementuje *ptr++? Operatory *, ++ mają łączność prawostronną. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

125 Arytmetyka wskaźników Co inkrementuje *ptr++? Operatory *, ++ mają łączność prawostronną. Konstrukcja *ptr++ inkrementuje ptr (i zwraca wartość wskazywaną przez pierwotną wartość wskaźnika). (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

126 Arytmetyka wskaźników Co inkrementuje *ptr++? Operatory *, ++ mają łączność prawostronną. Konstrukcja *ptr++ inkrementuje ptr (i zwraca wartość wskazywaną przez pierwotną wartość wskaźnika). Aby zwiększyć o jeden obiekt wskazywany przez ptr, należy użyć (*ptr)++. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

127 Arytmetyka wskaźników Co inkrementuje *ptr++? Operatory *, ++ mają łączność prawostronną. Konstrukcja *ptr++ inkrementuje ptr (i zwraca wartość wskazywaną przez pierwotną wartość wskaźnika). Aby zwiększyć o jeden obiekt wskazywany przez ptr, należy użyć (*ptr)++. wyrażenie wartość wyrażenia inkrementacja *p++ lub *(p++) *p przed ++ p (*p)++ *p przed ++ *p *++p lub *(++p) *p po ++ p ++*p lub ++(*p) *p po ++ *p (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

128 Wskaźniki - typowe błędy Przykład: int main ( void ){ int x, *p; x = 10; * p = x; // blad p nie zostal zainicjowany. return 0; } (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

129 Wskaźniki - typowe błędy Przykład: int main ( void ){ int x, *p; x = 10; * p = x; // blad p nie zostal zainicjowany. return 0; } Program umieści wartość 10 w nieznanym obszarze pamięci, ponieważ wskaźnik p nigdy nie otrzymał wartości i nie wiadomo na co wskazuje. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

130 Wskaźniki - typowe błędy Błąd Naruszenie ochrony pamięci (segmentation fault (sygnał SIGSEGV)) wskazuje, że wystąpiła próba dostępu do adresu spoza pamięci przydzielonej dla programu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

131 Wskaźniki - typowe błędy Błąd Naruszenie ochrony pamięci (segmentation fault (sygnał SIGSEGV)) wskazuje, że wystąpiła próba dostępu do adresu spoza pamięci przydzielonej dla programu. Przykład: int * ptr = NULL ; * ptr = 1; const char *s = " hello world "; // error : assignment of read - only location * s *s = H ; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

132 Wskaźniki - typowe błędy Przykład: int main ( void ){ int x, *p; x = 10; p = x; // bledne przypisanie powinno byc p =& x printf ("%d", *p); } return 0; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

133 Problemy ze wskaźnikami Błędny wskaźnik trudno znaleźć, gdyż wskaźnik sam w sobie nie jest problemem. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

134 Problemy ze wskaźnikami Błędny wskaźnik trudno znaleźć, gdyż wskaźnik sam w sobie nie jest problemem. Problem bierze się stad, że używając niepoprawnego wskaźnika, zapisujemy lub odczytujemy dane z nieznanego obszaru pamięci. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

135 Problemy ze wskaźnikami Błędny wskaźnik trudno znaleźć, gdyż wskaźnik sam w sobie nie jest problemem. Problem bierze się stad, że używając niepoprawnego wskaźnika, zapisujemy lub odczytujemy dane z nieznanego obszaru pamięci. Odczytując dane, dostajemy śmieci. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

136 Problemy ze wskaźnikami Błędny wskaźnik trudno znaleźć, gdyż wskaźnik sam w sobie nie jest problemem. Problem bierze się stad, że używając niepoprawnego wskaźnika, zapisujemy lub odczytujemy dane z nieznanego obszaru pamięci. Odczytując dane, dostajemy śmieci. Zapisując dane, możemy zamazać kod programu lub dane. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

137 Funkcje - przekazywanie przez referencję W języku C możemy symulować przekazywanie przez referencję, przekazując przez wartość wskaźnik (adres do zmiennej), zamiast samej zmiennej. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

138 Funkcje - przekazywanie przez referencję W języku C możemy symulować przekazywanie przez referencję, przekazując przez wartość wskaźnik (adres do zmiennej), zamiast samej zmiennej. Przykład: void swap ( int *x, int *y){ int temp = *x; *x = *y; *y = temp ; } int main ( void ){ int i=20, j =29; swap (&i, &j); } return 0; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

139 Funkcje - przekazywanie tablic W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

140 Funkcje - przekazywanie tablic W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

141 Funkcje - przekazywanie tablic W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

142 Funkcje - przekazywanie tablic W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } 3 sposoby deklaracji funkcji func(): void func ( int *x); void func ( int x [10]) ; void func ( int x []) ; (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

143 Funkcje - przekazywanie tablic W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } 3 sposoby deklaracji funkcji func(): void func ( int *x); void func ( int x [10]) ; void func ( int x []) ; Wewnątrz funkcji func() wyrażenie sizeof x zwraca rozmiar wskaźnika, nie tablicy. (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

144 Funkcje - przekazywanie tablic W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } Wewnątrz funkcji func() wyrażenie sizeof x zwraca rozmiar wskaźnika, nie tablicy. Rozmiar tablicy musimy przekazać jawnie: void func ( int *x, int roz ); void func ( int x [10], int roz ); void func ( int x[], int roz ); (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

145 Funkcje - przekazywanie tablic Przykład: # define SIZE 10 int sump ( int * start, int * end ) { int total = 0; while ( start < end ) total += * start ++; return total ; }... int tab [ SIZE ] = {20,10,5,39,4,16,19,26,31,20}; int sum = sump ( tab, tab + SIZE ); (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada / 37

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie 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

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Języki i metodyka programowania. Wskaźniki i tablice.

Języki i metodyka programowania. Wskaźniki i tablice. Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Podstawy programowania 1

Podstawy programowania 1 Podstawy programowania 1 Krzysztof Grudzień kgrudzi@kis.p.lodz.pl Wykład nr 2 1 Plan spotkań Wskaźniki Tablice jednowymiarowe & wska źniki. Programowanie w C. Wikibooks 2 Co to jest wskaźnik?? Wskaźnik

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Wstęp do wskaźników w języku ANSI C

Wstęp do wskaźników w języku ANSI C Wstęp do wskaźników w języku ANSI C / Materiał dydaktyczny pomocniczy do przedmiotu Informatyka sem.iii kier. Elektrotechnika/ 1. Wprowadzenie W języku ANSI C dla każdego typu X (wbudowanego, pochodnego,

Bardziej szczegółowo

KURS C/C++ WYKŁAD 6. Wskaźniki

KURS C/C++ WYKŁAD 6. Wskaźniki Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można

Bardziej szczegółowo

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster Wykład nr 3 Temat: Wskaźniki i referencje. Cytaty: Mylić się jest rzeczą ludzką, ale żeby coś naprawdę spaprać potrzeba komputera. Edward Morgan Forster Gdyby murarze budowali domy tak, jak programiści

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Techniki Programowania wskaźniki

Techniki Programowania wskaźniki Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty. Funkcje. Deklaracja funkcji: KURS C/C++ WYKŁAD 8 #include //deklaracje funkcji: printf(...), scanf(...) #include //double sqrt (double ) #include //void clrscr (void) void main

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Programowanie w C++ Wykład 4 Katarzyna Grzelak 19 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Funkcje cd K.Grzelak (Wykład 1) Programowanie w C++ 2 / 37 Funkcja powtórzenie Funkcje == podprogramy

Bardziej szczegółowo

6 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 6 1/5 Język C Instrukcja laboratoryjna Temat: Wskaźniki. 6 Przygotował: mgr inż. Maciej Lasota 1) Wskaźniki. Wskaźniki (zmienne wskaźnikowe) stanowią jedno z fundamentalnych pojęć języka

Bardziej szczegółowo

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 > C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania I rok Automatyka i Robotyka Eka PWr Ćwiczenia Zestaw 4 Zakres materiału Analiza poprawności konstrukcji, wyliczanie wyrażeń z wskaźnikami i tablicami, ręczna symulacja, opracowywanie

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana

Bardziej szczegółowo

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle! Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ Zak lad Chemii Teoretycznej UJ 26 listopada 2007 wielowymiarowe 1 2 wielowymiarowe 3 Typ tablicowy Plan wielowymiarowe Tablica Zajmujacy spójny obszar w pamieci zestaw zmiennych (obiektów) tego samego

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje

Bardziej szczegółowo

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład 1: Wskaźniki i zmienne dynamiczne Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie

Bardziej szczegółowo

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Tablice deklaracja, reprezentacja wewnętrzna

Tablice deklaracja, reprezentacja wewnętrzna Tablice deklaracja, reprezentacja wewnętrzna Tablica jest zmienną złożoną z elementów tego samego typu. Obejmuje ona ciągły obszar pamięci operacyjnej dokładnie tak duży, aby zmieścić wszystkie jej elementy.

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

Wskaźniki, funkcje i tablice

Wskaźniki, funkcje i tablice , funkcje i tablice Zak lad Chemii Teoretycznej UJ 20 listopada 2008 wielowymiarowe 1 2 3 4 wielowymiarowe, funkcje i tablice Czym sa wskaźniki? Plan wielowymiarowe Zmienne wskaźnikowe wskazuja na inne

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include

Bardziej szczegółowo

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

ŁAŃCUCHY W JĘZYKU C/C++

ŁAŃCUCHY W JĘZYKU C/C++ ŁAŃCUCHY W JĘZYKU C/C++ Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem... 74 101 115 116 101 109 32 116 101 107 115 116 101 109 0......

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

Bardziej szczegółowo

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 4

Programowanie komputerowe. Zajęcia 4 Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Programowanie w elektronice: Podstawy C

Programowanie w elektronice: Podstawy C Programowanie w elektronice: Podstawy C Projekt Matematyka dla Ciekawych Świata, Robert Ryszard Paciorek 2019-05-05 C / C++ są najpopularniejszymi językami kompilowanymi do kodu maszynowego

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium)

Język C, tablice i funkcje (laboratorium) Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C Wprowadzenie do programowania w języku C Część szósta Zmienne wskaźnikowe koncepcja, zastosowania, sztuczki i triki Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof 1 adres zmiennej Do pobrania adresu zmiennej używa się jednoargumentowego operatora & (uwaga & może mieć także znaczenie dwuargumentowego

Bardziej szczegółowo

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Przeciążenie funkcji polega na użyciu funkcji z tą samą nazwą, które mają różne listy argumentów(różne typy, różna ilość lub to i inne).

Bardziej szczegółowo

Struktury - wprowadzenie

Struktury - wprowadzenie Struktury - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 6 5 kwietnia 2019 (Wykład 6) Struktury - wprowadzenie 5 kwietnia 2019 1 / 12 Outline 1 Struktury (Wykład 6) Struktury - wprowadzenie 5

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Funkcje w języku C Zasięg zmiennych Przekazywanie

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo