Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika



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

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

Wstęp do programowania

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

Programowanie 2. Język C++. Wykład 2.

Zmienne, stałe i operatory

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Szablony. Szablony funkcji

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

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

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

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

Referencje do zmiennych i obiektów

Język C zajęcia nr 11. Funkcje

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

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

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

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

Techniki Programowania wskaźniki

Funkcja, argumenty funkcji

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

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

Tablice, funkcje - wprowadzenie

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Laboratorium nr 10. Temat: Funkcje cz.2.

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

Język C++ zajęcia nr 2

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

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

Programowanie obiektowe

Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków

Programowanie Obiektowe i C++

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:

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf("\n podaj wartosc liczby a\n"); scanf("%d",&a); pa=&a;

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

MATERIAŁY DO ZAJĘĆ II

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

Szablony klas, zastosowanie szablonów w programach

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wstęp do Programowania 2

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

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

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

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Wskaźniki. Programowanie Proceduralne 1

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

Wstęp do programowania

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Funkcja (podprogram) void

Język C, tablice i funkcje (laboratorium)

Wskaźniki. Informatyka

Programowanie 2. Język C++. Wykład 1.

Wstęp do Informatyki

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

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Wskaźniki, funkcje i tablice

Lab 9 Podstawy Programowania

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

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Zofia Kruczkiewicz, ETE8305_2 1

Język C++ Różnice między C a C++

Szablony funkcji i szablony klas

Microsoft IT Academy kurs programowania

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

Wstęp do Programowania, laboratorium 02

Projektowanie klas c.d. Projektowanie klas przykład

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

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

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

Język C - podstawowe informacje

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie 2. Język C++. Wykład 3.

Podstawy programowania w języku C++

Przeciążenie (przeładowanie nazw) funkcji

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

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

Stałe, tablice dynamiczne i wielowymiarowe

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Wartości domyślne, szablony funkcji i klas

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

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

Część 4 życie programu

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Alokacja pamięci dla tablicy dwuwymiarowej

Techniki Programowania przeładowanie funkcji

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

Transkrypt:

Wyklad 6 Typy i zmienne: wskaznikowe, referencyjne Funkcje deklaracja, definicja. Zasieg deklaracji i widocznosc zmiennych Przekazywanie parametrów przez wartosc, referencje i wskaznik Przekazywanie wyniku funkcji przez return Typy i zmienne wskaznikowe Adres_1 Wskaznik czyli Adres=Adres_2 Adres_2 Zmienna wskazywana typ * nazwa_wkaznika Wskaznik char* a; Typ wskaznika a wskaznik na znak int* b; b wskaznik do liczby calkowitej double* c; c wskaznik do liczby rzeczywistej char * d; d wskaznik na znak Zmienna Inicjowa -nie zmiennej wskaznikowej Zmienna wskazywana char a_; a = &a_; *a = A ; lub a_ = A ; int b_; b =&b_; *b = 3; lub b_ = 3; double c_; c = &c_; *c = 2.8; lub c_ = 2.8; char w [10]; d=w; cout<<d[1]; cout<<*(d+1) Typ zmiennej wskazywanej char - znakowy int calkowity double zmiennoprzecinko wy char znak Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 1

Typy i zmienne referencyjne Typ & nazwa_zmiennej_refrencyjnej = nazwa_zmiennej;?? Zmienna referencyjna jest to zmienna tozsama z inna zmienna np.: int zmienna_1; int& ref_zmienna_1 = zmienna_1; Zmienna zmienna_1 jest dostepna pod dwiema nazwami: zmienna_1 oraz ref_zmienna_1.?? Referencja do stalej const int & ref_stala = 1; Zmienna ref_stala ma dostep do wartosci 1 umieszczonej w zmiennej tymczasowej.?? Nie ma takich zmiennych referencyjnych: referencji do referencji np. float && a; wskazników zmiennych referencyjnych np. int & * wskaz_ref; tablic referencji np. int & tab[10]; Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 2

