Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
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
Programowanie I Rekurencja.
Języki programowania C++
Funkcje c.d. Strukturalność. Algorytmy. Ćwiczenia przed kolokwium.
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
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.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
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
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Kurs Pascala – spis treści
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Java – programowanie obiektowe
Wstęp do interpretacji algorytmów
Podprogramy.
Podstawy programowania
Podstawy programowania II
Podstawy programowania
Zbiór do posortowania mieści się w pamięci
Podstawy programowania
Programowanie strukturalne i obiektowe
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Podstawy programowania. Język C i C++– podstawy Temat: 1
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
PHP: warunki, pętle, switch, break, continue
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Podstawy programowania w języku C i C++
Programowanie strukturalne i obiektowe
Andrzej Repak Nr albumu
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Podstawy informatyki 2013/2014
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Podstawy języka Instrukcje - wprowadzenie
ZAPIS BLOKOWY ALGORYTMÓW
Funkcje w C++ Funkcja – wydzielony fragment kodu użyty w programie (raz lub więcej razy) spełniający określone zadanie, np. obliczenie średniej ocen.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Wstęp do interpretacji algorytmów
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Zmienne typy danych w VBA. MS Excel – typy danych w języku programowania VBA.
Wskaźniki Elżbieta Labocha.
Haskell Składnia funkcji.
Zapis prezentacji:

Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015

Paradygmat programowania proceduralnego paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje. paradygmatprogramowaniaprocedury paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki z wykorzystaniem struktur kontrolnych w postaci instrukcji wyboru i pętli. paradygmat programowaniakodu źródłowegoprogramu

Przed programowaniem proceduralnym Program wykonywał się od początku do końca, linia po linii, instrukcja po instrukcji Zaburzanie/przeskakiwanie kolejności mogło występić w przypadku: – Instrukcji warunkowej (if) – Pętli – Instrukcji skosku (goto) Zwłaszcza instrukcję skoku powodowały powstawanie tzw. spaghetti code

Elementy programu Sekwencje Instrukcje wyboru Iteracje Bloki Podprogramy (brak instrukcji goto, która jest „zabroniona”)

Twierdzenie Böhma i Jacopiniego Dowolny program (zawierający instrukcję skoku) da się znormalizować do odpowiadającego mu programu zbudowanego z podstawowych struktur (bez instrukcji skoku)

Instrukcje spoza paradygmatu Ze względu na wygodę, często używa się instrukcji, które są zakamuflowanymi instrukcjami skoku, tzw. instrukcje wczesnego wyjścia: – Return – Break – Continue W zaawansowanych programach używa się też obsługi wyjątków

Przykład spaghetti code (Basic) 10 INPUT count 20 LET steps = count 30 LET bbk = 0 40 LET bk = 1 50 IF count < 1 THEN GOTO LET k = bbk + bk 70 LET bbk = bk 80 LET bk = k 90 LET count = count PRINT "Wyraz nr "; steps - count; "ciagu Fibonacciego wynosi: "; k 110 IF count > 0 THEN GOTO END

To samo w C scanf ("%d",&steps); for (count = 0; count < steps; count++) { int bbk = 0, bk = 1; int k = bbk + bk; bbk = bk; bk = k; printf ("Wyraz nr %d ciagu Fibonacciego wynosi: %d\n", steps - count,k); }

Bloki Ciąg instrukcji można zgrupować w blok Blok jest traktowany jako jedna instrukcja Używa się ich najczęściej po instrucjach warunkowych, czy w pętlach, aby wykonać więcej niż jedno polecenie Bloki w C/C++ rozpoczynają się od znaku { a kończą znakiem }

Procedury Procedura to inaczej podprogram Wydzielony fragment kodu, który wykonuje pewne operacje Procedury stosuje się, aby uprościć kod programu, zwiększyć jego czytelność, lub aby mieć możliwość wielokrotnego (z różnych miejsc w programie) wywoływania tych samych poleceń Jest to zamiana ciągu instrukcji w jedno polecenie

