Wykład 3.
Transkrypt
Wykład 3.
Wstęp do Informatyki Program, proces tworzenia programu Środowisko programistyczne Języki programowania Program - definicje Program jest przekładem problemu użytkownika na język maszyny Niklaus Wirth: "Program stanowi skonkretyzowane sformułowanie abstrakcyjnych algorytmów na podstawie określonej struktury danych" 2 Program Program jest wykonywany przez komputer, a dokładniej przez mikroprocesor. Wykonywany program znajduje się w pamięci operacyjnej. Programy w komputerze są zapisane w pamięci masowej w postaci plików. program 3 Program Program jest ciągiem instrukcji – poleceń dla mikroprocesora Instrukcje są zazwyczaj wykonywane w kolejności ich zapisu w pamięci (jeśli nie ma skoków) Pamięć µP 4 Umiejętność programowania Programista powinien cechować się umiejętnością algorytmicznego postawienia zadania i rozwiązania go za pomocą mechanizmów dostępnych w danym języku programowania 5 Proces tworzenia programu Problem Projektowanie programu Czasochłonność poszczególnych faz: 33% Kodowanie 17% Testowanie 50% Jest to proces wieloetapowy i iteracyjny Program 6 Projektowanie programu Projektowanie programu jest procesem algorytmizacji problemu – sprowadzenia problemu do zadania w postaci nadającej się do oprogramowania w wybranym języku programowania 7 Algorytm Zbiór reguł pozwalających mechanicznie wykonać czynności, składające się na realizację wybranego zadania W programowaniu algorytm jest rozkładem zadania obliczeniowego na operacje elementarne z punktu widzenia danego języka programowania 8 Algorytmizacja problemu Problem Zdefiniowanie zadania Wybór metody rozwiązania Podział na czynności elementarne Zapis (specyfikacja) algorytmu Kodowanie 9 Techniki specyfikacji algorytmu Opis słowny Zapis matematyczny Pseudokodowanie Prezentacja tabelaryczna Prezentacja graficzna - Schemat blokowy Strukturogram 10 Elementy składowe schematów blokowych – bloki funkcjonalne Początek lub koniec programu Blok wprowadzania lub wyprowadzania danych Blok przetwarzania danych Rozgałęzienie ścieżki programu START STOP 11 Reguły tworzenia schematów blokowych Poszczególne operacje są opisywane wewnątrz bloków Wprowadź START x, y, z Ścieżka programu jest reprezentowana strzałkami łączącymi bloki Rozgałęzienie programu następuje w wyniku sprawdzenia prawdziwości wybranego wyrażenia Nie Czy x>2? Tak Schematy można przenosić na następną stronę a a 12 Przykład schematu blokowego - obliczanie obwodu trójkąta START Wprowadź boki: a, b, c Czy a+b<c? Tak Nie Czy a+c<b? Tak Pisz: "nie można zbudować trójkąta" Nie Czy b+c<a? Nie Tak Pisz: „Obwód=",O O=a+b+c STOP 13 Kodowanie •Kodowanie algorytmu polega na jego zapisie w formie zrozumiałej dla komputera (programu tłumaczącego na ciąg instrukcji) •Kodowanie wymaga znajomości wybranego języka programowania Kodowanie jest zazwyczaj realizowane z użyciem komputera, na który jest tworzony program. (W przeszłości stosowano specjalne maszyny do „pisania” programów) Źródło: http://pl.wikipedia.org/ 14 Język programowania •Język programowania pozwala na zakodowanie utworzonego algorytmu •Język programowania pozwala formalnie opisać realizowane zadanie •Język programowania jest zrozumiały dla maszyny (komputera) lub programu tłumaczącego utworzony zapis na kod zrozumiały dla maszyny 15 Język programowania – definicje elementów składowych języka •Alfabet – zbiór liter, cyfr i znaków specjalnych, wykorzystywanych podczas kodowania programu •Składnia – zbiór reguł łączenia ze sobą znaków w łańcuchy symboli •Semantyka – znaczenie tworzonych łańcuchów, reguły rozumienia utworzonego zapisu 16 Środowisko programowania •Środowisko sprzętowe – komputer •Środowisko programistyczne: - system operacyjny - edytor - kompilator danego języka - konsolidator (linker) - debugger Integrated Development Environment (IDE) 17 Klasyfikacja języków programowania Język wewnętrzny (maszynowy) Język symboliczny (asembler) Języki symboliczne wysokiego poziomu: - liniowe - proceduralne (strukturalne) - obiektowe - inne 18 Język wewnętrzny Język wewnętrzny (maszynowy) jest definiowany operacjami realizowanymi przez mikroprocesor Lista instrukcji jest zbiorem wszystkich operacji wykonywanych przez mikroprocesor Odpowiednio uporządkowany ciąg instrukcji stanowi program – kod maszynowy 19 Język symboliczny - asembler Asemblery są językami powstałymi na bazie języka maszynowego danego mikroprocesora przez zastąpienie kodów instrukcji nazwami symbolicznymi – mnemonikami. Asembler jest językiem niskiego poziomu, jedno polecenie asemblera odpowiada zazwyczaj jednemu rozkazowi mikroprocesora 20 Języki wysokiego poziomu W językach wysokiego poziomu instrukcje dla procesora zastąpiono bardziej złożonymi poleceniami, co zwiększyło zwartość i czytelność kodu programu Pojedyncze polecenie języka wysokiego poziomu jest tłumaczone na ciąg instrukcji dla procesora przez kompilator danego języka 21 Przykład tłumaczenia kodu w języku C na instrukcje mikroprocesora if(i<LED8SEGDIGITS) 9180007B LDS R24,0x007B 3084 CPI R24,0x04 F458 BRCC PC+0x0C timecounter--; 91800078 LDS R24,0x0078 91900079 LDS R25,0x0079 9701 SBIW R24,0x01 93900079 STS 0x0079,R25 93800078 STS 0x0078,R24 ;Load direct from data space ;Compare with immediate ;Branch if carry cleared ;Load direct from data space ;Load direct from data space ;Subtract immediate from word ;Store direct to data space ;Store direct to data space 22 Języki programowania liniowego Pozwalają na pisanie kodu programu w postaci pojedynczego bloku, bez zastosowania procedur i funkcji. Definiują jedynie zmienne globalne. Wykorzystują instrukcję skoku (goto) do przenoszenia sterowania. Przykład: BASIC Program tłumaczący był wbudowywany do 8-bitowych mikrokomputerów osobistych. Źródło: http://pl.wikipedia.org/ 23 Języki strukturalne i proceduralne Języki strukturalne pozwalają tworzyć programy składające się z jednolitych bloków, bez konieczności stosowania instrukcji skoku Języki proceduralne zakładają tworzenie programu w postaci tzw. programu głównego i zbioru procedur lub funkcji, które mogą być wielokrotnie wywoływane poleceniami w programie głównym lub innych procedurach Języki proceduralne są jednocześnie językami strukturalnymi Przykłady języków proceduralnych: Fortran, Pascal, Modula, C, Ada 24 Języki strukturalne i proceduralne - cechy Ukierunkowanie na problem a nie na procesor Programy czytelne dla człowieka Całkowite operowanie na nazwach symbolicznych Stosowanie uogólnionych nazw operacji 25 Języki zorientowane obiektowo (obiektowe) Są to języki pozwalające programiście skupić uwagę na rozwiązywanym problemie, bez konieczności posiadania dogłębnej wiedzy o działaniu maszyny wykonującej program. Języki obiektowe separują programistę od sprzętu przez stosowanie abstrakcyjnych obiektów, go reprezentujących. Przykłady języków obiektowych: SMALLTALK, C++, Java 26 Języki obiektowe - główne założenia programowania obiektowego Wszystko jest obiektem Program jest zbiorem obiektów przekazujących sobie informację za pomocą komunikatów Każdy obiekt posiada własną pamięć Każdy obiekt posiada swój typ (klasę) Wszystkie obiekty określonego typu mogą odbierać te same komunikaty 27 Inne języki • Języki programowania wizualnego VPL – budowanie aplikacji z elementów graficznych (Prograph, AppWare, Simulink) • Języki obiektowe czwartej generacji 4GL – pozwalają na pisanie kodu w kilku językach i opisania zadania bardzo prostym kodem (SQL, Delphi, FOCUS, NATURAL) Ciągle powstają zarówno nowe języki jak i środowiska wspomagające programowanie. 28 Ewolucja języków programowania Nowe języki powstają na bazie wcześniej opracowanych. Rozszerzają ich funkcjonalność i zakres zastosowań. Źródło: http://pl.wikipedia.org/ 29 Programy tłumaczące - translatory Interpretery – tłumaczą na bieżąco polecenia programu na kod maszynowy podczas wykonywania programu (łatwość interakcyjnego modyfikowania programu) Kompilatory – tłumaczą cały program na kod maszynowy (duża szybkość wykonania programu) 30 Zastosowanie interpreterów i kompilatorów Interpretery – Basic, PHP, Javascript,… Kompilatory – Fortran, Pascal, C, C++,… Programy w niektórych językach nadają się dobrze zarówno do interpretacji jak i kompilacji. 31 Języki programowania dedykowane do szczególnych zastosowań Języki do obsługi baz danych – SQL, Oracle, Ingres Języki sztucznej inteligencji – LISP Języki opisu stron WWW – HTML Języki programowania dokumentów - TEX Języki do modelowania trójwymiarowego – VRML Języki modelowania matematycznego - MATLAB Języki symulacyjne – SIMULINK 32