Wstęp do Informatyki Programowanie komputerów PC c.d. PASCAL - struktura blokowa programu. Zasięg zmiennych. Przesłanianie zmiennych

Podobne dokumenty
Wstęp do Informatyki Programowanie komputerów PC c.d.

Algorytmy i struktury danych

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Język programowania PASCAL

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wstęp do informatyki Paradygmaty programowania

Programowanie obiektowe

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

Paradygmaty Programowania dr inŝ. Cezary Bolek

Podstawy programowania wykład

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Wykład 5: Klasy cz. 3

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Algorytmy i struktury danych

Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Laboratorium Programowania Kart Elektronicznych

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy programowania. Wprowadzenie

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Podstawy Programowania Obiektowego

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Podprogramy. Procedury

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

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

Programowanie deklaratywne

Wykład 8: klasy cz. 4

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Tworzenie oprogramowania

Laboratorium Programowania Kart Elektronicznych

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Wstęp do programowania

Dziedziczenie jednobazowe, poliformizm

Język ludzki kod maszynowy

Podstawy i języki programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie obiektowe

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Podstawy programowania w języku C

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

Praktyka Programowania

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie RAD Delphi

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

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Wstęp do programowania

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

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

Programowanie w Turbo Pascal

Spis treści. 1 Java T M

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

Języki skryptowe w programie Plans

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

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Wykład 9: Polimorfizm i klasy wirtualne

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

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

Historia modeli programowania

Interpreter - EasyCompile

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Język C zajęcia nr 11. Funkcje

Materiały do laboratorium MS ACCESS BASIC

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wykład 4: Klasy i Metody

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

Ilość cyfr liczby naturalnej

Podstawy programowania.

Lab 9 Podstawy Programowania

Algorytm. a programowanie -

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Programowanie obiektowe

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Zasady Programowania Strukturalnego

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Specyfikacja zadania informatycznego nr 1

Aplikacje w środowisku VBA. Visual Basic for Aplications

Wykład 1: Wskaźniki i zmienne dynamiczne

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Programowanie obiektowe - 1.

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Wstęp do programowania

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Transkrypt:

Programowanie komputerów PC c.d. PASCAL - struktura blokowa programu Język PASCAL ma strukturę blokową, tzn. dopuszcza zagnieŝdŝanie funkcji i procedur Cezary Bolek Program główny Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki I poziomu Procedura I poziomu Procedura III poziomu II poziomu Procedura II poziomu II poziomu Zasięg zmiennych Język PASCAL ma klarowne reguły zasięgu zmiennych, związaną z jego strukturą blokową Przesłanianie zmiennych X : real; Y : real; Y zmienna OK (lokalna) Zasięg zmiennej (identyfikatora) oznacza fragment programu, w którym moŝna uŝywać tę zmienną i oznacza ona tę samą zmienną Zasięg zmiennej w PASCALU obejmuje blok, w którym tę zmienną zadeklarowano oraz wszystkie bloki w nim zagnieŝdŝone. X : real; X : real; X zmienna OK (lokalna) Jeśli zmienna lokalna ma taką samą nazwę jak zmienna w bloku zewnętrznym, to zmienna zewnętrzna jest przesłonięta przez zmienną lokalną. Na zewnątrz tego bloku nadal widoczna jest zmienna zewnętrzna. Zmienne globalne to zmienne zadeklarowane w bloku głównym programu, gdyŝ są widoczne we wszystkich blokach. X zmienna OK (globalna/lokalna) Zmienne lokalne to zmienne zadeklarowane w danym bloku, ale nie widoczne na zewnątrz tego bloku. X zmienna OK (globalna/lokalna) 1