Funkcje Funkcja to inaczej podprogram zwracający wynik procedury, które oprócz wykonywania pewnych operacji zwracają także wynik swojego działania (operują na wejściu i wyjściu, jak algorytm) Funkcje stosuje się, aby uprościć kod programu, zwiększyć jego czytelność, lub aby mieć możliwość wielokrotnego (z różnych miejsc w programie) wykonywania tych samych obliczeń Funkcje charakteryzują się tym, że zawsze muszą zwrócić pewien wynik, czyli wartość zmiennej określonego typu Jest to zamiana ciągu instrukcji w jedno polecenie Zwracaną wartość funkcji można wykorzystywać jak normalną zmienną, za wyjątkiem przypisywania jej wartości.

Procedury i funkcje w języku C/C++ W języku C/C++ w rzeczywistości nie występują procedury, są tylko funkcje Żeby uzyskać procedurę, trzeba stworzyć funkcję zwracającą typ pusty (void, czyli nic) Funkcja może mieć dowolną nazwę, która nie jest słowem kluczowym języka C/C++, składa się z liter, cyfr i znaku podkreślenia oraz nie zaczyna się od cyfry.

Struktura funkcji w C/C++ zwracany_typ nazwa(parametry) { operacje; return wartość; } zwracany_typ to nazwa typu, który będzie miała zwracana wartość (wyjście) nazwa to nazwa funkcji Po nazwie w nawiasie występują parametry funkcji (wejście)

Struktura funkcji w C/C++ Lista parametrów może być pusta, wówczas należy umieścić nawias zamykający zaraz po otwierającym Parametry to umieszczone po przecinku typy oraz nazwy zmiennych, określane tak samo jak podczas definicji zmiennych Podczas wywoływania funkcji parametry muszą zgadzać się z tymi zadeklarowanymi Każda funkcja powinna zawierać polecenie return. Zwraca ono wartość podaną po spacji oraz kończy działanie funkcji (przerywa ją, nawet jeśli później występują jakieś dodatkowe polecenia) Każda funkcja (i procedura) musi zostać zadeklarowana zanim zostanie użyta. Oznacza to, że deklaracja funkcji w kodzie musi znaleźć się wcześniej (wyżej) niż miejsce, w którym jest ona używana

Przykład przykład prostej funkcji wyznaczającej mniejszą z dwóch liczb całkowitych int minimum(int a, int b) { if (a < b) return a; else return b; }

Typ void Jak już zostało wspomniane na poprzednim wykładzie, w języku C/C++ występuje tzw. typ pusty, czyli void Zmienna tego typu nie może przyjmować żadnych wartości Jest ona stosowana do deklaracji procedur, czyli funkcji, które nie zwracają żadnej wartości W przypadku procedur, czyli funkcji zwracających zmienną typu void, w kodzie procedury nie powinno występować słowo return z wartością, lecz bez niej. W takim przypadku kończy ono jedynie działanie procedury, nie zwracając żadnego wyniku Słowa void można również użyć do oznaczenia pustej listy parametrów funkcji, np. int funkcja(void);

Zmienne globalne/lokalne Wszystkie zmienne, które zostały zadeklarowane wewnątrz ciała funkcji lub wewnątrz innego bloku, nazywane są zmiennymi lokalnymi Zmienne globalne to takie zmienne, które są zadeklarowane poza wszystkimi blokami kodu w programie

Zmienne lokalne Czas życia takich zmiennych jest tak długi, jak wykonywanie poleceń z tego bloku lub funkcji Zmienne „umierają” razem z blokiem lub funkcją (czyli przy klamrze } oznaczającej miejsce, w którym była zadeklarowana) Wartości tych zmiennych są odkładane na stosie systemowym

