Programowanie w VBA

background image

1

Informatyka

Programowanie w VBA

Wykład 1(2)

Jerzy Duda, 2010

Jerzy Duda, WZ AGH, 2008–2010

Zakres wykładów (1)



Programowanie, j

ę

zyki programowania



definicje



historia



Definiowane j

ę

zyka formalnego



składnia a semantyka



notacja BNF, EBNF



Paradygmaty programowania



imperatywny/proceduralny



funkcyjny



obiektowy



programowanie w logice



Translatory i interpretery



kompilator, preprocesor, asembler



interpreter, maszyna wirtualna

background image

2

Jerzy Duda, WZ AGH, 2008–2010

Zakres wykładów (2)



Sposoby reprezentacji liczb



arytmetyka binarna



liczby całkowite



liczby zmiennopozycyjne



Podstawowe struktury danych



dane elementarne



dane zło

ż

one



tablice



struktury



rekordy



Nieregularne struktury danych



listy



stosy



kolejki

Jerzy Duda, WZ AGH, 2008–2010

Zakres wykładów (3)



Algorytmy



poj

ę

cie algorytmu



zło

ż

ono

ść

obliczeniowa



algorytmy iteracyjne i rekurencja



podstawowe algorytmy sortowania



wyszukiwanie binarne



drzewa



haszowanie

background image

3

Jerzy Duda, WZ AGH, 2008–2010

Zakres wykładów (4)



Programowanie obiektowe



klasy



wła

ś

ciwo

ś

ci i metody



konstruktory i destruktory



hermetyzacja



dziedziczenie



polimorfizm



modyfikatory widoczno

ś

ci



klasy abstrakcyjne



programowanie obiektowe z wykorzystaniem VBA

Jerzy Duda, WZ AGH, 2008–2010

Literatura



Algorytmy



S. Harris, J. Ross: Algorytmy. Od podstaw, Helion 2006
(Wrox)



G.T. Heineman, G. Pollice, S. Selkow: Algorytmy.
Almanach, Helion 2010



VBA



M. Lewandowski: Tworzenie makr w VBA dla Excela
2003/2007.

Ć

wiczenia, Helion 2007



J. Walkenbach: Excel 2003 PL. Programowanie w VBA.
Vademecum profesjonalisty, Helion 2004



A. Osyczka, R. Jankowski, I. Skalna, P. Krajewski:
Visual Basic dla Aplikacji, AGH Uczelniane Wydawnictwa
Naukowo-Techniczne 2006

background image

4

Jerzy Duda, WZ AGH, 2008–2010

Dlaczego warto programowa

ć

?



Programowanie



dobra zabawa



zaj

ę

cie twórcze



mo

ż

liwo

ść

wyra

ż

ania abstrakcyjnych idei w namacalnej formie



Ź

ródło pozytywnych nawyków



uwa

ż

ne czytanie



my

ś

lenie analityczne



twórcza synteza



zdolno

ść

dostrzegania szczegółów



Ka

ż

dy powinien nauczy

ć

si

ę

, jak projektowa

ć

oprogramowanie

Ź

ródło: Felleisen, Findler, Faltt,Krishnamurthi: „Projektowanie oprogramowania. Wst

ę

p do programowania i techniki komputerowej”, Helion 2003

Jerzy Duda, WZ AGH, 2008–2010

Program komputerowy (1)



Niklaus Wirth



ALGORYTMY + STRUKTURY DANYCH = PROGRAMY



Programy stanowi

ą

skonkretyzowane sformułowania abstrakcyjnych

algorytmów na podstawie okre

ś

lonej reprezentacji i struktury danych



Fundacja na rzecz Wolnej Infrastruktury Informacyjnej (FFII)



Program komputerowy oznacza sposób przetwarzania danych, które je

ś

li s

ą

poprawnie opisane, mo

ż

e by

ć

wykonywany przez komputer



Słownik PWN



Program to ci

ą

g instrukcji napisanych w j

