Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
dynamiczny przydział pamięci
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Funkcje Modularyzacja : program główny , funkcje Funkcje :
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Wskaźniki. Definiowanie wskaźników Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Real; Przykłady: Wskaźnik.
Struktury.
Tablice.
C++ wykład 2 ( ) Klasy i obiekty.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Podstawy programowania
Programowanie obiektowe III rok EiT
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
Podstawy programowania
Informatyka I Wykład 5 OPERATORY Priorytety i kolejność obliczeń
Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Float; Przykład: Wskaźnik przechowuje adres obiektu wskazanego.
Informatyka I Wykład 10 WSKAŹNIKI I ADRESY Jerzy F. Kotowski.
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Jerzy F. Kotowski1 Informatyka I Wykład 11 STRUKTURY I UNIE.
Procedury i funkcje.
Podstawy programowania
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
Programowanie obiektowe III rok EiT
Podstawy programowania w języku C i C++
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład VIII.
Jerzy F. Kotowski1 Informatyka I Wykład 15 PIERWSZE KROKI.
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT
STEROWANIE Ale nie tylko
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Jerzy Kotowski Politechnika Wrocławska
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Kurs języka C++ – wykład 3 ( )
Kurs języka C++ – wykład 9 ( )
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Przeładowanie funkcji. Dotychczas wiedzieliśmy, że: w danym zakresie ważności może być tylko jedna funkcja o danej nazwie. Kompilator języka C++ daje.
1 Uzupełnienie dot. przekazywania argumentów #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct.
Wykład 5 Klasa Vec i jej operatory 1.Kategorie operatorów 2.Operatory ogólne - przykłady 3.Operatory specjalne [ ], ( ) oraz –> 4.Operatory new i delete.
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
PODSTAWY INFORMATYKI Wykład 4.
Uzupełnienie dot. przekazywania argumentów
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY

Jerzy F. Kotowski 2 DEKLARATORY - filozofia F Język C pozwala na deklarowanie u obiektów typu podstawowego u tablic obiektów u wskaźników do obiektów oraz funkcji zwracających obiekty. F Do tworzenia obiektów służą DEKLARATORY. F Podstawowym elementem każdego deklaratora jest identyfikator (nazwa obiektu). F Jeżeli deklarator zawiera niezmodyfikowany identyfikator, to tworzy on obiekt typu podstawowego.

Jerzy F. Kotowski 3 MODYFIKATORY F Do modyfikowania identyfikatorów w deklaratorach służą modyfikatory. F Język C ma trzy modyfikatory (C++ ma cztery) * modyfikuje obiekt do pointer type [] modyfikuje obiekt do array type () modyfikuje obiekt do function returning type & modyfikuje obiekt do tzw. alias name - C++ W deklaratorach można używać nawiasów w celu wymuszenia interesującej nas kolejności interpretacji poszczególnych modyfikatorów. F Każdy kompletny deklarator musi zawierać specyfikator typu.

Jerzy F. Kotowski 4 PRZYKŁADY F Deklaratory z niemodyfikowanym identyfikatorem int Ala; struct complex Ola; F Deklaratory z jednym modyfikatorem int *Ala; char Ela[10]; struct complex Ola(void); Ostatni deklarator deklaruje funkcję bez argumentów o nazwie Ola zwracającą obiekt typu struct complex.

Jerzy F. Kotowski 5 DEKLARATORY ZŁOŻONE F Deklarator złożony to taki, który zawiera więcej niż jeden modyfikator. F OGRANICZENIA JĘZYKA C u Elementami tablicy nie mogą być funkcje u Funkcja nie może zwracać tablicy u Funkcja nie może zwracać funkcji F PRIORYTETY MODYFIKATORÓW [] oraz () mają wyższy priorytet niż * [] oraz () mają względem siebie identyczny priorytet i są interpretowane w kolejności od lewej strony do prawej

Jerzy F. Kotowski 6 KONSEKWENCJE (oczywiste) int *Ala[10]; Ala jest 10-elementową tablicą wskaźników do obiektów typu int. int (*Ala)[10]; Ala jest wskaźnikiem do 10-elementowej tablicy obiektów typu int. double *Ela(void); Ela jest funkcją bez argumentów zwracającą wskaźnik do obiektu typu double. double (*Ela)(void); Ela jest wskaźnikiem do funkcji bez argumentów zwracającej obiekt typu double.

