Języki programowania
Wykład 1
1. Język programowania – sztuczny język składający się ze skończonego zbioru reguł zwanych
składnią. Służy do przygotowywania poleceń dla komputera
2. Programowanie – umiejętność pisania programów i umiejętność rozwiązywania problemów
3. Program komputerowy – zbiór ułożonych w odpowiedniej kolejności rozkazów, z których
każdy reprezentuje elementarną operację.
4. Większość programów powstaje w formie kodu źródłowego utworzonego za pomocą edytora
plików tekstowych. Kod źródłowy jest następnie interpretowany lub kompilowany na język
maszynowy faktycznie wykonywane przez komputer.
5. Definiując dowolny język programowania należy podać:
a. Zbiór dopuszczalnych znaków
b. Reguły tworzenia poprawnych zdań
c. Reguły interpretujące znaczenie poszczególnych słów
6. Przykłady języków programowania:
a. Język maszynowy, asembler, Fortran, C, C++, C#, Pascal, Java, PHP
7. Poziom języka:
a. Języki wysokiego poziomu (BASIC, C, Pascal, C#)
b. Języki niskiego poziomu (asembler, język maszynowy)
8. Języki niskiego poziomu:
a. Najbardziej efektywne
b. Trzeba znać architekturę systemu komputerowego oraz działanie mikroprocesora
c. Bardzo czasochłonne
9. Język maszynowy:
a. Ciąg zer i jedynek
b. Można heksadecymalnie upraszczać (76 z 0111 0110)
10. Asembler:
a. Każdy procesor ma swój własny język asembler
b. Jeden rozkaz w asemblerze odpowiada jeden rozkaz w języku maszynowym
c. Mnemonik – rozkaz w asemblerze (zastąpienie binarnego)
d. Tłumacz (translator) to też asembler
e. Trudne
f. Pełne wykorzystanie możliwości komputera
g. Wykonywane bardzo szybko i zajmują mało miejsca w pamięci
11. Języki wysokiego poziomu:
a. Przypominają język naturalny (słowa i składnia)
b. Każdemu poleceniu w j. wysokiego poziomu odpowiada ciąg poleceń w j. maszynowym
c. Tłumaczenie dokonuje się podczas procesu kompilacji
d. Kompilacja – tłumaczenie na j. maszynowy za pomocą programu tłumaczącego
(kompilatora)
e. Zajmują więcej miejsca i wykonuje się wolniej
12. Przykładowy rozkaz w asemblerze:
EB03 JHP SHORT NEXT
EB – z heksadecymalnego kod operacji
03 – przesunięcie o 3 kroki
JHP – mnemonik
SHORT NEXT – argument
13. Rodzaje języków programowania:
a. Proceduralne (C, Pascal, Fortran) – zapisuje się procedury, które wykonuje komputer
b. Deklaratywne (COBOL, PROLOG, LISP, SQL) – wyszukuje danych w oparciu o pytania
c. Obiektowe – tworzysz interfejs bardzo łatwo, gotowe obiekty
14. Procedura – moduł programu wykonujący określone zadanie (program mogący działać
samodzielnie)
15. Podstawy Turbo-Pascala
TP i BP umożliwia:
- edycję programów
- kompilację programów
- uruchamianie programów
- śledzenie programów
Zbiór znaków:
- rozróżnia A…Z, a…z
- kreska _
- cyfry
- znaki specjalne np. spacja
- {komentarz}
- @ adresy obiektów
- $ stałe
- # numer znaku w tabeli ASCII
- znaki sterujące z kodu ASCII od 0 do 31
- := przypisanie
- <> <= >= operatory relacji
- słowa kluczowe
- dyrektywy np. index
Identyfikatory – ciąg liter i cyfr zaczynający się od litery (do 63 znaków). Służą do oznaczania
w programach stałych, zmiennych itd.
Liczby (całkowite, rzeczywiste)
o $A – 16-stkowo
o #127 – znak ASCII 127
o # $ 75 – znak ASCII 16-stkowo
Łańcuchy – ciąg znaków
Literały logiczne (true, false – wartości logiczne)
Komentarze i separatory {….} // spacja, ENTER
16. Struktura programu;
PROGRAM Nazwa_Programu; {Nagłówek programu}
USES {Deklaracja modułów}
{Początek części opisowej}
LABEL - etykiety, definiowanie ich
CONST - definiowanie stałych
TYPE - definiowane typy (zbiór wartości, które mogą przyjmować zmienna danego typu)
VAR - definiujemy zmienne
PROCEDURE - definiowanie procedur
FUNCTION - definiowanie funkcji
{Koniec części opisowej}
BEGIN
{Część wykonawcza programu}
END. {Musi być kropka}
Wykład 2
1. Console Application Struktura
PROGRAM Nazwa
{$APPTYPE CONSOLE}
USES {deklaracja modułów}
SysUtils
LABEL {…… część opisowa}
BEGIN
{treść programu}
END.
2. Deklaracja modułów
USES – umożliwia zdefiniowanie dowolnej liczby modułów np. crt, dos, graph
Moduły służą do grupowania funkcji i procedur w biblioteki oraz umożliwiają niezależne
pisanie poszczególnych
3. Deklaracje etykiet:
LABEL – deklarujemy zaraz po deklaracji modułów. Powodują one skok do określonej
części programu
(GOTO) np.
LABEL skok_1,2;
BEGIN
GOTO skok_1;
……
END.
4. Definicja stałych:
Stałe (CONST) – po label, przypisanie stałej wartości. NIE może być zmienna w programie.
Gdy złożona to definiujemy.
a. CONST MaxWysokość=100;
b. CONST MaxWysokość:integer=1000;
c. CONST MaxWysokość:real-50;
x:byte=12
5. Deklaracje typu (TYPE)
Typ – zbiór wartości jakie może przyjmować zmienna (standardowe – predefiniowane,
niestandardowe – wprowadzane rędznie do złożonych)
BYTE = {0,1,2,…..,255}
TYPE Dzien=(pon,wt,sr,czw,pt,sob,nie);
x=real;
Numer=Integer
Wacek=array [1..10] of real
Array tablica
6. Deklaracje zmiennych VAR
Deklarujemy zmienne, które muszą być zdefiniowane
W C++ rozróżniamy duże litery
VAR
Wynik,y,z: Byte;
I:integer;
7. Definicje procedur i funkcji
PROCEDURE a FUNCTION – różnica składni
Jednoznaczna nazwa
Ustalony sposób wymiany informacji
Służą do tego (wyizolowane) i można je wielokrotnie używać i można uczynić program
bardziej przejrzystym
FUNCTION – ma zwrócić wartość (zazwyczaj 1)
PROCEDURE – zwracana wartość ma złożoną strukturę
Definicja procedury:
PROCEDURE Nazwa (lista parametrów); ale można pominąć
{Część opisowa}
BEGIN
{ciągi instrukcji}
END.
Deklaracja funkcji:
FUNCTION Nazwa (lista parametrów);
{część opisowa}
BEGIN
{ciąg instrukcji}
Nazwa:=a; //lub Result:=a;
END.
8. Typy danych i ich opis
Każda zmienna w programie ma swoją nazwę (identyfikator) i przyjmuje wartość z
określonego zbioru: Typu
a. Typy proste
Porządkowe – każdy element ma swój następnik
o Wyliczeniowy
o Całkowity
o Logiczny
o Znakowy
o Okrojony
Typy rzeczywiste – między 2 dowolne liczby można wstawić kolejną
b. Łańcuchowe – reprezentacja zbiorów znaków (łańcuchów)
c. Strukturalne – łączy w całość typy proste
Tablicowe – jednakowe typy
Rekordowe – różne typy
Zbiorowe – obliczenia wyniki
Plikowe - jego elementy przyjmują ograniczone wartości. Zmienna
przyjmuje wartość 1 lub (..?)
d. Wskaźnikowe – przypisanie adresu, dwojaka informacja o elemencie (jaki
typ)+(adres elementu)
e. Proceduralne – posługiwanie się procedurami jak zmiennymi
f. Obiektowy – mamy powiązane ze sobą struktury danych i funkcje, które na nich
operują (różnica „f” i „a”-„e”)
9. Typy proste
Bardziej złożone struktury (tablice, rekordy)
Skończony, uporządkowany zbiór wartości
Wykonujemy operacje porównywania
a. Porządkowe – następnik i poprzednik
b. Rzeczywiste
Typ wyliczeniowy – max 256 elementów
TYPE identyfikator=(lista);
Elementy uporządkowane (ponumerowane 0,1…….n-1) n – liczba elementów
Typy całkowite – predefiniowane
ShortInt od -128 do 127
Byte od 0 do 255
Integer od-32768 do 32767
Word od 0 do 65535
LongInt duuuużo
Type
XX=integer
VAR
i,j:XX;
k:Integer
Typy logiczne (Boolean, ByteBool, WordBool, LongBool
True = 1
False = 0
Typ znakowy char – znaki ASCII, ramki, okienka
Typ okrojony
TYPE nazwa = stała 1 … stała 2;
Np.
TYPE
Litery = „A”.. „Z”
Zakres = 0 .. 100
Typ rzeczywisty
Real
Single – 4 bajty
Double – 8 bajtów
Extended – 12 bajtów
Comp od -2
63
+1 do 2
63
-1
10. Typy łańcuchowe
Reprezentowane ciągiem znaków
TYPE nazwa = string [rozmiar]; np. 20
11. Typy strukturalne
Opis obiektów złożonych
Podajemy typy składowe i metodę strukturyzacji + określony sposób dostępu
a. Tablicowy – elementy są identyczne pod względem typu
(łańcuchowe, proste, strukturalne)
Dostęp do elementów poprzez podanie indeksu
Indeks typu porządkowego
Określony zakres
TYPE nazwa = array [typy_indeksowe] of typ_składowy;
Np.
TYPE
V=array [1..5] of integer;
Macierze = array [1..20, 1..30] of real;
VV=array [1..10] of V typ uprzednio zdefiniowany typeception (5 wersów i 10
kolumn)
b. Typ rekordowy
Elementy = pola
Różne elementy
Poszczególne pola mogą być elementami złożonymi
Typ i identyfikator
TYPE nazwa = record
{lista deklaracji pól składowych}
End.
Np.
TYPE Data = record
Rok:Integer;
Miesiąc: 1..12; (typ okrojony)
Dzień: 1..31;
End.
c. Typ zbiorowy
1 el. <= 256
Zbiór potęgowy danego typu porządkowego
Zbiór potęgowy – zbiór wszystkich podzbiorów + zbiór pusty
TYPE nazwa = set of typ_porządkowy
Np.
TYPE Klasy = set of (1a,1b,1c,1d,1e)
d. Typ plikowy
Ściśle powiązane z plikami
Liczba elementów uzależniona od przebiegu wykonywania i skojarzenia pliku z
fizycznymi zbiorami danych
Tablica – metoda dostępu do elementu – Indeksy
Plik – metoda dostępu do elementu – funkcje np. seek
TYPE nazwa = file of opis_typu (np. byte, integer)
Np.
Text – plik tekstowy predefiniowany
Przykład typów plikowych
TYPE
Dane = file of Integer;
Zbiór = file;
Wynik = Text; //lub TextFile (Delphi)
F = file of record
Rok: integer
Miesiąc: 1..12;
Dzień: 1..31;
End.
12. Typ wskaźnikowy – istnieje przez cały czas wykorzystywania części programu
Są to tzw. ZMIENNE STATYCZNE
ZMIENNE DYNAMICZNE – dzięki wskaźnikom
a.
TYPE a=real;
TYPE WWW=6666;
6666=record
Tekst: string [50];
Liczba: Integer;
End.
b. VAR aaa:WWW;
Definiuje na wzór wskazań, które są typu.
Wykład 3
1. Procedury i funkcje mogą być traktowane jako:
a. Część programu wykonywana na skutek wywołania
b. Elementy, które mają być przypisywane do zmiennych i przekazywane do innych funkcji
lub procedur jako (ponenety???)
TYPE nazwa = procedure (lista_parametrów);
TYPE nazwa = function (lista_parametrów);
Przykład:
TYPE
YY=procedure (x,y:Byte,var z)
FF=function (x,y:Byte):Boolean
2. Typ obiektowy
Obiekt – złożona struktura o ustalonej liczbie elementów składowych
Każdy element – pole (dana) i metodę (procedura lub funkcja)
Elementem opisującym operację wykonywaną na danych obiektach
POLE – (specyfikacja): typ i identyfikator
Opis metody składa się z: nagłówka procedury (funkcji). Konstruktora lub destruktora.
OBJECT ….. END
TYPE nazwa_typu object (opcjonalny element) dziedzictwo
Listy
End.
3. Dziedzictwo – identyfikator innego, zdefiniowanego wcześniej typu obiektowego. Jeśli
element ten wystąpi, to definiowany typ dziedziczy wszystkie elementy podane w definicji
typu obiektowego.
TYPE identyfikator_typu=object (dziedzictwo)
Lista_deklaracji_pól
Lista_deklaracji_metod
Sekcje_list
End.
Przykład:
TYPE punkt=object
x,y:integer
end;
TYPE piksel=object(punkt) zawiera punkt
End.
4. Zmienne
VAR
a. Zdefiniowane na zewnątrz procedur (funkcji) = GLOBALNE
b. Zdefiniowane wewnątrz procedur (funkcji) = LOKALNE
TYPE
P=real typ wskaźnikowy
Punkt=record typ rekordowy
X:real
Y:real
End;
W=array[1..10;1..20] of real
VAR
X,Y,Z:real;
A,B:W
aa:string[10]
Q:P; przypisanie do P
ss:Punkt; przypisanie do Punkt
5. Wyrażenia
Argumenty
Operatory: (wg priorytetu)
a. +, -(zmiany znaku), @ (adres zmiennej), NOT
b. *, /, DIV (dzielenie całkowite), MOD (reszta z dzielenia), AND, SHL, SHR(przesunięcie o n
bitów left, right)
c. + (suma), - (różnica), OR, XOR
d. =, <>, <, >, <=, IN (zawiera się – logiczny)
6. Instrukcje – czynności wykonywane na danych
a. Proste – bez instrukcji – składowych
Przypisania, skoku, puste, inline, wywołania procedury
Przypisania A:=1
Skoku GOTO
PROGRAM AAA
LABEL e1;
BEGIN
GOTO e1;
e1:x:=a+2
END.
Pusta ;
Wywołania procedury
Nazwa_procedury (lista_parametrów);
Np.
Oblicz;
b. Strukturalne
o Złożone
BEGIN
….. } n instrukcji
END.
o Warunkowe
If …… then
Case …. Of
o Iteracyjne
For ….. do
While …. Do
Repeat …. Until
o Wiążące
o Asemblerowe
7. Instrukcja wyboru
CASE znak OF
„+”:BEGIN x:=x+1; z:=z-1; END;
„-„ :BEGIN x:=x-1; z:=z+1; END;
Gdy znak ≠ + 1 znak ≠ - end
Lub else
Może być też przedział np. 710
FOR TO
FOR DOWNTO
Np.
FOR i=1 TO i=10 DO Begin …. End;
FOR i=10 DOWNTO i=11 DO ….;
Przykład:
Oblicz iloczyn A
4x4
, B
4x4
, C=AxB
C
ik
=∑
(Tu mnożenie macierzowe wiersz pierwszego razy kolumna drugiego daje pierwszy wyraz
wyniku)
For i:=1 to 4 do
For k:=1 to 4 do
For j:=1 to 4 do
C[i,k]=C[i,k]+a[i,j]*b[j,k]
8. Instrukcja wiążąca:
WITH lista_zmiennych DO instrukcja
Np.
Liczba zespolona: Record
Re,im:REAL;
END;
WITH liczba_zespolona DO
BEGIN
Liczba_zespolona.re:=5
Liczba_zespolona.im:=2
END;
Ułatwienie operowania na złożonych strukturach danych np. rekord
Dla asemblera
ASM
Instrukcje_asemblera
END Funkcje i procedury
Wykład 4
1. Lista parametrów formalnych określa sposób w jaki lista ma być zastąpiona listą parametrów
aktualnych przy wywołaniu funkcji lub procedury
a. Przez wartość (można na niech określać)
Procedure obl parametry formalne
//Wywoła
Obl (a, y+k, sqrt(w), j+5); parametry aktualne
b. Przez stałe (określonego typu)
Function Silnia (const n:byte) longint
Var i:byte;
Begin
Silnia:=1;
For i:=1 to n do Silnia=Silnia*i;
End;
c. Przez zmienne (z nich uzyskuje się informacje)
Var: a:longint; (deklaracja globalna)
Procedure obl_silnie (n:byte; var s:longint)
Var i:longint (deklaracja lokalna)
Begin
S:=1
If n<=12 then for i=1 to n do S:=S*1 else S:=-1
End;
2. Dane (wprowadzanie) Pamięć operacyjna(przetwarzanie) Procesor(Wyprowadzanie)
Port wyjściowy elementu
Do obsługi fizycznych danych = pliki
3. Pliki:
a. Zdefiniowane
b. Niezdefiniowane
c. Tekstowe
Np.
TYPE
R=File of real;
Z=File of record
Re,im:Real
End.
TYPE
ZZ=File;
File of text
Dostęp do pliku – zmienna plikowa
TYPE
R=File of real
Z=File of record
Re,im:Real
END;
Var
F:tekst
Zbiór:R; {Zbiór: File of real}
AA: File of integer;
Zbiorek: Z;
ZZ: file;
Zmienna plikowa skojarzona z fizycznym zbiorem danych
F:tekst; Assign np. Assign(F,’Dane’)
4. Tworzenie, otwieranie I zamykanie pliku
a. Tworzenie
Rewrite (F) – fizyczne utworzenie na dysku
Rewrite (FFF, rozmiar)
b. Otwieranie
Reset (F) lub Append (T) tylko tekstowe
c. Zamykanie
Close (T) – zamykanie
d. Write, read – wpis/odczyt – zdefiniowane
e. BlockWrite, BlockRead (T, bufer, licznik, rezultat) – niezdefiniowane
5. Pliki tekstowe
Eof End of file
Eoln End of line
a. Zdef:
Eof; FileSize (w bajtach)
File Pos(pozycja w pliku)
Seek (ustawienie położenie zbioru na elemencie określonym przez pozycja = longint)
b. Erase (F) – usuwanie
Podstawa programowej modyfikacji
c. Grupowanie procedur i funkcji bibliotek
d. Dzielenie dużych programów na powiązane logicznie części
e. Unit „nazwa”
Interface def+dek } cz. Opisowa
Implementation } cz. Implementacyjna
End }cz. Inicjująca
Wykład 5
1. Object Pascal
a. Hermetyczność
b. Dziedziczność
c. Polimorfizm
2. Hermetyczność – zamknięcie w jednej całości dwóch kategorii; struktur danych i funkcji,
procedur (kodów) dotyczących działań na strukturach danych
Deklaracje „private” i „public” ukryte
Struktury danych = własność
Kody programów = metody
Obiekt może korzystać z metod i własności innego obiektu, ale metody 1 obiektu
3. Dziedziczność obiektowa umożliwia przyspieszenie definiowania potomstw istniejących
obiektów
a. Potomek dziedziczy własności i metody, więc musimy tylko określić różnice w stosunku
do poprzednika
b. Oprogramowanie własności i metod (?)
c. Zmiana w całej klasie
o W obiekcie nadrzędnym z którego reszta dziedziczy
4. Polimorfizm umożliwia tworzenie w obiektach potomnych metod o takich samych nazwach,
jak w obiektach nadrzędnych, ale wykonywujących różne czynności:
a. Środowisko zintegrowane
o Edytor
o Debuggera
o Projektor formularzy
Cały kod w modułach
5. Klasy – deklaracja klasy odbywa się przez deklarację naszego typu danych
Unit
Interface
TYPE moja_klasa=class
Procedury
End;
Zaimplementować
Procedure moja_klasa.p1
Begin
End;
Showmessage(‘tekst’)
Wyszukiwanie CTRL+SPACJA
Potomek=class(protoplasta)
Kod:
Procedure TForm1.ButtonClick(Sender:ToObject)
X:=MK1.Create; przyporządkowanie pamięci operacyjnej
Y:=MK2.Create;
Wywołanie //x.p1
6. Wybór kolorowych paneli
Var c:integer
Begin
If Form1.ColorDialog1.Execute then
Begin
C:= Form1.ColorDialog1 Color;
Case Form1.RadioGroup1.ItemIndex of
0: Form1.Panel1.Color:=c;
1: Form1.Panel2.Color:=c;
2: Form1.Panel3.Color:=c;
End;
End;
End;
End.
Wykład 6
1. FloatToStr(x,ffFixed,9,2) 9 l. liczb + przecinek 2 druga po przecinku
Wykresy Chart
TChart – formularz edycja opcji
Zerowanie serii:
a. Form1.series1.clear;
b. Form1.series2.clear;
Form1.Visible:=False
Form2.Visible:=True Boole’a
2. Menu nawigacja
For i:=1 to 1000
Begin
Form1.Series1.AddXY(i, sin(i*pr/180); XY odcięte X I rzędne Y
Form1.Series2.AddXY(i, cos(i*pr/180);
End;