ę

zyku zrozumiałym dla komputera



J. Barta i R. Markiewicz



Program to zestaw instrukcji (rozkazów) przeznaczonych do u

ż

ycia

bezpo

ś

rednio lub po

ś

rednio w komputerze w celu osi

ą

gni

ę

cia okre

ś

lonego

rezultatu

background image

5

Jerzy Duda, WZ AGH, 2008–2010

Program komputerowy (2)



Knuth Donald E. „Sztuka programowania”



Program to wyra

ż

enie metody obliczeniowej w j

ę

zyku

komputerowym



metoda obliczeniowa – procedura przekształcaj

ą

ca dane wej

ś

ciowe

w wynik za pomoc

ą

jednoznacznie zdefiniowanych, elementarnych

kroków



Program komputerowy – podstawowe rodzaje kodu



kod

ź

ródłowy – stanowi

ą

cy zapis w okre

ś

lonym j

ę

zyku

programowania; zrozumiały dla człowieka (dalej kompilowany lub
interpretowany)



kod wykonywalny – zrozumiały dla maszyny; gotowy do wykonania
przez maszyn

ę

(posta

ć

binarna)

Jerzy Duda, WZ AGH, 2008–2010

Programowanie komputerowe



Słownik W. Kopali

ń

skiego:



Proces sporz

ą

dzania dokładnego zestawu instrukcji potrzebnych na to, aby

komputer mógł spełni

ć

okre

ś

lone zadanie; zestaw ten obejmuje wybór (a.

wynalezienie) stosownego algorytmu, kodowanie i testowanie



Programowanie to proces projektowania, tworzenia i poprawiania kodu

ź

ródłowego programów komputerowych [Wikipedia]



Etapy tworzenia oprogramowania (in

ż

ynieria oprogramowania):



analiza wymaga

ń

systemowych



specyfikacja aplikacji



architektura systemu informatycznego



programowanie (implementacja)



kompilacja oprogramowania



testowanie oprogramowania



dokumentacja programu



integracja



piel

ę

gnacja oprogramowania

background image

6

Jerzy Duda, WZ AGH, 2008–2010

J

ę

zyk programowania



J

ę

zyk słu

żą

cy do dialogu pomi

ę

dzy programist

ą

a komputerem,

przeznaczony do opisu danych oraz algorytmów ich
przetwarzania



J

ę

zyk programowania to usystematyzowany sposób

przekazywania komputerowi polece

ń

do wykonania [wikipedia]



HOPL: system kodowania, który umo

ż

liwia stworzenie programu



Niektórzy zaw

ęż

aj

ą

to poj

ę

cie tylko do j

ę

zyków spełniaj

ą

cych

warunek tzw. kompletno

ś

ci Turinga



J

ę

zyki programowania klasyfikuje si

ę

ze wzgl

ę

du na



paradygmaty



generacj

ę



implementacj

ę

Jerzy Duda, WZ AGH, 2008–2010

Troch

ę

historii



Encyklopedia History
of Programming
Languages wylicza
8512 j

ę

zyków

programowania



Ludzko

ść

na

ś

wiecie

u

ż

ywa obecnie

ok. 6-7 tysi

ę

cy j

ę

zyków



www.99-bottles-of-beer.net
program w 1318 j

ę

zykach

Ź

ródło rysunku: http://users.skynet.be/averkeyn/computer/histlang.html

background image

7

Jerzy Duda, WZ AGH, 2008–2010

Historia j

ę

zyków (1)





1943

1943

– pierwszy j

ę

zyk Plankalkül

opracowany przez Konrada Zuse
(Bawaria); publikacja w 1948;
brak implementacji





1952

1952

– pierwszy kompilator – j

ę

zyk Autocode na komputer Mark 1

opracowany przez Alicka Glennie’a (Univ. of Manchester)

Ź

ródło kodów: "Hello, World!" in 66 Programming languages”, http://www.scribd.com/doc/2276844

