Wstęp do informatyki- wykład 9 Funkcje

Podobne dokumenty
Wstęp do informatyki- wykład 11 Funkcje

Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje

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

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Wstęp do informatyki- wykład 7

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Wstęp do programowania

Wstęp do informatyki- wykład 6

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

4. Funkcje. Przykłady

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

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

Programowanie - wykład 4

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do informatyki- wykład 7

1 Podstawy c++ w pigułce.

Struktury Struktura polami struct struct struct struct

C-struktury wykład. Dorota Pylak

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

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

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

Wstęp do programowania

Język C, tablice i funkcje (laboratorium)

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

Wstęp do programowania. Wykład 1

C-struktury wykład. Dorota Pylak

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

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

7. Pętle for. Przykłady

1 Podstawy c++ w pigułce.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

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

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

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

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

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

Podstawy Programowania

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Wstęp do Programowania, laboratorium 02

Podstawy programowania w C++

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

Programowanie komputerowe. Zajęcia 2

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

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

Wstęp do programowania

Wstęp do programowania

Część 4 życie programu

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

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

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

Wstęp do programowania

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy

do instrukcja while (wyrażenie);

Programowanie proceduralne w języku C++ Funkcje

Programowanie strukturalne i obiektowe. Funkcje

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

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

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

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

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

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

Wykład 5: Klasy cz. 3

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

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Programowanie w języku C++

Język C++ zajęcia nr 2

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }

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

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Programowanie komputerowe. Zajęcia 1

Przekazywanie argumentów wskaźniki

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Lab 9 Podstawy Programowania

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Wstęp do Informatyki

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

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

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

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Transkrypt:

1 Wstęp do informatyki- wykład 9 Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum C++11, Helion, 2017 B. Stroustrup, Język C++. Kompendium wiedzy. Wydanie IV, Helion, 2014 S. B. Lippman, J. Lajoie, Podstawy języka C++, WNT, Warszawa 2003.

Instrukcje iteracyjne - pętla while 2

Pętla do...while... 3

Pętla for 4

Funkcje - wstęp Funkcje (podprogramy) - są definicjami instrukcji, które na podstawie danych wejściowych (argumentów) dostarczają w miejscu ich użycia (wywołania) wartości określonego typu. Funkcje są więc sposobem na realizację tego samego czy podobnego zadania wielokrotnie, bez potrzeby wielokrotnego powtarzania w naszym kodzie tych samych sekwencji instrukcji. Jeśli np. napiszemy funkcję obliczającą pole koła na podstawie zadanego promienia to tak, jakbyśmy język programowania wyposażyli w nową instrukcję umiejącą właśnie to obliczać. Od tej pory ile razy w programie potrzebujemy obliczyć pole koła wywołujemy naszą funkcję. 5

Funkcje - wstęp Funkcję wywołuje się przez podanie jej nazwy i umieszczonych w nawiasie argumentów. Wywołanie - użycie funkcji w tekście programu musi być leksykalnie poprzedzone jej definicją lub przynajmniej deklaracją, tj. definicja lub deklaracja funkcji musi wystąpić w tekście programu wcześniej niż jej jakiekolwiek użycie. 6

Funkcje deklaracja, definicja i wywołanie Prosty przykładowy program zawierający funkcję: #include < iostream> using namespace std; int suma (int x, int y); //deklaracja funkcji int main() int a = 10, b = 20; int c = suma (a, b); //wywołanie funkcji cout << c; int suma (int x, int y) //definicja funkcji return x + y; //funkcja zwraca sumę argumentów 7

Funkcje deklaracja, definicja i wywołanie Funkcja ma swoją nazwę suma, która ją identyfikuje. Podobnie jak dla innych nazw występujących w programie przed pierwszym odwołaniem się do nazwy wymagana jest jej deklaracja. Deklaracja taka mówi kompilatorowi: suma jest funkcją wywoływaną z dwoma argumentami typu int, a zwracającą jako rezultat wartość typu int. Przed odwołaniem się do nazwy wymagana jest deklaracja, ale niekoniecznie od razu definicja. Sama funkcja może być zdefiniowana później, nawet w zupełnie innym pliku. Definicja zawiera treść funkcji ujętą w tj. wszystkie instrukcje wykonywane w ramach tej funkcji ( tzw. ciało funkcji) Wywołanie funkcji to po prostu napisanie jej nazwy łącznie z nawiasem, gdzie znajdują się argumenty przesyłane do funkcji. 8

9 Funkcje definiowanie funkcji Funkcje można podzielić na dwie grupy: niezwracające wartości(bezrezultatowe) i zwracające wartość(rezultatowe). Funkcje, które nie zwracają wartości są typu pustego void (pusty, próżny) i zapisujemy je następująco: void nazwafunkcji(listaparametrów) //nagłówek f-cji instrukcje //treść f-cji return; //opcjonalnie listaparametrów określa liczbę i typy parametrów przekazywanych funkcji Opcjonalna instrukcja return; oznacza koniec funkcji, jeśli jej brak funkcja kończy się tam, gdzie zamykający ją nawias klamrowy.