Jerzy F. Kotowski 7 DWIE PRAWDY (też oczywiste) F Stara prawda: Nazwa tablicy jest adresem do zajmowanego przez nią obszaru pamięci (do jej zerowego elementu) u int *Ala; u int Ola[10]; Ala=Ola; F Nowa prawda: Nazwa funkcji jest adresem do zajmowanego przez nią obszaru pamięci u int (*Ala)(void); u int Ola(void); u Ala=Ola; 14_1

Jerzy F. Kotowski 8 Interpretowanie deklaratorów złożonych F Idea: from the inside out. F Algorytm interpretowania deklaratorów złożonych u Krok 1 Znaleźć identyfikator lub miejsce gdzie powinien on być Krok 2 Zinterpretować znaczenie modyfikatorów [] i () po prawej stronie (jeżeli takie są) Krok 3 Zinterpretować znaczenie modyfikatora * po lewej stronie Krok 4 Jeżeli przy przesuwaniu się w prawo natrafi się na prawy nawias ) to wtedy należy znaleźć lewy nawias ( od tej pary nawiasów i zinterpretować wszystko, co znajduje się wewnątrz (tej pary nawiasów) zgodnie z regułami opisanymi w Kroku 2 i Kroku 3. u Krok 5 Zakończyć na specyfikatorze typu.

Jerzy F. Kotowski 9 PRZYKŁAD 1 char *(*(*var)())[10]; 1 1var jest 2 2wskaźnikiem do 3 3funkcji zwracającej 4 4wskaźnik do 5 5tablicy 10 elementów będących 6 6wskaźnikami do 7 7obiektów typu char.

Jerzy F. Kotowski 10 A teraz własnymi słowami: F dwuwymiarowa tablica wskaźników do liczb typu char: char *alfa[5][10]; F Wskaźnik, który może zapamiętać adres do takiej tablicy: char *(*beta)[10]; beta=alfa; Kompilator powinien to przeżyć! F Funkcja zwracająca adres takiego typu: char *(*gamma())[10]; F Nasz deklarator: char *(*(*delta)())[10]; F Powinno się udać: delta=gamma; 14_2

Jerzy F. Kotowski 11 Znowu przykłady Przykład 2: long *var(long,long); var jest funkcją o dwóch argumentów typu long zwracającą adres do obiektu typu long. Przykład 3: long (*var)(long,long); var jest wskaźnikiem do funkcji o dwóch argumentów typu long i zwracającej wartość typu long. Powinno się udać: long Ola(long x,long y) { return x+y; } …………………………. var=Ola;

Jerzy F. Kotowski 12 Przykłady, przykłady... Przykład 4: struct complex { float Re,Im; }; …………………………... struct complex (*var[5])(struct complex); var jest 5 elementową tablicą adresów do funkcji o jednym argumencie typu struct complex zwracających obiekt takiego samego typu. Przykład 5: struct complex {float Re,Im;}(*var[5])(struct complex); Równoczesna definicja typu strukturalnego complex i deklaracja identyfikatora var. Przykład 6: int *var[5](void); u 5 elementowa tablica funkcji …… ERROR!!

Jerzy F. Kotowski 13 TABLICA ADRESÓW DO FUNKCJI Program Inf_14_3.cpp double f0(double x) { return x;} double (*p_f[5])(double)={f0,sin,cos,log,exp}; F Komentarz: log(x) - logarytm naturalny x F Przy okazji: deklaracja tablicy adresów do tekstów z równoczesną inicjalizacją char *nazwa[5]={x,sin(x), … i tak dalej... F Przykład użycia: printf(%8s,nazwa[i]); F Najważniejsze miejsce programu: printf(%8.2lf,(*p_f[i])(x)); 14_3

Jerzy F. Kotowski 14 FUNKCJA kalkulator Program Inf_14_4.cpp F Definicja funkcji kalkulator double kalk(double (*f)(double), double x) { return (*f)(x); } F Przykład wywołania y=kalk(sin,1); F Wywołanie w programie Inf_14_4.cpp printf(%8.2lf,kalk(p_f[i],x)); 14_4

Jerzy F. Kotowski 15 Przekazanie funkcji tablicy adresów Program Inf_14_5.cpp F W tym programie nie ma zmiennych globalnych. Wszystkie obiekty są najbliżej miejsca użycia (w tym przypadku w segmencie main). Ograniczanie dostępu jest jedną z podstawowych cech podejścia obiektowego - enkapsulacja F W segmencie main wywoływana jest funkcja wydruk. F Funkcja wydruk jest wydoływana z trzema argumentami. void wydruk((double (*(*f))(double, double x, int ile) Najważniejszym elementem programu jest nagłówek funkcji wydruk. F 1-szy argument to adres do tablicy adresów do funkcji. Użycie w funkcji wydruk identyczne. 14_5