Zasięg zmiennych a przekazywanie parametrów Program moŝe komunikować się z wywołanymi procedurami i funkcjami: poprzez parametry gdy trzeba przekazywać róŝne zmienne lub wartości, poprawia to równieŝ czytelność procedur i funkcji, gdyŝ posiadają one jasno zapisany interfejs komunikacji. poprzez zmienne globalne gdy dotyczy to zmiennych szczególnie waŝnych w obrębie całego programu lub gdy dotyczy to duŝych rozmiarowo struktur danych, ale ogólnie zmniejsza czytelność programu. Zasięgi - przykład PROGRAM scope(input,output); a,b,c : integer; PROCEDURE aa(var a,b: integer); a:=2; b:=b-1; END; PROCEDURE bb(var c: integer); c:=c+a; END; Poprawna organizacja wymiany informacji pomiędzy blokami programu jest kwestią kompromisu i stylu programowania. a:=1; aa(b,a); aa(c,b); bb(b); writeln(a, b, c); END. Jakie liczby wydrukuje ten program??? Rekurencja - przykład IDE zintegrowane środowisko programistyczne PROGRAM silnia(input,output); n: integer; s: integer; silnia jest wykorzystywana do rekurencyjnego obliczania wartości silni z n n!=n*(n-1)*(n-2)*1= n*(n-1)! Integrated Develpement Environment (IDE) edytor + syntax highlighting, bracket matching, macros kompilator debugger FUNCTION sil(x: integer): integer; IF x=0 THEN sil:=1 ELSE sil:=x*sil(x-1); END; END. write( Podaj n= ); read(n); s:=sil(n); writeln( Silnia wynosi =,s); Rekurencja polega na moŝliwości wywoływania funkcji przez samą siebie, oczywiście z innymi parametrami! Uwaga program liczy poprawnie silnię jedynie dla małych wartości n. Dlaczego? FreePascal IDE 2

Język C Konstrukcje sterujące - C Sekwencja (grupowanie): Selekcja IF-ELSE: C: 1972, Bell Laboratories, USA, Dennis Ritchie ( Język C, Brian Kerninghan Dennis Ritchie, WNT, kilka wydań od 1978r) język stworzony dla programistów, przez programistów : system UNIX zwięzła i prosta składnia szybka kompilacja i efektywny kod maszynowy zróŝnicowane i efektywne konstrukcje sterujące brak procedur: tylko funkcje operacje na wskaźnikach silny nacisk na separacje modułów: zmienne lokalne bardzo bogaty (z konieczności) zestaw procedur bibliotecznych podstawa dla współczesnych języków obiektowych: C++, Java, C# instrukcja; instrukcja; instrukcja; s1 s2 T wyr N s3 if (wyraŝenie) instrukcja1 else instrukcja2; (wyraŝenie zwraca wartość numeryczna: 0 oznacza niespełnienie warunku 0 oznacza spełnienie warunku) Selekcja + grupowanie : if (wyr) s1; s2; else s3; Konstrukcje sterujące - C Istnieją równieŝ konstrukcja typu: Cykle: while (wyraŝenie) instrukcja; do instrukcja while (wyraŝenie); for (wyr1; wyr2; wyr3) instrukcja; Selekcja wielokrotna switch (wyraŝenie) case wartość_1 : instrukcja_1; case wartość_2 : instrukcja_2; case wartość_n : instrukcja_n; Dla kaŝdej zadeklarowanej zmiennej w programie, kompilator przydziela miejsce w pamięci, gdzie przechowywana jest jej wartość np. int x=0; /* deklaracje zmiennej x o wartości 0 */ W języku C moŝna deklarować zmienne wskaźnikowe, tj. takie, których wartościami są wskazania (lokalizacja) innych obiektów w pamięci operacyjnej komputera int *w; Wskaźniki mogą wskazywać inne zmienne: w = &x; /* operator & zwraca lokalizację x */ Wskaźniki w C Pamięć (adresy) 100 101 102 103 104 105 106 107 108 109 10A Za pomocą wskaźników moŝna odwoływać się do wskazywanej zmiennej. W poniŝszych dwóch liniach wykonywana jest ta sama operacja zmiany wartości zmiennej x: 0 103 x = 2; /* przypisanie wartości 2 do zmiennej x */ *w = 2; /* operator * oznacza odwołanie do wskazywanego obiektu*/ x w 3

