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

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

Algorytmy i struktury danych

Język programowania PASCAL

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

Wstęp do informatyki Paradygmaty programowania

Paradygmaty Programowania dr inŝ. Cezary Bolek

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Programowanie obiektowe

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy programowania wykład

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

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!

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

Wykład 5: Klasy cz. 3

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

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}

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytmy i struktury danych

Informatyka 1. Procedury i funkcje, struktura programu w Pascalu

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Laboratorium Programowania Kart Elektronicznych

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

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 RAD Delphi

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

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

Podprogramy. Procedury

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

Programowanie w Turbo Pascal

Programowanie deklaratywne

Wykład 8: klasy cz. 4

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

Tworzenie oprogramowania

Ilość cyfr liczby naturalnej

Laboratorium Programowania Kart Elektronicznych

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

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

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

Wstęp do programowania

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

Dziedziczenie jednobazowe, poliformizm

Język ludzki kod maszynowy

Podstawy i języki programowania

Interpreter - EasyCompile

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

Programowanie obiektowe

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

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

Podstawy programowania w języku C

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

Języki skryptowe w programie Plans

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

Praktyka Programowania

Zasady Programowania Strukturalnego

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

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

Specyfikacja zadania informatycznego nr 1

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

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

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

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

Spis treści. 1 Java T M

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

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

Programowanie obiektowe

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

Wrocław, dn. 19 kwietnia 2006 roku. Anna Kaleta Piotr Chojnacki IV rok, informatyka chemiczna Liceum Ogólnokształcące nr 10 we Wrocławiu

Język C zajęcia nr 11. Funkcje

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

Materiały do laboratorium MS ACCESS BASIC

Wykład 4: Klasy i Metody

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

Algorytmy i struktury danych

Podstawy programowania.

15. Funkcje i procedury składowane PL/SQL

Lab 9 Podstawy Programowania

Algorytm. a programowanie -

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

Pascal - wprowadzenie

Style programowania - krótki przeglad

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

Wstęp do programowania

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

Transkrypt:

Programowanie komputerów PC c.d. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki PASCAL - struktura blokowa programu Język PASCAL ma strukturę blokową, tzn. dopuszcza zagnieŝdŝanie funkcji i procedur Program główny Funkcja I poziomu Funkcja II poziomu Procedura I poziomu Procedura III poziomu Procedura II poziomu Funkcja II poziomu 1

Zasięg zmiennych Język PASCAL ma klarowne reguły zasięgu zmiennych, związaną z jego strukturą blokową VAR X : real; VAR Y : real; Y zmienna OK (lokalna) Y??? Y??? X zmienna OK (globalna/lokalna) Y??? 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. Zmienne globalne to zmienne zadeklarowane w bloku głównym programu, gdyŝ są widoczne we wszystkich blokach. Zmienne lokalne to zmienne zadeklarowane w danym bloku, ale nie widoczne na zewnątrz tego bloku. Przesłanianie zmiennych VAR X : real; VAR 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. X zmienna OK (globalna/lokalna) 2

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. Poprawna organizacja wymiany informacji pomiędzy blokami programu jest kwestią kompromisu i stylu programowania. Zasięgi - przykład PROGRAM scope(input,output); VAR a,b,c : integer; PROCEDURE aa(var a,b: integer); BEGIN a:=2; b:=b-1; END; PROCEDURE bb(var c: integer); BEGIN c:=c+a; END; BEGIN a:=1; aa(b,a); aa(c,b); bb(b); writeln(a, b, c); END. Jakie liczby wydrukuje ten program??? 3

Rekurencja - przykład PROGRAM silnia(input,output); VAR n: integer; s: integer; Funkcja silnia jest wykorzystywana do rekurencyjnego obliczania wartości silni z n n!=n*(n-1)*(n-2)*1= n*(n-1)! FUNCTION sil(x: integer): integer; BEGIN IF x=0 THEN sil:=1 ELSE sil:=x*sil(x-1); END; BEGIN 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? IDE zintegrowane środowisko programistyczne Integrated Develpement Environment (IDE) edytor + syntax highlighting, bracket matching, macros kompilator debugger FreePascal IDE 4

Język C 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# Konstrukcje sterujące - C Sekwencja (grupowanie): Selekcja IF-ELSE: instrukcja; instrukcja; instrukcja; if (wyraŝenie) instrukcja1 else instrukcja2; (wyraŝenie zwraca wartość numeryczna: 0 oznacza niespełnienie warunku 0 oznacza spełnienie warunku) s1 s2 T wyr N s3 Selekcja + grupowanie : if (wyr) s1; s2; else s3; 5

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 6

C - struktura programu Język C nie dopuszcza zagnieŝdŝania funkcji Funkcja Funkcja Program główny C - Zasięg zmiennych Język C charakteryzuje się silną hermetyzacją poszczególnych modułów programowych int X; Y??? 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. 7

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. int zero( int x) x = 0; int zero( int *x) *x = 0; 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 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) Konieczność rozumienia podstaw architektury komputera Zwięzła składnia zawiły i trudny do zrozumienia program Bezpłatny kompilator + IDE: www.bloodshed.net 8

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, 9

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 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 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 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ść) 10

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 11

Tcl/Tk - porównanie Liczba instrukcji języka maszynowego na jedną instrukcję danego języka 1000 100 10 1 Tcl/Tk Assembler Ŝadne Visual Basic Wymaganie deklarowania typów danych Java C++ C duŝe Tcl/Tk - przykłady button.hello -text "Hello World" -command exit pack.hello 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" 12