Funkcje, deklaracje, definicje void fun (int, long&, const float& ); deklaracja fukcji = prototyp funkcji void main () int i = 1; long j = 1; float k = 3; // wywolanie funkcji fun(i, j, k); //wywolanie funkcji fun(j, i, k); /* wartosc zmiennej i oraz k nie ulegnie zmianie po wykonaniu funkcji fun, natomiast wartosc zmiennej j zmieni sie i bedzie równa 2*/ /* Niebiepieczenstwo! - zmienna i typu int podstawiona pod parametr ref przekazywany jako parametr long przez referencje nie ulegnie zmianie, gdyz operacja zostala wykonana na zmiennej tymczasowej typu long (w Visual C++ - blad)*/ //definicja funkcji Naglówek funkcji Wynik funkcji Nazwa funkcji Parametry funkcji (...) void fun (int wart, long& ref, const float& st) Cialo funkcji... wart++; ref++; cout << st << \n ; /*podczas wywolania funkcji f, wart++ zwieksza na stosie lokalna kopie pierwszego argumentu aktualnego - przekazywanie przez wartosc*/ /*ref++ zwieksza wartosc parametru aktualnego za posrednictwem adresowania posredniego - przekazywanie przez referencje polega na umieszczaniu adresu parametru aktualnego na stosie*/ /*zmienna st przekazywana jest przez referencje, lecz nie mozna zmienic jej wartosci*/ Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 3

Zasieg deklaracji i widocznosc zmiennych Zasiegi:?? Lokalny w bloku od miejsca definicji w bloku do konca bloku?? Funkcji dla etykiet zasiegiem jest funkcja Etykiety dla goto case default?? Pliku Dla nazwy zdefiniowanej na zewnatrz wszystkich bloków funkcji zasiegiem jest caly plik od miejsca definicji do konca pliku sa to zmienne globalne Przyklad int a; void fun(); int a; a=8; fun(); void fun() a=6; int a; a=2; int a, b; a=9; b=89; a=20; //b=7; //zmienna globalna //zmienna lokalna tutaj wystapi blad zmienna b jest niezdefiniowana Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 4

Przekazywanie parametrów do funkcji przez wartosc #include <stdio.h> #include <conio.h> void f_wartosc(int, int); int a=5; printf("\nwartosc zmiennej a przed wywolaniem funkcji " "void f_wartosc(int f_a, int f_b): %d",a); // 5 f_wartosc(a, 7); printf("\nwartosc zmiennej a po zakonczeniu wywolanej funkcji: " "f_wartosc(a,7) : %d", a); // 5 void f_wartosc(int f_a, int f_b) //na stosie funkcji umieszczone sa kopie wartosci parametrow //aktualnych podstawianych pod: f_a, f_b f_a++; printf("\nwartosc wyrazenia a++ przekazanego przez wartosc" " w czasie dzialania funkcji: %d", f_a); f_b++; printf("\nwartosc wyrazenia ""7++"" przekazanego przez wartosc" " w czasie dzialania funkcji: %d", f_b); przez wykonaniem f_wartosc Stos funkcji f_wartosc po wykonaniu instrukcji po wykonaniu f_wartosc 5 6 _a 8 _a 5 Zmienna a typu int Zmienna f_a typu int Zmienna f_b typu int Zmienna a typu int Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 5

#include <stdio.h> #include <conio.h> Przekazywanie parametrów przez wskaznik void f_wskaznik(int*); int a=5; printf("\n\nwartosc zmiennej a przed wywolaniem funkcji: " " void f_wskaznik(int* f_a): %d", a); //5 f_wskaznik(&a); printf("\nwartosc zmiennej a po zakonczeniu wywolanej funkcji: " "f_wskaznik(&a): %d", a); //6 void f_wskaznik(int* f_a) //na stosie funkcji umieszczona jest kopia jawnego adresu parametru //aktualnego podstawionego pod f_a; //operacje wykonywane sa na parametrze aktualnym (wyluskanym) (*f_a)++; printf("\nwartosc zmiennej a przekazanej przez wskaznik" " w czasie dzialania funkcji: %d",*f_a); przez wykonaniem f_wskaznik Stos funkcji f_wskaznik po wykonaniu f_wskaznik 5 _a Adres 6 Zmienna f_a typu int* Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 6

#include <stdio.h> #include <conio.h> Przekazywanie parametrów przez referencje void f_referencja(int&); int a=5; printf("\n\nwartosc zmiennej a przed wywolaniem: funkcji" " void f_referencja(int& f_a): %d",a); //5 f_referencja(a); printf("\nwartosc zmiennej a po zakonczeniu wywolanej funkcji: " " f_referencja(a): %d", a); //6 void f_referencja(int& f_a) //na stosie funkcji umieszczona jest kopia niejawnego adresu parametru //aktualnego podstawionego pod f_a; //operacje wykonywane sa na parametrze aktualnym f_a++; printf("\nwartosc zmiennej a przekazanej przez referencje" " w czasie dzialania funkcji: %d",f_a); przez wykonaniem f_referencja 5 Stos funkcji f_referencja referencja _a po wykonaniu f_referencja 6 Zmienna f_a typu int & Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 7