C - struktura programu Język C nie dopuszcza zagnieŝdŝania funkcji C - Zasięg zmiennych Język C charakteryzuje się silną hermetyzacją poszczególnych modułów programowych Program główny int X; int X,Y; X zmienna OK (lokalna) Y zmienna OK (lokalna) int Y; Y zmienna OK (lokalna) Zasięg zmiennej w C obejmuje tylko blok, w którym tę zmienną zadeklarowano. Zmienne globalne to zmienne zadeklarowane poza głównym blokiem programu Zmienne lokalne to zmienne zadeklarowane w danym bloku, ale nie widoczne na zewnątrz tego bloku. C - przekazywanie parametrów Przekazywanie parametrów moŝliwe jest tylko: przez wartość funkcja otrzymuje kopie wartości zmiennych i nie moŝe zmienić wartości oryginalnej zmiennej! PoniewaŜ istnieją zmienne typu wskaźnikowego, które teŝ mogą być przekazywane do funkcji, moŝliwe jest odwoływanie się funkcji do zmiennych z zewnątrz. Język C - podsumowanie Bardzo efektywny proces kompilacji i kod maszynowy Zwięzła składnia - efektywny zapis programu Łatwość odwoływania się do zasobów komputera Uniwersalność język tworzenia większości oprogramowania na świecie (w swojej podstawowej i obiektowej odmianie) int zero( int x) x = 0; int zero( int *x) *x = 0; Konieczność rozumienia podstaw architektury komputera Zwięzła składnia zawiły i trudny do zrozumienia program zero(a); funkcja zero nie zmienia wartości zmiennej a, w=&a; zero(w); funkcja zero zmienia (!!!) wartość zmiennej a, gdyŝ funkcja otrzymała wskaźnik (lokalizację) do tej zmiennej Bezpłatny kompilator + IDE: www.bloodshed.net 4

Programowanie proceduralne Programowanie proceduralne polega na tworzeniu programów w postaci modułowej (Pascal, C), gdzie oddzielnie deklarowane są struktury danych (proste i złoŝone) oddzielnie deklarowane są moduły programowe (funkcje, procedury) moduły programu komunikują się, przekazując sobie dane poprzez parametry podczas wywołania Programowanie proceduralne daje dobre efekty dla programów o średnim stopniu komplikacji (popularne do połowy lat 80 tych, zanim pojawiło się oprogramowanie dla środowisk graficznych). Wzrost rozmiaru programu (tysiące linii kodu programu i więcej), zwiększenie liczby struktur danych i komplikacja wzajemnych zaleŝności danych i modułów powoduje, Ŝe programowanie proceduralne staje się nieefektywne. Programowanie obiektowe Programowanie obiektowe polega na integracji struktur danych i funkcji które na nich operują. W językach obiektowych (C++, Java) deklaruje się razem struktury danych zwane obiektami i operacje, które moŝna wykonać na tych obiektach. Dzięki temu zabiegowi, programista nie musi juŝ pamiętać szczegółów stosowania wszystkich funkcji w programie i moŝe posługiwać się złoŝonymi strukturami danych. Programowanie obiektowe bardzo dobrze sprawdza się w programach, które operują na złoŝonych obiektach (np. elementy środowiska graficznego: okna, menu, przyciski, ikony, etc.). Idea obiektowości jest bliska postrzeganiu świata przez człowieka, w którym obiekty mają własne cechy i mogą wykonywać specyficzne tylko dla nich czynności: pies: kolor, waga, wiek; szczeka, biega, gryzie, konto bankowe: stan, waluta; wpłata, wypłata, odsetki, Przykład - Java class Pomieszczenie private int szer; int dlug, szer, wys; Pomieszczenie(int s, int d, int w) szer = s; dlug = d; wys = w; int podloga() return szer * dlug; Deklaracja typu danych (klasy) opisującej pomieszczenie. KaŜde pomieszczenie ma swoje dane: dlug, szer, wys oraz swoje operacje: obliczenie powierzchni podłogi i powierzchni ścian Języki skryptowe Wzrost szybkości przetwarzania komputerów powoduje coraz większą popularność nowoczesnych języków interpretowanych, ukierunkowanych na specyficzne zastosowania: przetwarzanie tekstów administracja systemami operacyjnymi organizacja wymiany informacji między aplikacjami tworzenie oprogramowania prototypowego int sciana() return 2*(szer*wys + dlug*wys); Pomieszczenie pokoj = new Pomieszczenie(3, 4, 2); Pomieszczenie kuchnia = new Pomieszczenie(2, 3, 2); int powierz; int sciany; powierz=pokoj.podloga() + kuchnia.podloga(); sciany =pokoj.sciana() + kuchnia.sciana(); deklaracja dwóch obiektów klasy Pomieszczenie odwołanie do obiektów i wykonania na nich operacji Cechy współczesnych języków skryptowych: interpretowany sposób wykonywania wysoki poziom abstrakcji danych (struktury asocjacyjne, czasem nawet brak podziału danych na typy) instrukcje bardzo wysokiego poziomu wysokospecjalizowane funkcje przetwarzania danych łatwość modyfikacji i dostosowania kodu do szybko zmieniających się wymagań niezaleŝność od systemu operacyjnego (przenośność) 5