10 Funkcje definiowanie funkcji funkcje typu void Funkcji typu void używa się m.in. w przypadku, gdy zadaniem funkcji jest wyświetlenie - prezentacja jakichś informacji, np. funkcja pokazująca napis "Czesc! " n razy: void powitanie(int n)//brak zwracanej wartości for(int i = 0; i < n; i++) cout << "Czesc! "; cout << endl; return; //opcjonalnie Funkcja spodziewa się jednej wartości typu int. Dla parametru n >0 wyświetli n razy napis "Czesc! ", dla n<=0 nie robi nic.

Funkcje wywołanie funkcji funkcje typu void Wywołanie funkcji typu void: Funkcje typu void wywołujemy w osobnej linii używając jej nazwy i podając parametry, a całość kończąc średnikiem. #include<iostream> using namespace std; void powitanie(int n); //deklaracja funkcji int main() powitanie(5); //instrukcja wywołania funkcji //na konsoli:czesc! Czesc! Czesc! Czesc! Czesc! void powitanie(int n)//definicja funkcji for(int i = 0; i < n; i++) cout << "Czesc! "; cout << endl; 11

Definiowanie funkcji funkcje zwracające wartość Jeśli typem zwracanym nie jest void, to funkcję nazywamy funkcją rezultatową, funkcje takie generują wartość zwracaną do funkcji ją wywołującej, np. funkcja sqrt(9.0) zwraca 3,0. Ogólna postać definicji takiej funkcji: nazwatypu nazwafunkcji(listaparametrów) instrukcje; return wartość; //wartość jest rzutowana //na typ nazwatypu Funkcje zwracające wartość muszą mieć instrukcję return z wartością, która ma być zwrócona do funkcji wywołującej. Sama zwracana wartość może być stałą, zmienną lub wyrażeniem. Typ tej wartości musi dać się rzutować (konwertować) na typ nazwatypu, np. int na double. Następnie funkcja zwraca tak skonwertowaną wartość. 12

Definiowanie funkcji funkcje zwracające wartość Nagłówek funkcji: nazwatypu nazwafunkcji(listaparametrów) Typ wartości zwracanej (nazwatypu): W C++ funkcja nie może zwracać tablicy. Wszystko inne jest dopuszczalne - liczby całkowite, liczby zmiennoprzecinkowe (czyli typy wbudowane jak int, char, double...), wskaźniki (w szczególności wskaźnik może wskazywać na tablicę), a nawet struktury i klasy (typ zdefiniowany przez użytkownika). Typ wartości zwracanej zwany jest zwykle typem funkcji. Nazwa (nazwafunkcji): Nazwa może być dowolna, byle nie kolidowała z którymś ze słów kluczowych, składała się tylko z liter, cyfr i znaków podkreślenia. Nie może jednak zaczynać się od cyfry. 13

14 Definiowanie funkcji funkcje zwracające wartość Lista parametrów formalnych(listaparametrów). Lista ta jest ujętą w okrągłe nawiasy listą oddzielonych przecinkami deklaracji pojedynczych parametrów funkcji w postaci (typ1 nazwa1, typ2 nazwa2). Nie wolno stosować deklaracji zbiorczych: (typ nazwa1, nazwa2). Nazwy wszystkich parametrów muszą być różne. Lista parametrów może być pusta; obejmujących ją nawiasów pominąć jednak nie można. Jeśli lista parametrów jest pusta, to można zaznaczyć to przez wpisanie wewnątrz nawiasów słowa kluczowego void. Nie jest to jednak konieczne.

15 Definiowanie funkcji funkcje zwracające wartość Przykład: funkcja obliczająca sześcian wartości double: double cube(double x) return x*x*x; //wartość typu double W instrukcji return użyto wyrażenia. Funkcja przy jej wywołaniu oblicza wartość tego wyrażenia i zwraca ją. Funkcje zwracają wartość w miejsce wywołania, a wartość ta może być potem przypisana zmiennej, wyświetlona, itp. Zatem wyrażenie będące wywołaniem tej funkcji samo w sobie ma wartość.

Definiowanie funkcji funkcje zwracające wartość #include<iostream> using namespace std; double cube(double x); //prototyp- deklaracja funkcji int main() double q = cube(1.2); //wywołanie funkcji double side; cout << " podaj bok :"; cin >> side; cout << "Kostka o boku "<< side<< " ma pojemnosc " << cube(side) <<" cm3" <<endl;//2 wywołanie double cube(double x) //definicja funkcji return x*x*x; 16

Definiowanie funkcji funkcje zwracające wartość Funkcja kończy swoje działanie po wykonaniu instrukcji return. Jeśli funkcja ma więcej takich instrukcji np. w alternatywnych ścieżkach if else to kończy swoje działanie po wykonaniu pierwszej z nich. Np. poniższe else jest zbędne, ale ułatwia zrozumienie treści funkcji: int bigger(int a, int b) if(a>b) return a; else return b; /* krótsza wersja: if(a>b) return a; return b; */ 17