R1.1(V0[:sig]) => R0
R1.2(V0[:m x sig]) => R0
0 => i | m + 1 => j
[W [ i < j -> [ R1.1(V0[i: m x sig]) => R0 | i + 1 => i ] ] ]
END
R1.3() => R0
'H';'e';'l';'l';'o';',';' ';'w';'o';'r';'l';'d';'!' => Z0[: m x sig]
R1.2(Z0) => R0
END

org 100h
start:

mov ah, 9
mov dx, hello
int 21h
mov ax, 4C00h
int 21h

hello

db 'Hello World!','$'

Assembler (Intel)

Jerzy Duda, WZ AGH, 2008–2010

Historia j

ę

zyków (2)





1954

1954

– Fortran (FORmula TRANslator system) - John Backus i inni

naukowcy z IBM; Fortran II (1958) wprowadza p

ę

tle, funkcje i

procedury





1958

1958

– LISP (LISt Processing)

– składnia nawiasowa

C Fortran: Hello, world!

PROGRAM HALLO
WRITE (*,100)
STOP

100 FORMAT ('Hello, world!')

END

;;; Common Lisp: "Hello, world!"
(defun helloworld ()

(print "Hello, world!")

)(helloworld)

background image

8

Jerzy Duda, WZ AGH, 2008–2010

Historia j

ę

zyków (3)





1960

1960

– Cobol (COmmon Business Oriented Langage) - COnference

on DAta SYsystems Language; wprowadzenie rekordów





1964

1964

– Basic (Beginner’s All-purpose Symbolic Instruction Code)

- John Kemeny i Thomas Kurtz





1970

1970

– Pascal opracowany przez

Niklausa Wirtha – programowanie
strukturalne

10 REM BASIC: "Hello, world!"
20 PRINT "Hello, world!"

program HelloWorld;
(* Pascal: Hello, world! *)
begin

WriteLn('Hello, world!');

end.

Jerzy Duda, WZ AGH, 2008–2010

Historia j

ę

zyków (4)





1972

1972

– J

ę

zyk C opracowany w 1972 r. przez Dennisa Ritchiego z

Bell Telephone Laboratories dla systemu Unix





1972

1972

– Smalltalk - pierwszy j

ę

zyk zorientowany obiektowo

(podstawy OOP Simula – 1962)





1972

1972

– PROLOG - programowanie w logice (Francja)





pocz

pocz

ą

ą

tek lat 1970

tek lat 1970

– SQL opracowany w IBM SEQUEL (Structured

English Query Language)

/* Hello world */
#include <stdio.h>

int main(void)
{

printf("Hello, world!\n");
return 0;

}

% Prolog: "Hello, world!"
?- write('Hello, world!') , nl .

-- SQL: "Hello, world!"
SELECT 'Hello, world!' AS message;

background image

9

Jerzy Duda, WZ AGH, 2008–2010

Historia j

ę

zyków (5)





1983

1983

– C++; C with Classes opracowany przez Bjarne’a Stroustrupa

(1979); bazowany na C i Simuli





1991

1991

– Java stworzona przez Jamesa Goslinga, programist

ę

Sun

(pierwotnie jako Oak); Java 1.0 (1995) - Write Once, Run Anywhere

#include <iostream>
using namespace std;

int main() // Hello World
{

cout << "Hello, World!" << endl;
return 0;

}

class HelloWorld
{

public static void main(String args[])
{

System.out.println("Hello, World!");

}

}

Jerzy Duda, WZ AGH, 2008–2010

Historia j

ę

zyków (6)





1993

1993

– Ruby stworzony przez Yukihiro "Matz" Matsumoto; oparty na

wielu paradygmatach





1995

1995

– PHP (PHP: Hypertext Preprocessor) opracowany pierwotnie

przez Rasmusa Lerdorfa (Dania)





2000

2000

– C# opracowany przez Microsoft (zespół Anders Hejlsberga)

jako cz

ęść ś