Perl (Practical Extraction and Report Language) Perl - język ukierunkowany na wykonywanie zadań uŝytkowych które: 1) moŝna i trzeba zautomatyzować, 2) wymagają częstej modyfikacji swego działania 3) polegają na efektywnym łączeniu wyników pracy innych programów Brak konieczności deklarowania zmiennych ZłoŜone struktury danych: elastyczny dostęp, brak ograniczeń rozmiaru Bogactwo konstrukcji sterujących: if, unless, while, until, for, foreach MoŜliwości programowania proceduralnego i obiektowego Mnogość specjalizowanych funkcji bibliotecznych realizujących prosty dostęp do zaawansowanych funkcji systemu operacyjnego Dostępny dla wszystkich (popularnych) systemów operacyjnych Bezpłatny!!! Biblioteki Perla (oprócz operacji standardowych): operacje na plikach, interfejsy baz danych, zaawansowane przetwarzanie tekstu, zarządzanie procesami, archiwizacja, kompresja, szyfrowanie, przetwarzanie obrazów, programowanie sieciowe, tekstowe i graficzne interfejsy uŝytkownika, www.perl.com/perl, www.perl.org Tcl/Tk (Tool Command Language) Tcl/Tk - język ukierunkowany na wykonanie 1) aplikacji stanowiących interfejs do oprogramowania 2) aplikacji łączących wyniki działania róŝnych programów 3) prototypowych (szybkich) rozwiązań oprogramowania i interfejsów graficznych Nietypowa składnia oparta na substytucji poleceń i zmiennych Brak deklarowania zmiennych, brak typów zmiennych ZłoŜone struktury danych i bogactwo konstrukcji sterujących Mnogość specjalizowanych funkcji bibliotecznych realizujących prosty dostęp do zaawansowanych funkcji systemu operacyjnego Ukierunkowanie na tworzenie interfejsu interfejsu uŝytkownika Dostępny dla wszystkich (popularnych) systemów operacyjnych Bezpłatny!!! www.tcl.tk Tcl/Tk - porównanie Tcl/Tk - przykłady button.hello -text "Hello World" -command exit pack.hello Liczba instrukcji języka maszynowego na jedną instrukcję danego języka 1000 100 10 Tcl/Tk Assembler 1 Ŝadne Visual Basic Wymaganie deklarowania typów danych Java C++ C duŝe scale.s -from 0 -to 100 -orient horizontal -showvalue true \ -label Temperature -tickinterval 25 -length 300 \ -troughcolor red -relief raised pack.s foreach color white green red blue radiobutton.$color -text $color -variable dye -value $color pack.$color -side left.$color config -command wm title. $dye menubutton.m1 -text File -menu.m1.file menubutton.m2 -text Edit -menu.m2.help frame.l -width 150 -height 50 -bg yellow pack.l -side bottom pack.m1.m2 -side left menu.m1.file -tearoff false.m1.file add command -label New -command puts "New".m1.file add command -label Open -command puts "Open".m1.file add command -label Save -command puts "Save".m1.file add command -label Exit -command puts "Exit" menu.m2.help -tearoff false.m2.help add command -label Help -command puts "Help" 6