Deklaracja funkcji (prototyp) Kompilatorowi nie jest potrzebna definicja funkcji, to znaczy nie musi wiedzieć, co funkcja robi: musi tylko wiedzieć, ile i jakie ma parametry i jaki jest jej typ zwracany. Do tego wystarczy prototyp funkcji podany w deklaracji. Deklaracja ma formę nagłówka funkcji, po którym następuje średnik zamiast ciała (treści) funkcji. Najprostszym sposobem uzyskania prototypu jest skopiowanie nagłówka funkcji z jej definicji i dodanie średnika: double cube(double x); //prototyp f-cji cube Jednak prototyp funkcji nie musi mieć nazw zmiennych wystarczy lista typów: int bigger(int, int ); //prototyp f-cji bigger W prototypach nazwy zmiennych można podawać lub nie, ponadto nazwy użyte w definicji nie muszą być takie same. 18

Parametry funkcji i przekazywanie przez wartość Zajmijmy się teraz sposobem przesyłania argumentów do funkcji. Najpierw jednak sprawa nazewnictwa. //definicja double cube(double x) return x*x*x; //wartość typu double nazwy które widzimy w pierwszej linijce definicji funkcji są to tzw. argumenty formalne funkcji. Czasem zwane parametrami formalnymi. 19

Parametry funkcji i przekazywanie przez wartość int main() double q = cube(3);//wywołanie funkcji w main cout << q << endl; To natomiast, co pojawia się w nawiasie w momencie wywoływania tej funkcji czyli w naszym przypadku 3 to tak zwane argumenty (parametry) aktualne. Czyli takie argumenty, z którymi aktualnie funkcja ma wykonać pracę. Często mówi się prościej: argumenty wywołania funkcji bo z tymi argumentami funkcję wywołujemy. W standardzie C++ używa się słowa argument dla określenia parametrów aktualnych, a słowa parametr dla param. formalnych. 20

Parametry funkcji i przekazywanie przez wartość double cube(double x); //prototyp C++ normalnie przekazuje parametry do funkcji przez wartość, oznacza to, że jeśli do funkcji przekazywana jest liczba, to tworzona jest nowa zmienna. Argumenty przesłane do funkcji są zatem tylko kopiami. Jakiekolwiek działanie na nich nie dotyczy oryginału. double side = 5; double vol = cube(side); Kiedy funkcja cube jest wywoływana tworzona jest nowa zmienna x typu double inicjalizowana wartością 5, cube() działa na kopii side, a nie na oryginale. 21

Parametry funkcji i przekazywanie przez wartość - przykład void zwieksz(int formalny) formalny += 1000; // zwiekszenie liczby o 1000 cout << "W funkcji modyfikuje arg formalny\n\t" << " i teraz arg formalny = "<< formalny << endl; Jak widać, w tej funkcji zwiększa się wartość parametru formalnego funkcji. Funkcję tę wywołujemy na przykład w takim fragmencie programu: int main() int aktu = 2; cout << "Przed wywolaniem, aktu = " << aktu << endl; zwieksz(aktu); cout << "Po wywolaniu, aktu = " << aktu << endl; 22

Parametry funkcji i przekazywanie przez wartość Jeżeli wykonamy taki fragment programu, to otrzymamy: Przed wywolaniem, aktu = 2 W funkcji modyfikuje arg formalny i teraz arg formalny = 1002 Po wywolaniu, aktu = 2 Do funkcji przesyłamy tylko wartość liczbową zmiennej aktu (czyli argumentu aktualnego). Wartość ta służy do inicjalizacji parametru formalnego, czyli zmiennej lokalnej tworzonej przez funkcję na stosie. Jest to więc jakby zrobienie kopii w obrębie funkcji. Funkcja pracuje na tej kopii. Czyli w naszym przykładzie dodanie 1000 nie nastąpiło do komórki pamięci, gdzie tkwi aktu, ale do tej zmiennej lokalnej na stosie, gdzie mieści się kopia (o nazwie formalny). Po opuszczeniu funkcji ten fragment stosu jest niszczony, znika więc też kopia. 23

Parametry funkcji i przekazywanie przez wartość Ponieważ przy przekazywaniu parametrów przez wartość do funkcji przesyłamy tylko wartość liczbową argumentu aktualnego, to przy wywołaniu funkcji możemy w miejsce argumentów podstawiać: zainicjalizowane wcześniej zmienne albo stałe, lub wyrażenia, np.: double q = cube(1.2); //wywołanie funkcji double side = 4; cout << cube(side); 24

25 Parametry funkcji i przekazywanie przez wartość - przykład //f-cja oblicza ilość cyfr danej liczby całkowitej int ilecyfr(int n) n = abs(n); int ile = 0; //licznik cyfr liczby //do while bo każda liczba ma przynajmniej 1 cyfrę do ile++; //zwiekszamy licznik n /= 10; //pozbywamy się policzonej cyfry while(n! = 0); return ile;

Parametry funkcji i przekazywanie przez wartość - przykład int main() cout<<"liczba 834 ma "<< ilecyfr(834) <<" cyfr "<< endl; int liczba; cout << "podaj liczbe calkowita "; cin >> liczba; cout <<"liczba "<< liczba <<" ma " << ilecyfr(liczba) <<" cyfr "<< endl; 26