Zmienne globalne zmienne dostępne są zawsze z każdego miejsca w programie, a zmiana ich wartości wprowadzona w jednym miejscu może mieć wpływ na działanie programu w zupełnie innym miejcu, gdzie wartość ta również jest wykorzystywana Zmienne „umierają” dopiero po zakończeniu działania programu Wartości tych zmiennych są odkładane na stercie programu Należy unikać używania zmiennych globalnych

Przykład int x; //zmienna globalna void pomnoz_x_przez(int a) { x *= a; // a jest zmienną lokalną } int main() { x = 2; int a = 5; // zmienna lokalna pomnoz_x_przez(3); printf("%d",x); printf("%d",a); return 0; }

Rekurencja Funkcja rekurencyjna to funkcja, która wywołuje samą siebie Oprócz takiego wywołania funkcja rekurencyjna musi zawierać warunek stopu, dzięki któremu nie będzie wykonywana w nieskończoność

Przykład Funkcja rekurencyjna obliczającą wartości wyrazów ciągu Fibonacciego, określonego wzorami: int F(int n) { if (n==0) return 0; if (n==1) return 1; return F(n-1)+F(n-2); }

Biblioteki zewnętrzne Niemal wszystkie instrukcje w języku C/C++ są funkcjami, które ktoś wcześniej napisał Większość używanych funkcji pochodzi z bibliotek zewnętrznych, które importujemy do programu poprzez operację #include (zgodnie z tym co było omawiane na poprzednim wykładzie)

Wskaźniki do funkcji Podobnie jak nazwa tablicy jest wskaźnikiem do pierwszego elementu tej tablicy, nazwa funkcji jest wskaźnikiem do funkcji Można zadeklarować zmienną wskaźnikową wskazującą na funkcję i wywołać tę funkcję za pomocą tej zmiennej

Wskaźniki do funkcji w C/C++ Określenie typu takiego wskaźnika polega na podaniu typu argumentów funkcji oraz jej wyniku Schemat: typ_zwracany (* nazwa)(lista_typów_parametrów);

Przykład Poniższy kod tworzy wskaźnik do funkcji przyjmującej jeden parametr całkowity i zwracającej wynik całkowity. Następnie pod ten wskaźnik podstawiona jest funkcja obliczająca wartość bezwzględną liczby int (*funkcja)(int); funkcja=abs; int x; scanf("%d",&x); printf("%d",funkcja(x));

Przykład zastosowania Przykładem zastosowania wskaźników do funkcji może być sortowanie tablicy. W zależności od tego, jakiego typu elementy znajdują się w tablicy, powinniśmy użyć różnych funkcji porównujących te elementy. Do sortowania danych można wykorzystać znajdującą się w bibliotece stdlib.h funkcję qsort o następującej składni: void qsort(void *tab, size_t num, size_t size, int (*comparator)(const void *, const void *))

Przekazywanie argumentów funkcji przez wskaźnik i referencję Jeśli przekazujemy argumenty funkcji przez wartość, wewnątrz funkcji tworzone są ich lokalne kopie i tylko na nich wykonywane są operacje. Jeśli chcemy, aby zmiany argumentów wykonane wewnątrz funkcji były widoczne po jej zakończeniu, musimy przekazać te argumenty przez referencję lub przez wskaźnik

Przykład – funkcja swap przez referencję void swap (int &x, int &y) { int temp=x; x=y; y=temp; } int main() { int a=5, b=7; swap(a, b); return 0; }

Przykład – funkcja swap przez wskaźnik void swap (int *x, int *y) { int temp=*x; *x=*y; *y=temp; } int main() { int a=5, b=7; swap(&a, &b); return 0; }

Tablica jako argument funkcji Normalnie tablicy nie można przekazać jako parametr do funkcji Tablicę przekazujemy do funkcji przez wskaźnik Np.: void f2(int *t) { //treść funkcji f2 }

Pomoce programistyczne Bardzo ważną umiejętnością każdego informatyka jest umiejętność korzystania z wyrzukiwarek, np. google. bądź książek dla programistówgoogle. Jeśli tylko dobrze korzystamy ze źródeł – róbmy to jak najczęściej