rodowiska .NET; zaaprobowany jako standard przez

ECMA oraz ISO

using System;

class HelloWorld
{

public static void Main(string[] args)
{

Console.WriteLine("Hello, World!");

}

}

<?php // PHP: "Hello, world!"
echo "<html><body>"."Hello, world!"."</body></html>"; ?>

background image

10

Jerzy Duda, WZ AGH, 2008–2010

Popularno

ść

j

ę

zyków – TIOBE

Ź

ródło: http://www.tiobe.com

Jerzy Duda, WZ AGH, 2008–2010

Paradygmaty programowania

Paradygmaty programowania

Programowanie imperatywne (1)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/



Najbardziej pierwotny sposób programowania, w którym program
postrzegany jest jako ci

ą

g polece

ń

dla komputera



Obliczenia to sekwencja polece

ń

zmieniaj

ą

cych krok po kroku stan

maszyny, a

ż

do uzyskania oczekiwanego wyniku



Stan maszyny to zawarto

ść

całej pami

ę

ci oraz rejestrów

i znaczników procesora



Ten sposób patrzenia na programy zwi

ą

zany jest

ś

ci

ś

le

z budow

ą

sprz

ę

tu komputerowego o architekturze von Neumanna,

w którym poszczególne instrukcje to wła

ś

nie polecenia zmieniaj

ą

ce

stan

Demo:

http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/7/71/Pp-1.1.1

background image

11

Jerzy Duda, WZ AGH, 2008–2010

Programowanie imperatywne (2)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/



J

ę

zyki wysokiego poziomu — takie jak Basic czy C — posługuj

ą

si

ę

pewnymi abstrakcjami, ale wci

ąż

odpowiadaj

ą

paradygmatowi

programowania imperatywnego



Instrukcje podstawienia działaj

ą

na danych pobranych z pami

ę

ci i

umieszczaj

ą

wynik w tej

ż

e pami

ę

ci, za

ś

abstrakcj

ą

komórek pami

ę

ci

s

ą

zmienne

Sub Pierwszy
Dim s as Integer
Dim n as Integer
n = InputBox()
s = 1
For i = 2 To n

s = s * i
MsgBox(s)

Next i
End Sub

int main()
{

int i, n, s;

n=scanf("%d",&n);
s = 1;
for(i=2;i<=n;i++)

{s*=i;

printf("%d",s);}

return 0;

}

Jerzy Duda, WZ AGH, 2008–2010

Programowanie proceduralne
i strukturalne

Ź

ródło: http://pl.wikipedia.org/wiki/Programowanie_strukturalne





Programowanie proceduralne

Programowanie proceduralne

to paradygmat programowania

zalecaj

ą

cy dzielenie kodu na procedury, czyli fragmenty

wykonuj

ą

ce

ś

ci

ś

le okre

ś

lone operacje



Procedury nie powinny korzysta

ć

ze zmiennych globalnych

(w miar

ę

mo

ż

liwo

ś

ci), lecz pobiera

ć

i przekazywa

ć

wszystkie dane

(czy te

ż

wska

ź

niki do nich) jako parametry wywołania





Programowanie strukturalne

Programowanie strukturalne

to podzbiór programowania

proceduralnego zalecaj

ą

ce:



stosowanie konstrukcji j

ę

zyka takich jak p

ę

tle (

WHILE

) i

instrukcje warunkowe (

IF ELSE

)



unikanie instrukcji

GOTO

i wielokrotnych punktów wej

ś

cia i

wyj

ś

cia z kodu danego podbloku programu



(Inna definicja:) paradygmat zalecaj

ą

cy hierarchiczne dzielenie kodu

na moduły, które komunikuj

ą

si

ę

jedynie poprzez dobrze okre

ś

lone

interfejsy

background image

12

Jerzy Duda, WZ AGH, 2008–2010

Dekompozycja funkcjonalna



Hierarchiczny podział systemu (programu) na bloki
funkcyjne (operacje, procedury, moduły)



