Programowanie strukturalne i obiektowe. Funkcje

Podobne dokumenty
Programowanie - wykład 4

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

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

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

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

4. Funkcje. Przykłady

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Wstęp do programowania

Wstęp do Programowania, laboratorium 02

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

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

7. Pętle for. Przykłady

Informatyka I: Instrukcja 4.2

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).

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

Język C, tablice i funkcje (laboratorium)

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

IX. Wskaźniki.(3 godz.)

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

Warsztaty dla nauczycieli

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Rekurencja (rekursja)

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Struktury Struktura polami struct struct struct struct

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

1 Podstawy c++ w pigułce.

ALGORYTMY I STRUKTURY DANYCH

TEMAT : KLASY DZIEDZICZENIE

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

// deklaracja zmiennej typu int oraz wskaźnika na zmienne tego typu int zmienna = 10;

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

Wstęp do programowania

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

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

I. Podstawy języka C powtórka

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

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

6. Pętle while. Przykłady

5. Rekurencja. Przykłady

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Wykład 5: Klasy cz. 3

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

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

Język ludzki kod maszynowy

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

Programowanie komputerowe. Zajęcia 2

3. Instrukcje warunkowe

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

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

1 Powtórzenie wiadomości

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

Język C zajęcia nr 11. Funkcje

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

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

Programowanie komputerowe. Zajęcia 7

Wstęp do informatyki- wykład 11 Funkcje

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

Podprogramy. Procedury

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie komputerowe. Zajęcia 1

Wstęp do informatyki- wykład 9 Funkcje

do instrukcja while (wyrażenie);

Algorytmy i język C++

Lab 9 Podstawy Programowania

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

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

2 Przygotował: mgr inż. Maciej Lasota

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Część 4 życie programu

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

Programowanie komputerowe. Zajęcia 3

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

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

Zadanie 1. Napisz, skompiluj i uruchom program, który wyświetla komunikat: "Mam na imie...".

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

Programowanie obiektowe 2005/2006. Laboratorium 1. Przeciążanie funkcji

Pytania sprawdzające wiedzę z programowania C++

Liczby zespolone. x + 2 = 0.

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Laboratorium nr 10. Temat: Funkcje cz.2.

5 Przygotował: mgr inż. Maciej Lasota

Podstawy Programowania C++

Podstawy programowania funkcjonalnego

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

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

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

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

Proste programy w C++ zadania

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

1 Podstawy c++ w pigułce.

C++ wprowadzanie zmiennych

Powtórka algorytmów. Wprowadzenie do języka Java.

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

Transkrypt:

Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy razy ten sam kod tylko dla różnych danych. Domyślamy się jednak, że taki sposób nie jest najlepszy. Aby rozwiązać tego rodzaju problem skorzystamy z tzw. Funkcji. Jest to fragment kodu, który jest wpisywany raz, ale może być wykonywany wielokrotnie. Realizuje on najczęściej jakąś pojedynczą czynność przy użyciu ustalonego przez programistę algorytmu. Budowa funkcji wygląda następująco: Typ_zwracany_przez_funkcje nazwa_funkcji(lista_parametrow) Blok funkcji; return wartosc_zwracana; Omówimy teraz krótko różne możliwości budowy funkcji. Zacznijmy od tego, że już od samego początku korzystaliśmy (może nieświadomie) z jednej funkcji, a mianowicie z funkcji głównej programu main(). Funkcja ta jest przykładem funkcji, która nie zawiera żadnych parametrów i zwraca liczbę całkowitą równą 0. Może się też zdarzyć, że funkcja będzie bezparametrowa i nie będzie nic zwracać (wtedy typ zwracany takiej funkcji to void i w ciele funkcji nie ma słowa kluczowego return). Tego rodzaju funkcje najczęściej wykorzystuje się do wypisania jakiejś informacji na ekranie monitora. Przykładem takiej funkcji jest funkcja użyta w poniższym programie. Zadanie 1. Stworzyć plik funkcje1.cpp i wpisać w nim następujący kod: void pokaztekst(); pokaztekst(); void pokaztekst() cout << "Moja pierwsza funkcja\n"; następnie skompilować plik oraz uruchomić program. Na pierwszy rzut oka widać, że tego typu funkcje są mało użyteczne. Chodzi oczywiście o brak parametrów oraz zwracanej wartości. Dodając np. dwie liczby chcemy, aby obliczona przez funkcję suma była dalej wykorzystana w programie. Funkcja zatem musi zwrócić jej wartość, czyli musi być określony typ zwracany tej funkcji. Z kolei, żeby obliczyć tę sumę funkcja musi mieć dane potrzebne do jej obliczenia, czyli dwie liczby. Owe dwie liczby będą zatem przechowywane w zmiennych określonego typu zwanych parametrami funkcji. Parametry oddzielone są przecinkiem. Na podstawie tej prostej funkcji obliczającej sumę widać zatem, że parametry rozszerzają użyteczność i możliwości funkcji tak znacznie, że bez nich w zasadzie trudno wyobrazić sobie skuteczne i efektywne programowanie. Możemy powiedzieć więc, że parametry funkcji to dodatkowe dane, przekazywane do funkcji podczas jej wywołania. Pełnią rolę dodatkowych zmiennych wewnątrz funkcji i można ich używać podobnie jak innych zmiennych, Cezary Obczyński i Rafał Kamocki 1/5

