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