Ka

ż

dy z bloków:



wykonuje okre

ś

lone zadanie dla systemu



ma jasno zdefiniowane wej

ś

cia i wyj

ś

cia



mo

ż

e by

ć

traktowany oddzielnie w stosunku do pozostałych

bloków

Jerzy Duda, WZ AGH, 2008–2010

Programowanie obiektowe (1)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/



W programowaniu obiektowym program to zbiór porozumiewaj

ą

cych

si

ę

ze sob

ą

obiektów



Obiekty to jednostki zawieraj

ą

ce pewne dane i umiej

ą

ce wykonywa

ć

na nich pewne operacje



Wa

ż

n

ą

cech

ą

jest tu powi

ą

zanie danych (czyli stanu) z operacjami

na nich (czyli poleceniami) w cało

ść

, stanowi

ą

c

ą

odr

ę

bn

ą

jednostk

ę

– obiekt



Cech

ą

nie mniej wa

ż

n

ą

jest mechanizm dziedziczenia, czyli

mo

ż

liwo

ść

definiowania nowych, bardziej zło

ż

onych obiektów, na

bazie obiektów ju

ż

istniej

ą

cych

Demo:

http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/e/ef/Pp-1.1.2

background image

13

Jerzy Duda, WZ AGH, 2008–2010

Programowanie obiektowe (2)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/



Zwolennicy programowania obiektowego uwa

ż

aj

ą

,

ż

e ten

paradygmat dobrze odzwierciedla sposób, w jaki ludzie my

ś

l

ą

o

ś

wiecie



Przykłady j

ę

zyków: Smalltalk, C++, Java, C#

public class Student {

String nazwisko;
String imie;
int ocena;
long nrIndeksu;

void ocen(int o);
{

this.ocena = o;

}

}

Jerzy Duda, WZ AGH, 2008–2010

Programowanie funkcyjne (1)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/



Program to po prostu zło

ż

ona funkcja (w sensie matematycznym),

która gdy otrzyma dane wej

ś

ciowe wylicza pewien wynik



Brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma

ż

adnych efektów ubocznych



Nie ma te

ż

imperatywnych z natury, tradycyjnie rozumianych p

ę

tli

(wymagaj

ą

np. zmiennych do sterowania ich przebiegiem)

Demo:

http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/9/93/Pp-1.1.3

background image

14

Jerzy Duda, WZ AGH, 2008–2010

Programowanie funkcyjne (2)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/; Wikipedia



Konstruowanie programów to składanie funkcji, zazwyczaj
z istotnym wykorzystaniem rekurencji

(defun factorial (n)

(if (<= n 1)

1

(* n (factorial (- n 1)))))

let rec factorial n =

if n = 0
then 1
else n * factorial (n - 1)

System.Console.WriteLine(factorial anInt)



Przykłady j

ę

zyków: Lisp, Scheme, ML (bakusa), Haskell,

F#

Lisp

F#

Jerzy Duda, WZ AGH, 2008–2010

Programowanie logiczne (1)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/



Na program składa si

ę

zbiór zale

ż

no

ś

ci (przesłanki, predykaty) i

pewne stwierdzenie (cel, konkluzja)



Wykonanie programu to próba udowodnienia celu w oparciu o
podane przesłanki



Obliczenia wykonywane s

ą

niejako „przy okazji” dowodzenia celu



Podobnie jak w programowaniu funkcyjnym, nie „wydajemy
rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyska

ć

Demo:

http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/d/dc/Pp-1.1.4

background image

15

Jerzy Duda, WZ AGH, 2008–2010

Programowanie logiczne (2)

Ź

ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/

ojciec(jan, jerzy).
ojciec(jerzy, janusz).
ojciec(jerzy, józef).
dziadek(X, Z) :- ojciec(X, Y), ojciec(Y, Z).
?- dziadek(X, janusz).



Przykłady: PROLOG, Mercury, Oz