zadeklarowanych w niej bezpośrednio. Różnią się one oczywiście tym, że wartości parametrów pochodzą z zewnątrz są im przypisywane podczas wywołania funkcji. Poniższy program obrazuje to, co prze chwilą powiedziałem. Zadanie 2. Stworzyć plik suma.cpp i wpisać w nim następujący kod: int dodaj(int a, int b); int liczba1 = 10; int liczba2 = 15; cout<<"suma danych liczb wynosi "<<dodaj(liczba1, liczba2)<<endl; int x; cout << "Podaj pierwsza liczbe: "; cin >> x; int y; cout << "Podaj druga liczbe: "; cin >> y; int Suma=dodaj(x,y); cout<<"suma liczb x i y wynosi "<<Suma<<endl; int dodaj(int a, int b) int suma = a + b; return suma; następnie skompilować plik oraz uruchomić program. Jeśli nie chcemy dalej w programie wykorzystywać obliczonej sumy, a interesuje nas tylko informacja ile ona wynosi, możemy napisać taki program: Zadanie 2'. Stworzyć plik suma1.cpp i wpisać w nim następujący kod: Cezary Obczyński i Rafał Kamocki 2/5

void dodaj(int a, int b); int x; cout << "Podaj pierwsza liczbe: "; cin >> x; int y; cout << "Podaj druga liczbe: "; cin >> y; dodaj(x,y); void dodaj(int a, int b) int suma = a + b; cout<<"suma wczytanych liczb wynosi "<<suma<<endl; Spójrzmy teraz na napisane wcześniej trzy programy. W każdym z nich, przed funkcją główną main(), występuje deklaracja funkcji (inaczej prototyp funkcji). Dzięki temu kompilator jest informowany, że w kodzie występuje definicja funkcji (warto zauważyć, że deklaracja funkcji zakończona jest średnikiem). Widzimy także, że na samym końcu kodu (poza programem) umieszczona jest definicja funkcji (można ją umieścić również przed funkcją main()). Wreszcie w samym programie następuje wywołanie zdefiniowanej wcześniej funkcji. Wywołanie następuje poprzez nazwę funkcji. W przypadku funkcji, która zwraca jakąś wartość jej wywołanie możemy zrealizować na dwa sposoby (patrz zadanie 2): bezpośrednio przez nazwę lub przez przypisanie jej wartości do nowej zmiennej i dalej operowanie już na tej zmiennej. Warto zwrócić uwagę jeszcze na dwa fakty. Po pierwsze parametry funkcji użyte w jej definicji są zmiennymi lokalnymi, czyli można z nich korzystać tylko w obrębie funkcji. W zadaniu 2 są to parametry a i b. W samym programie możemy używać natomiast innych zmiennych (w zadaniu 2 są to liczba1, liczba2 lub x,y), pamiętając, że przy wywoływaniu funkcji odnosimy się właśnie do tych zmiennych. Po drugie funkcja nie może zwracać danych w postaci tablicy (ale tablica może być parametrem funkcji). Oto przykład deklaracji oraz wywołania funkcji, której parametrem jest tablica: int jakas_funkcja(int a[], int wymiar_tablicy); - deklaracja int zmienna = jakas_funkcja(x,n); - wywołanie w programie, gdzie x jest tablicą, a n jej wymiarem (x i n są dane) Zadanie 3. Napisać funkcję o nazwie trojmian, która zwraca liczbę pierwiastków równania kwadratowego postaci ax^2+bx+c=0 (założyć, ze a jest różne od zera). Funkcja pobiera współczynniki a, b, c. Następnie wykorzystać ją w przykładowym programie. Cezary Obczyński i Rafał Kamocki 3/5