Zwracanie wyniku funkcji przez instrukcje return Typ_wyniku nazwa_funkcji (lista parametrow) gdzie typ_wyniku: typy predefiniowane, typy strukturalne, typy wskaznikowe i referencyjne #include <stdio.h> #include <conio.h> int f_wynik_wartosc(int); int a=5; printf("\n\nwartosc zmiennej a przed wywolaniem funkcji:" " int f_wynik_wartosc(int f_a): %d",a); a=f_wynik_wartosc(a); printf("\nwartosc zmiennej a po przypisaniu wyniku funkcji " "czyli: a=f_wynik_wartosc(a): %d",a); int f_wynik_wartosc(int f_a) //na stosie funkcji umieszczona jest kopia wartosci parametru //aktualnego podstawionego za f_a //wynik dzialania funkcji przekazany jako kopia wartosci parametru //aktualnego podstawionego pod f_a f_a++; printf("\nwartosc zmiennej a przekazanej przez wartosc" " w czasie dzialania funkcji: %d",f_a); return f_a; przez wykonaniem f_wartosc Stos funkcji f_wartosc po wykonaniu a = f_wartosc (a); 5 6 _a return 6 Zmienna f_a typu int Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 8

Przyklad Program prezentuje: // przekazywanie parametrów tablicowych do funkcji oraz porównuje ten // mechanizm z uzywaniem zmiennych globalnych w funkcjach #include <stdio.h> #include <conio.h> void f_tablica_zapis(int [], int&, int); void f_tablica_odczyt(int *, int); void f_tablica1_zapis(); char* f_podtablica(char []); //zmienne globalne, jedyne zmienne dostepne w funkcjach f_tablica1_zapis() //oraz f_tablica2_zapis() int tablica1[10], ile1; //zmienne lokalne czyli automatyczne, zasieg bloku funkcji int tablica3[9], ile3=0; printf(" \nprzekazywanie tablicy tablica1 do zapisu do funkcji:" "\n void f_tablica_zapis(int t [], int& ile, int n);" "\n wywolanej: f_tablica_zapis(tablica1,ile1,10);"); f_tablica_zapis(tablica1, ile1, 10); printf("\nprzekazanie tablicy1 do odczytu do funkcji:" "\n void f_tablica_odczyt(int t[], int ile);" "\n wywolanej: f_tablica_odczyt(tablica1,ile1);"); f_tablica_odczyt(tablica1,ile1); Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 9

printf(" \nprzekazywanie tablicy tablica3 do zapisu do funkcji:" "\n void f_tablica_zapis(int t [], int& ile, int n);" "\n wywolanej: f_tablica_zapis(tablica3,ile3,9);"); f_tablica_zapis(tablica3, ile3, 9); printf("\nprzekazanie tablicy3 do odczytu do funkcji:" "\n void f_tablica_odczyt(int t[], int ile);" "\n wywolanej: f_tablica_odczyt(tablica3, ile3);"); f_tablica_odczyt(tablica3, ile3); printf(" \nprzekazywanie tablicy tablica1 do zapisu do funkcji:" "\n void f_tablica1_zapis();"); f_tablica1_zapis(); // tylko zmienne lokalne funkcji lub zmienne globalne printf("\nprzekazanie tablicy1 do odczytu do funkcji:" "\n void f_tablica_odczyt(int t[], int ile);" "\n wywolanej: f_tablica_odczyt(tablica1,ile1);"); f_tablica_odczyt(tablica1, ile1); void f_tablica_zapis(int t [], int& ile, int n) for(int i= 0; i<n; i++) t[i]=i; //*(t+i) ile = n; void f_tablica_odczyt(int t*, int ile) for (int i=0; i<ile; i++) printf("\ntab[%d]= %d", i, t[i]); void f_tablica1_zapis() for(int i=0;i<10;i++) tablica1[i]=i*10; ile1=10; //*(tablica+i) = i*10; Autor: Zofia Kruczkiewicz, Jezyki i metody programowania C2, wyklad 6 10