Jerzy Duda, WZ AGH, 2008–2010

Programowanie sterowane
zdarzeniami

Ź

ródło: http://en.wikipedia.org/wiki/Event-driven_programming



Przepływ w programie zale

ż

y od akcji u

ż

ytkownika (klikni

ę

cie

myszki, naci

ś

ni

ę

cie klawisza) lub wiadomo

ś

ci z innych

programów



W programowaniu wsadowym przepływ jest okre

ś

lony przez

programist

ę



Wersja wsadowa



Wersja sterowana zdarzeniami

read a number (from the keyboard) and store it in variable A[0]
read a number (from the keyboard) and store it in variable A[1]
print A[0]+A[1]

set counter K to 0
repeat {

if a number has been entered (from the keyboard) {

store in A[K] and increment K
if K equals 2 print A[0]+A[1] and reset K to 0

}

}

background image

16

Jerzy Duda, WZ AGH, 2008–2010

Generacje j

ę

zyków (1)

Ź

ródło: http://pl.wikipedia.org



1GL



nie było translatora, który był dokonywał kompilacji lub
asemblacji kodu



programowanie odbywało si

ę

bezpo

ś

rednio w j

ę

zyku maszyny



program był efektywny, ale wymagał ka

ż

dorazowego przepisania

dla innej maszyny



2GL



kod programu zapisywany symbolicznie w j

ę

zyku asemblera



poprawiona czytelno

ść

kodu dla człowieka



podstawowa wada: równie

ż

zwi

ą

zany z j

ę

zykiem danej maszyny



wykorzystywany, tam gdzie potrzebny jest b. szybki kod
wynikowy: j

ą

dra systemów, sterowników, fragmentów kodu gier,

szyfrowania

xor ax, ax

mov bx, ax

jmp skok1

01001001010010

101100101010

Jerzy Duda, WZ AGH, 2008–2010

Generacje j

ę

zyków (2)

Ź

ródło: http://en.wikipedia.org



3GL



program zapisywany w j

ę

zyku wysokiego poziomu



łatwo zrozumiały dla człowieka, m.in. przez zastosowanie
zmiennych



pierwsze przykłady: Fortran, ALGOL, COBOL



nowsze j

ę

zyki: Basic, C, C++, Java



4GL



j

ę

zyk programowania albo

ś

rodowisko programistyczne nastawione

na rozwój aplikacji dla biznesu



cel: redukcja czasu potrzebnego na stworzenie programu oraz
zmniejszenie liczby bł

ę

dów



zalicza si

ę

do nich:



generatory raportów (np. PS)



hurtownie danych (np. SAS)



j

ę

zyki baz danych (np. SQL)

let a=0

let b=a

goto skok1

SELECT 0 FROM dummytable

background image

17

Jerzy Duda, WZ AGH, 2008–2010

Generacje j

ę

zyków (3)

Ź

ródło: http://en.wikipedia.org



4GL (c.d.)



niektórzy autorzy nie uwa

ż

aj

ą

j

ę

zyków 4GL za prawdziwe j

ę

zyki



inni proponuj

ą

okre

ś

la

ć

tym mianem tylko j

ę

zyki umo

ż

liwiaj

ą

ce

programowanie obiektowe



5GL



ide

ą

jest aby komputer sam rozwi

ą

zywał problem



bazuje na rozwi

ą

zywaniu problemów poprzez dostarczenie

ogranicze

ń

, a nie na algorytmie dostarczonym przez programist

ę



Freuder: "to jak

Ś

wi

ę

ty Graal dla programowania – u

ż

ytkownik

dostarcza problem, a komputer sam go rozwi

ą

zuje"



do j

ę

zyków 5GL zalicza si

ę

wi

ę

kszo

ść

j

ę

zyków programowania w

logice (PROLOG) oraz w logice z ograniczeniami



wykorzystuj

ą

osi

ą

gni

ę

cia sztucznej inteligencji

