Kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zazwyczaj jako tekst w postaci czytelnej dla człowieka z użyciem środowiska programistycznego. W takiej postaci program jest zrozumiały dla człowieka znającego język programowania jednakże bezpośrednio jest bezużyteczny dla maszyny np. komputera
Bit- może przyjmować dwie wartości: prawdę(true;1) lub falsz(false;0)
8bitow to bajt.
Zapis informacji w komputerze :Podst. Jedn informacji jest bit,może on przyjmować 2 wartości (true,false),pamięć w komputerze przechowuje ciąg bitów. (1024b-kb,1024kb-mb…)
Dwójkowy system liczbowy: za pomocą zer i jedynek, w jednym bajcie maks 255 znaków (np. 0-0,1-1,2-10,3-11,4-100)
Zapis zmiennoprzecinkowy: +5.23443E234 -> +5-część całkowita, .23443-część dziesiętna, E234 –cecha o podst 10. Część całkowita + dziesiętna= mantysa; np. 3.4E2=3.4*10^2=340.
Struktura programu: część delklaracyjna (var…), (begin…część deklaracyjna…end.)
Operacje wejścia-wyjścia: write(…); wypisanie na ekranie bez przejścia do następnej linii, writeln(…); z przejściem do następnej linii, writeln; przejście do następnej linii, readln(zmianna); pobieranie wartości z klawiatury do zmiennej (wartość zatwierdzamy enterem), readln; czekanie na naciśnięcie klawisza enter.
Stałe: część deklaracyjna (const pi=3.14;), (begin…write(‘liczba pi wynosi:’,pi; … end.)
Język maszynowy - postać programu komputerowego (postać wykonywalna lub binarna) przeznaczona do bezpośredniego lub prawie bezpośredniego wykonania przez procesor, praktycznie nieczytelna dla człowieka.
Kompilator - tłumaczy cały kod na język zrozumiały dla komputera (język maszynowy) a następnie wykonujeprogram. Przykładowe kompilatory: Borland Delphi, Borland Builder, Visual C++
Interpreter - tłumaczt jedno polecenie a następnie go wykonuje, i tak polecenie po poleceniu. Przykładowy interpreter: MATLAB.
Nazwa zmiennej (identyfikator) - ciąg znaków alfanumerycznych rozpoczynających się od litery bądź znaku podkreślenia
-małe i duże litery nie są rozróżniane; -dowolna liczba znaków (kompilator interpretuje jedynie pierwsze 63 znaki;
-bez spacji; -różne od słów kluczowych.
Zmienne: położenie zmiennej w pamięci komp określa adres, część deklaracjna (var x:integer;), (Begin…x:=5; write(‘kwadrat pod liczby wynosi’, x*x; … end.) nazwa zmiennej(identyfikator) ciąg znaków alfanumerycznych rozpoczynający się od litery bądź znaku, mełe i duże litery nie są rozróżniane, dowolna liczba znaków (kompilator interpretuje pierwsze 63), bez spacji, różne od słów kluczowych.
Typy zmiennych:
- strukturalny;
- string;
- prosty: porządkowy (wyliczeniowy, okrojony, całkowity, znakowy, logiczny), rzeczywisty
- wskaźnikowy;
- proceduralny.
Typy całkowite: byte, shortint, word, integer, longint, longword, cardinal, int64.
Typy rzeczywiste: real, single, double, extended, comp, currency.
Boolean – tylko dwie wartości (np. prawda, fałsz).
Div – dzielenie całkowite.
Mod – reszta z dzielenia.
Typ okrojony – jest podzbiorem typu porządkowego, zachowującym wszystkie własności typu pierwotnego dla ograniczonych wartości. Składnia type nazwa_typu1=(wart1,wart2,wart3,wart4,wart5); nazwa_typu2=wart1...wart4;
Typ porządkowy:
Succ – następnik w typie porządkowym
Pred – poprzednik w typie porządkowym
Low – najmniejsza wartość z zakresu
High – największa wartość z zakresu
Funkcie standardowe :Typ char i string:
Chr (x)– argument x jest typu Byte, a wynikiem jest znak z tabeli kodowej ASCII o numerze porządkowym x.
Ord (‘B’) – argument jest znak z tabeli kodowej ASCII o numerze porządkowym x, a wynikiem jest numer kodu.
Upcase (x) – argument x, jak również wynik funkcji są typu Char. Funkcja ta, jako wynik, daje dużą literę argumentu x. W przypadku kiedy x nie jest małą literą, wartością funkcji jest argument x.
Lenght (s) – długość łańcucha tekstowego.
Operatory Logiczne operator and ma wyższe pierwszeństwo niż or
Operatory logiczne:
Not – negacja (nieprawda, że…)
And – koniunkcja, czyli iloczyn logiczny (i)
Or – alternatywa, czyli suma logiczna (lub)
Xor – różnica symetryczna
Instrukcja warunkowa IF
Jeżeli spełniony jest warunek to… w przeciwnym wypadku…
Składnia: Przykład
if warunek then if x>0 then
instrukcja; x:=x*(-1);
lub
if warunek then if x<0 then
instrukcja x:=x*(-1)
else else
instrukcja 2; x:=x+a;
Instrukcja wielowariantowa CASE
W przypadku spełnienia konkretnego warunku, wykonywana jest konkretna instrukcja.
case zmienna/wyrażenie OF
Wart1:instrukcja1;
Wart2:instrukcja2;
End;
Pętla FOR
Wykonuje wielokrotnie jakąś operacje.
Składnia:
for instrukcja początkowa to wartość końcowa do
instrukcja;
Przykład:
for x:=1 to n do for i:=1 to 10 do
begin begin
instrukcja1; write(x,’ ‘);
instrukcja2; Writeln(sqr(x));
end; end;
Pętla WHILE
Program wykonuje określoną instrukcję jeśli spełniony jest warunek. Warunek sprawdzany przed wykonaniem pętli , w przypadku nie spełnienia warunku, pętla nie zostanie wykonana ani razu.
Składnia: Przykład:
while warunek do while x<10 do
begin begin
instrukcja 1; x:=(x+10)/15;
instrukcja2; if x mod q<>0 then
end; writeln(x);
end;
Pętla REPEAT
Program będzie powtarzał pętle aż do momentu spełnienia warunku.
Składnia: Przykład:
repeat y:=152
instrukcja1; repeat
instrukcja2; x:=x+(15/x);
until warunek do spełnienia; until x>y;
end; end;
Typy strukturalne - typy w których każdy element jest zbiorem komponentów, istniej określony sposób dotarcia do pojedynczych składowych danego elementu.
Podział:
- typ tablicowy (array);
- typ rekordowy (rekord);
- typ zbiorowy (set);
- typ plikowy (file);
- typ obiektowy (object).
Typ tablicowy - typ strukturalny, którego komponenty są jednego typu i ich kolejność jest ściśle określona, a dostęp do składowych poszczególnych elementów odbywa się przez indeksy.
type
nazwa_typu=array[zakres indeksow] of typ_elementow;
Przykład:
type
typ1=array [1…10] of integer;
var
w1:typ1;
i:integer;
begin
for i:=1 to 10 do
readln(w1[i]);
for i:=1 to 10 do
writeln(w1[i]);
readln;
end.
Typ rekordowy : typ strukturalny łączący w jedną całość składowe różnych typów, składowe rekordu nazywane są polami rekordu.
Składnia:
program: nazwa_programu;
typenazwa_typu=record pole1,pole2:integer;
pole3:double; pole4:char;
end;
var zmienna1:nazwa_typu;
Begin … zmienna1.pole1:=2;
zmienna1.pole3:=3.4;
zmienna1.pole4:=’k’;
end
(np. program który przechowuje współrzędne dwóch punktów w przestrzeni)
Typ zbiorowy: typ strukturalny, którego elementami są wartości typu porządkowego (np. integer,char). Elementy w zbiorze nie są uporządkowane.
Składnia:
typenazwa_typu=set of typ_porzadkowy
Przykład:
type znaki=set of char;
cyfry=set of 0..9;
(np. program sprawdzający czy podany znak jest samogłoską czy spółgłoską)
Typ logiczny(Boolean)-do zmiennych tego typu mozliwe jest przyporzadkowanie tylko true I false, wszystkie wyrażenia logiczne w Pascalu zwracają wartość typu boolean.
Operatory arytmetyczne: + (identyczność), - (zmiana znaku), + (dodawanie), - (odejmowanie), * mnożenie), / (dzielenie), div (dzielenie całkowite) np. 5 div 2=2, mod (reszta z dzielenia) np. 5 mod 2=1.
Typ porządkowy(wyliczeniowy, okrojony,całkowity, logiczny,znakowy):succ(x) następnik w typie porządkowym, pred(x) w typie porządkowym, low(x) high(x) – najmniejsza największa wartość z zakresu.
Sortowania elementów – czyli ułożenie elementów w odpowiedniej kolejności (rosnącej lub malejącej), wg odpowiedniego kryterium.
- sortowanie bębenkowe („lżejsze” liczby wypływają do góry);
- przez wstawianie;
- przez wybór;
„szybkie”
Procedury i funkcje:
Podprogram – wyodrębniona część programu, stanowiąca całość (blok), posiadająca nazwę i ustalony sposób wymiany informacji z pozostałymi częściami programu.
Podział:
- procedury – podprogramy nie zawierające żadnej wartości i uruchamiane w charakterze instrukcji w programie;
- funkcje – podprogramy zawierające dokładnie jedną wartość i uruchamiane w wyrażeniach.
Rekurencja – podprogram uruchamiający sam siebie.
Wytyczne stosowania:
- każdy podprogram wywołujący „sam siebie” musi mieć wbudowany warunek przerywający wywołanie rekurencji;
- przy każdym kolejnym wywołaniu podprogramu, tworzony jest na stosie komplet zmiennych lokalnych;
- podczas wywołania rekurencji na stosie może być wiele kompletów zmiennych ale dostępny jest tylko ostatni, po zakończeniu wywołania rekurencyji następuje usuwanie ze stosu kompletów zmiennych w odwrotnej kolejności do ich składania na stosie.
Zalety stosowania procedur i funkcji:
- podprogramy czyli przejrzystość,
- jedna procedura, funkcja uruchamiana wielokrotnie – skrócenie kodu,
- zastosowanie parametrów – większa uniwersalność, uproszczenie kodu,
- znane procedury i funkcje można stosować do innych programów.
Programowanie proceduralne – zastosowanie procedur i funkcji.
Typ rekordowy – typ strukturalny łączący w jedną całość składowe różnych typów (składowe – pla rekordu).
Po co?: kolor, masa, włączony, długość i szerokość.
Składnia: Przykład
type type
nazwa_typu=record Tpunkt=record
pole1,pole2:integer; x,y,z:double;
pole3:double; end;
pole4:char; var
end; p1,p2:Tpunkt;
var procedure pobierz_punkt(var p:punkt);
zmienna1:nazwa_typu; begin
begin write(‘Podaj x:’); readln(p.x);
… write(‘Podaj y:’);readln(p.y);
zmienna1.pole1:=2; write(‘Podaj z:’); readln(p.z);
zmienna1.pole3:=3.4; end;
zmienna1.pole4:=’k’; begin
… pobierz_punkt(p1);
end. pobierz_punkt(p2);
readln;
end.
Typ okrojony – jest podzbiorem typu porządkowego, zachowującym wszystkie własności typu pierwotnego dla ograniczonych wartości.
Type
Nazwa_type1=(wart1,wart2,wart3);
Typ zbiorowy – typ strukturalny, którego elementami są wartości typu porządkowego. Elementy w zbiorze nie są uporządkowane.
Type
Nazwa_type=set of typ_porzadkowy;
Type
Znaki=set of char;
Cyfry=set of 0..9;
Dzien=(pon,wt,Sr,czw,pt,sob,Nd);
Dni=set of dzien;
Parametry - niektóre tylko służą do przekazywania danych wejściowych do procedury a niektóre są modyfikowane i wyprowadzane z procedur. Przekazywanie parametru: przez wartość (komunikacja jednostronna); przez zmienną (komunikacja dwustronna).
Zmienne - Parametry procedur są również zmiennymi lokalnymi. Jeżeli zmienne mają te same nazwy co zmienne lokalne przesłaniają zmienne globalne.
Programowanie proceduralne - zastosowanie procedur i funkcji w technice programowania.
Rodzaje plików w Pascalu:
Plik zdefiniowany - plik binarny, którego wartości są określonego typu.-
Pliki tekstowe - składają się ze znaków o strukturze wierszowej. Ciągi znaków pooddzielanych znakami końca lini, możliwy jest jest odczyt i zapis danych w ten sam sposób, jak w przypadku wysyłania danych na ekran i odczytu z klawiatury. Kolejne odczytywane i zapisywane dane mogą być różnego typu. Zostają one zapamiętane w pliku w postaci wartości przekonwertowanych na tekst.
Pliki beztypowe - traktowane są jako ciągi bajtów o niezdefiniowanej strukturze.
Pliki binarne - struktury danych o elementach tego samego typu. Typ elementów jest dowolnym typem plikowym lub strukturalnym zawierającym elementy typu plikowego.
Składnia Zmiennej plikowa-
- (Z)pliki zdefiniowane: var zm_plik: file of type;
-(T)pliki tekstowe: var zm_plik: text;
-(B)pliki beztypowe: var zm_plik: file;
Wskaźnik położenia- Zapamiętana aktualna pozycja w pliku
Możliwe operacje:
-skojarzenie zmiennej plikiem z fizycznym plikiem (np. na dysku)
-utworzenie pliku z równoczesnym otwarciem do zapisu
-otwarcie pliku do odczytu i/lub zapisu
-zapisanie danych (o ile plik jest otwarty do zapisu)
-odczyt danych ( o ile plik jest otwarty do odczytu)
-Zamkniecie pliku
Append(zmp)- otwiera plik tekstowy przygotowując go do zapisu dalszych danych na końcu pliku(T)
Assign(zmp,plik)- przyporządkowuje zmiennej plikowej nazwę zewnętrznego pliku (Z,T,B)
Close(zmp)- zamyka otwarty plik(Z,T,B)
Eof(zmp)- funkcja sprawdzająca czy został osiągnięty koniec pliku otwartego do odczytu(Z,T,B)
Eoln(zmp)-funkcja sprawdzająca czy w pliku tekstowym został osiągnięty koniec wiersza(T)
Erase(zmp)- usuwa plik zewnętrzny(Z,T,B)
FilePos(zmp)-funkcja podająca aktualną pozycję w pliku(Z,B)
FileSize(zmp)-funkcja podająca wielkość pliku(Z,B)
Read(zmp,zm)-wczytuje jedną lub więcej wartości z pliku tekstowego lub jeden rekord z innego pliku(Z,T,B)
Readln(zm,zm)-wczytuje jedną lub więcej wartości przeskakuje na początek następnego wiersza(T)
Reset(zmp)-otwiera istniejący plik: dla pliku tekstowego do odczytu, dla pozostałych plików do odczytu zapisu(Z,T,B)
Rewrite(zmp)- tworzy nowy plik (lub kasuje zawartość pliku istniejącego) i otwiera go do zapisu(Z,T,B)
Seek(zmp,pozycja)-ustawia wskaźnik położenia na pozycję określonego rekordu(Z,B)
Write(zmp,zm)-zapisuje jedną lub więcej wartości do pliku tekstowego lub jeden rekord do innego pliku(Z,T,B)
Writeln(zmp,zm)-podobnie poprzednia z dopisaniem znaku końca wiersza(T)
Zmp- zmienna plikowa zm- zmienna
Z-pliki zdefiniowane
B-beztypowe
T-tekstowe
Zmienna wskaźnikowa - zmienna której wartość to adres do innej zmiennej, czyli adres do obszaru pamięci komputera zajmowanego przez inną zmienną.
Deklaracja:
Var
Nazwa_zmiennej:^typ;
wsk:=@zmienna; -przypisanie do zmiennej wskaźnikowej adresu zmiennej wskazywanej
wsk^:=wartości; -przypisanie wartości do zmiennej wskazywanej za pośrednictwem zmiennej wskaźnikowej
wsk:=nil; -przypisanie do zmiennej wskaźnikowej zerowego adresu(zmienna nam nic nie pokazuje)
Przykład
Zmienna wskazywana - zmienna, której adres zapamiętywany zostaje w zmiennej wskaźnikowej.
Wskaźnik - adres zmiennej wskazywanej wraz z typem tej zmiennej. Zmienne wskaźnikowe i wskaźniki: pozwalają na przyspieszenie programu, jeśli w przypadku dużych struktur przepisujemy wskazania na dane, a nie same dane; umożliwiają łączenie w logiczne struktury danych o różnych typach.
Zmienna statyczna - zmienna tworzona w trakcie kompilacji programu.
Zmienna wskaźnikowa i wskaźnik:
- pozwala na przyspieszenie programu, jeśli w przypadku duzych struktur przepisujemy wskazania na dane, a nie same dane
-umożliwiają łączenie w logiczne struktury danych i rożnych typach
Zmienna dynamiczna - zmienna tworzona w trakcie działania programu za pomocą procedur dynamicznego podziału pamięci. Zmienną dynamiczną: można usunąć w dowolnym momencie w trakcie działania programu; umożliwiają pracę z dużą ilością danych; umożliwiają oszczędniejszą gospodarkę pamięci, która jest przydzielona dopiero w fazie działania programu; pamięć operacyjna może być przydzielana a następnie zwalniana w trakcie realizacji programu, co ma szczególne znaczenie w systemach wielozadaniowych; zmienne dynamiczne wykorzystuje się do tworzenia struktur dynamicznych (list, drzew). Indeksy tablic dynamicznych zawsze zaczynają się od zera.
new(wsk); -utworzenie zmiennej dynamicznej i przypisanie do zmiennej wskaźnikowej adresu zmiennej
dispose(wsk); -usuniecie zmiennej dynamicznej (zmienna wskaźnikowa wciąż pokazuje na ten sam adres pamięci komputera)
Lista - uporządkowany zbiór elementów, składający się z elementów zwanych węzłami. Węzły są zmiennymi dynamicznymi, więc rozmiar listy można zmieniać w dowolnym momencie, w trakcie działania programu. Każdy węzeł składa się z dwóch części: danych i wskaźników do innych węzłów. Zmienna wskaźnikowa, w której zapamiętano adres pierwszego węzła nazywana jest głową lub korzeniem. Zmienna wskaźnikowa, w której jest adres ostatniego węzła to ogon.
Listy jednokierunkowe- w każdym węźle zapamiętywany jest tylko adres następnego węzła
Listy dwukierunkowe-
Tablice dynamiczne nie mają określonego rozmiaru. Rozmiar ten można dowolnie zmieniać w trakcie działania aplikacji. uwaga! indeksy tablic dynamicznych zawsze zaczynają się od zera!
Length(zmienna); -długość rozmiaru pierwszego (wiersza)
Lenght(zmienna [0]); -długość rozmiaru drugiego (kolumny)
Moduł(ang.unit)-zestaw typów własnych, stałych, zmiennych, procedur i funkcji zawartych w oddzielnym pliku. Plik modułu może mieć postać już skompilowaną. Nieskompilowana postać ma rozszerzenie .pas a skompilowana .dcu. Do tak napisanych typów, stałych, zmiennych, procedur i funkcji można się odwołać w nowo pisanym programie. Plik modułu najlepiej wtedy umieścić w tym samym katalogu, co pisany nowy program.
Składnia:
Unit nazwa;
Interface
//część publiczna
Implementation
//część prywatna
end.
Plik powinień mieć tą samą nazwę, co moduł. W tym przypadku: nazwa.pas (w w wersji skompilowanej: nazwa.dcu). Żaden typ, stała zmienna, czy procedura lub funkcja umieszczona tylko w części prywatnej nie jest dostępna ,,za zewnątrz modułu’’. Aby procedura, czy funkcja stała się publiczna, trzeba jej nagłówek umieścić w części publicznej modułu. Nazwy występujące w programie są nadrzędne w stosunku do tych występujących w modułach. Aby odwołać się do przesłoniętej nazwy z modułu, należy przed nazwą umieścić nazwę modułu i kropkę.
Do pomocy w wykonywaniu bardziej złożonych operacji edytorskich w Turbo Pascalu służy moduł Crt. Moduł ten nie jest zawarty w pakietach bor land i Turbo Delphi.
Ważniejsze polecenia
procedure MaxXy (Var maxX:integer; var maxY:integer);-rozmiar ekranu
Procedure ClrScr;-czyszczenie ekranu
procedure GotoXY (x,y:integer);- przemieszczenie kursora
procedure TextColor (txtColor,Bkcolor:byte);-kolor tekstu i wypełnienia
function WhereX: integer;-numer wiersza
function WhereY: integer;-numer kolumny
function readkey: char;-czekanie na klawisz
function KeyPressed:boolean;-czy klawisz został naciśnięty
procedure ClrEol;-czyszczenie do końca linii
Przeciążenie (ang.overloading)-stosowanie tej samej nazwy dla dwóch lub więcej procedur (funkcji). Rozstrzygnięcie, która z procedur (funkcji) ma być wywołana odbywa się automatycznie na pdstawie wypisanej liczby lub typów parametrów procedury (funkcji). Przeciążenie procedury musza być opatrzone klauzulą overload napisaną w nagłówku.
Pliki tekstowe
Pliki zdefiniowane
Baza danych