Zadanie 4. Napisać funkcję o nazwie potega, która oblicza n-tą potęgę liczby 2. Funkcja pobiera wykładnik n i zwraca potęgę liczby 2 o wykładniku n. Przetestować tę funkcję w przykładowym programie. Zadanie 5. Napisać funkcję pole, która pobiera trzy liczby rzeczywiste a, b, c reprezentujące długości boków trójkąta i zwraca jego pole obliczone ze wzoru Herona: sqrt(p*(p-a)*(p-b)*(p-c)), gdzie p jest połową obwodu trójkąta. Za pomocą tej funkcji obliczyć pole przykładowego trójkąta. Zadanie 6. Napisać funkcję o nazwie wybraneliczby, która pobiera dwie liczby całkowite dodatnie reprezentujące końce przedziału liczbowego i zwraca ilość liczb całkowitych z tego przedziału, które są podzielne przez 3 i 4. Zadanie 7. Napisać dwie funkcje o nazwach pole, obwod, które pobierają dwie liczby rzeczywiste reprezentujące długości boków prostokąta i zwracają odpowiednio jego pole oraz obwód. Przetestować te funkcje w przykładowym programie. Zadanie 8. Napisać funkcję silnia, która pobiera liczbę naturalną n i zwraca silnię tej liczby. Następnie wykorzystać ją w programie, który będzie obliczał wartości funkcji sin x, cos x, e^x (liczbę x podaje użytkownik) z zadaną dokładnością epsilon w oparciu o definicję tych funkcji za pomocą szeregów. Zadanie 9. Napisać funkcję norma, która pobiera 20-elementową tablicę liczb rzeczywistych reprezentującą wektor oraz jako drugi parametr liczbę całkowitą n reprezentującą wymiar tego wektora. Funkcja zwraca normę tego wektora. Następnie należy wykorzystać ową funkcję w programie, który po wczytaniu wymiaru i współrzędnych wektora znormalizuje go (wypisana zostanie za pomocą tablicy postać wektora znormalizowanego). Rekurencja Rekurencja to wywołanie funkcji wewnątrz jej definicji. Spójrzmy na przykład. double potega(int n); int wykladnik; cout<<"podaj wykladnik naturalny "; cin>>wykladnik; double P = potega(wykladnik); cout<<wykladnik<<" - potega liczby 2 wynosi "<<P<<endl; double potega(int n) Cezary Obczyński i Rafał Kamocki 4/5

if(n==0) return 1; else return 2*potega(n-1); Jeśli np. n = 4, to funkcja potega wywoła się pięć razy. Otrzymamy kolejno: potega(4) 2*potega(3) 2*(2*potega(2)) 2*(2*(2*potega(1))) 2*(2*(2*(2*potega(0)))) = 2*2*2*2*1 = 16. Zadanie 10. Napisać za pomocą rekurencji funkcję obliczającą silnię danej liczby. Zadanie 11. Napisać za pomocą rekurencji funkcję znajdującą n ty wyraz ciągu Fibonacciego postaci: a(1) = a(2) = 1; a(n) = a(n-1) + a(n-2). Przeciążanie funkcji C++ umożliwia tworzenie wielu funkcji o tej samej nazwie i o tym samym przeznaczeniu. Mechanizm ten nazywa się przeciążaniem lub przeładowaniem funkcji. Listy parametrów funkcji przeciążonych muszą się różnić od siebie albo typami parametrów, albo ich ilością, albo jednocześnie typami i ilością. Na przykład: float Suma(int,int); float Suma(double,double); float Suma(int,int,int); Najczęściej funkcji przeciążonych używa się, gdy chcemy wykonać tę samą czynność na różnych typach danych lub różnej ilości danych. float Suma(int a, int b) return a + b; float Suma(double a, double b) return a + b; float Suma(int a, int b, int c) return a + b + c; Cezary Obczyński i Rafał Kamocki 5/5