Jerzy Duda, WZ AGH, 2008–2010

Generacje j

ę

zyków (4)



5GL – definicja IEEE



5GL to j

ę

zyk, który realizuje koncepcje systemów opartych na

wiedzy, systemów ekspertowych, systemów wnioskowania oraz
przetwarzaniu j

ę

zyka naturalnego



5GL – alternatywna definicja



5GL to

ś

rodowisko programistyczne, które wykorzystuje graficzny

interfejs u

ż

ytkownika w celu stworzenia kodu

ź

ródłowego, który jest

nast

ę

pnie kompilowany przy u

ż

yciu j

ę

zyka 3GL lub 4GL



Programowanie graficzne umo

ż

liwia łatwiejsze stosowanie klas,

poruszanie si

ę

po ich hierarchii, itd

background image

18

Jerzy Duda, WZ AGH, 2008–2010

Kompilator



Kompilator

– program, który przetwarza kod napisany w

jednym j

ę

zyku (tzw. j

ę

zyku

ź

ródłowym) na równowa

ż

ny kod

w drugim j

ę

zyku (tzw. j

ę

zyku wynikowym)



J

ę

zyki wynikowe generowane przez kompilatory



j

ę

zyk (kod) maszynowy

dowolnego komputera od

mikrokontrolera do superkomputera



przeno

ś

ny

kod po

ś

redni

dla ró

ż

norodnych maszyn

wirtualnych (Java i platforma .NET)



inny

j

ę

zyk programowania

(istniej

ą

np. kompilatory

tłumacz

ą

ce z j

ę

zyka Fortran na j

ę

zyk Pascal); zwane s

ą

translatorami



Asembler

tłumaczy kod zapisany w

j

ę

zyku symbolicznym

na

j

ę

zyk maszynowy

Ź

ródło: Wojciech Complak: Podstawy kompilatorów, http://wazniak.mimuw.edu.pl/

Jerzy Duda, WZ AGH, 2008–2010

Interpreter



Interpreter

– program komputerowy, który analizuje kod

ź

ródłowy

programu a przeanalizowane fragmenty wykonuje



Wykonanie programu za pomoc

ą

interpretera jest wolniejsze a

do tego zajmuje wi

ę

cej zasobów systemowych ni

ż

wykonanie

kodu skompilowanego



Interpreter musi analizowa

ć

ka

ż

de wyra

ż

enie i nast

ę

pnie

wykona

ć

akcj

ę

, a kod skompilowany jedynie wykonuje akcj

ę



Analiza wyra

ż

enia nazywana jest "kosztem interpretacji"



W implementacjach b

ę

d

ą

cych w pełni interpreterami wykonanie

wielokrotne tego samego fragmentu kodu wymaga wielokrotnej
interpretacji tekstu



Cykl edycja-interpretacja-debugowanie mo

ż

e czasami by

ć

jednak znacznie krótszy ni

ż

cykl edycja-kompilacja-

uruchomienie-debugowanie

Ź

ródło: http://pl.wikipedia.org/


Wyszukiwarka

Podobne podstrony:
access programowanie w vba
Excel 2003 PL Programowanie w VBA Vademecum profesjonalisty
Excel 2003PL Programowanie VBA Vademecum Profesjonalisty
Laboratorium 1 programowanie w VBA
Laboratorium 2 programowanie w VBA
Laboratorium 3 programowanie w VBA
Laboratorium 4 programowanie w VBA
Access Programowanie w VBA acpv Nieznany
Visual basic, Programowanie VBA
Excel 2007 pl Programowanie w VBA
Excel 2013 PL Programowanie w VBA dla bystrzakow
access programowanie w vba
Excel 2010 PL Programowanie w VBA Vademecum Walkenbacha 2
Access Programowanie w VBA acpvba
Access Programowanie w VBA acpvba
Excel 2013 PL Programowanie w VBA dla bystrzakow e13pvb
Access Programowanie w VBA acpvba

więcej podobnych podstron