Algorytm – skończony i uporządkowany ciąg jasno określonych czynności koniecznych do rozwiązania zadania.
Schemat blokowy – graficzna prezentacja czynności wykonywanych w poszczególnych krokach algorytmu, ich wzajemnego powiązania oraz kolejności wykonywania.
Program - algorytm zapisany w języku programowania w postaci ciągu instrukcji.
Translator – program tłumaczący algorytm napisany w jednym języku na inny język.
Kompilator – program tłumaczący program źródłowy na język wyższego rzędu np.: assemblera lub bezpośrednio do kodu źródłowego.
Interpreter – program który analizuje poszczególne fragmenty kodu źródłowego, tłumaczy je na odpowiednie fragmenty kodu maszynowego i wykonuje je. Po wykonaniu jednego fragmentu występuje tłumaczenie i wykonanie kolejnego... i tak do usranej śmierci. Program wynikowy interpretera znajduje się w całości w pamięci operacyjnej.
Oprogramowanie komputera:
- podział oprogramowania komputera:
operacyjne (Windows, Linux, MacOS),
użytkowe (programy typu: Word, Open Office, Paint, Photoshop, CorelDraw),
narzędziowe (kompilatory: Turbo Pascal, C++, Java).
Współczesne języki programowania (Pascal. C, Java, HTML, PHP, JavaScript. itp.)
- klasyfikacja:
kompilowane - (C, Pascal) kod źródłowy musi być skompilowany do kodu maszynowego. Ich zaletą jest szybkość, kosztem przenośności.
interpretowane - (Perl) programy napisane w takim języku (tzw. Skrypty) są na bieżąco interpretowane (podczas wykonywania) do kodu maszynowego przez interpreter. Są wolne ale łatwe do przenoszenia.
prekompilowane - (Java) programy są kompilowane do kodu pośredniego (tzw. Kodu bajtowego) który jest zestawem instrukcji dla wirtualnej maszyny Javy – ten interpreter kodu bajtowego umożliwia wykonywanie programu. Przenośny i bezpieczny jednak wolniejszy od języków kompilowanych.
- podobieństwa i różnice:
Turbo Pascal – powstał w 1971 roku, bardzo dobry do nauki podstaw programowania dzięki prostej i ścisłej składni oraz czytelnej budowie programu, która łatwo może być modyfikowana. Język wprowadzony na rynek w 1983 roku.
C – opracowany i zrealizowany w latach 70-tych, język strukturalny, wysokiego poziomu jak np.: Pascal. Popularność zyskał dzięki nowoczesnemu sterowaniu, prostocie wyrażeń, nowoczesnym strukturom danych i wielkiemu bogactwu operatorów. Dobrze „zorientowany maszynowo” – np.: typy int, char, double itp. Są tłumaczone niemal w stosunku 1:1 na konstrukcje wewnętrznego kodu maszynowego.
C++ - obiektowa wersja języka C. Posiada dodatkowe konstrukcje umożliwiające programowanie obiektowe i usprawniające składnię proceduralną.
Delphi – środowisko programowania powstałe w 1995 roku przez firmę Borland w którym zaimplementowano język Object Pascal. Środowisko umożliwia programowanie w stylu obiektowym, ale nie ma takiego obowiązku. Środowisko obiektowe udostępnia aplikacjom okienkowym pełną standardową obsługę interfejsu realizowanej aplikacji. Wspomaga tworzenie okien oraz operacji z nimi związanych.
ADA – język opracowany przez Departament Obrony USA. Język uniwersalny do tworzenia dużych systemów oprogramowania o wysokim stopniu niezawodności. Wykorzystywany tam gdzie jest potrzebna niezawodność np.: w przemyśle militarnym, systemach obrony, transportu, medycznych. Składnia podobna do Pascala.
HTML – język oparty na znacznikach stosowany do pisania stron WWW. Strony pisane w języku HTML mogą powstać w dowolnym edytorze zapisującym pliki w formacie txt. Znaczniki są to teksty ujęte w nawiasy ostre <>. Dokument pisany w języku HTML powinien zaczynać się od znacznika <HTML> i kończyć znacznikiem </HTML>.
PHP – obiektowy, skryptowy język programowania zaprojektowany do generowania stron w czasie rzeczywistym. Specjalnie dostosowany do współpracy z serwerami WWW wykorzystywany do zwiększenia funkcjonalności narzędzi nieudostępnionych na stronach internetowych.
JavaScript – opracowany w 1995 roku, język skryptowy obsługiwany tylko przez przeglądarkę. Należy rozróżnić go od języka Java, lecz sama składnia obu języków jest bardzo podobna.
Java – obiektowy język programowania opracowany w 1991 roku. Składnia języka jest bardzo podobna do składni języka C++. Wynikiem kompilacji programów Javy jest kod pośredni (kod bajtowy) który później jest interpretowany przez maszynę Javy. Zapewnia to pełną przenośność oprogramowania napisanego w tym języku.
Aplikacja – samodzielny program, posiada pełny dostęp do zasobów udostępnionych przez system,
Aplet – program działający pod kontrolą innego programu, ma dostęp do zasobów które ten program mu udostępni.
Struktura programu w języku Object Pascal.
Struktura modułu w języku Object Pascal.
begin
{instrukcje}
end;
Moduł – wydzielony fragment kodu umożliwiający grupowanie definicji, klas, obiektów, typów.
Moduły standardowe:
- Messages – typy dla wszystkich standardowych komunikatorów Windowsa.
- Windows – funkcje związane z systemem operacyjnym np.: kopiowanie plików.
- SysUtils – deklaracja klas, wyjątków oraz procedur operujących.
- Classes – przechowuje deklaracje podstawowych klas obiektów.
- Graphic – implementacja systemowego modułu GPI.
- Controls – deklaracja klas od których pochodzą podstawowe kontrolki np.: TButton.
- Dialogs – pozwala na używanie standardowych okienek Windowsa (wczytaj, zapisz, czcionki itp.)
- Math – dodatkowe funkcje matematyczne.
Moduły niestandardowe:
??
Elementy języka Object Pascal:
Słowa kluczowe – zastrzeżone słowa języka, nie mogą być definiowane przez programistę:
and | array | as | asm | begin | case | class | const | constructor | destructor | dispinterface |div | do | downto | else | end | except | exports | file | finalization | finally | for | function | goto | if | implementation | in | inherited | initialization | inline | interface | label | library | mod | nil | not | object | of | or | out | packed | procedure | program | property | raise | record | repeat | resourcestring | set | shl | shr | string | then | threadvar | to | try | type | unit | until | uses | var | while | with | xor
Zmienne – elementy które przetrzymują wykorzystywaną wartość podczas działania programu. Zmienna musi być najpierw zadeklarowana (określenie typu zmiennej i przydzielenie jej pamięci), oraz zainicjowana (nadanie zmiennej wartości). Zmienne można podzielić na globalne(wykorzystywane w całym programie) i lokalne (wykorzystywane tylko w części programu np.: procedurze),
Identyfikatory - to ciąg liter lub cyfr zaczynający się od litery,
Operatory:
arytmetyczne (+ , - , * , / , div , mod),
logiczne (AND, NOT, OR, XOR),
relacyjne (= , <> , < , <= itp.).
Komentarze:
{komentarz}
(*komentarz*)
//komentarz
Deklaracje:
modułów (uses Math;)
stałych (const imie:= “Anna”;)
zmiennych ( var a,b : integer;)
typów (type identyfikator_typu_n = opis_typu).
Typy danych w języku Object Pascal
Zmienne liczbowe:
integer - wielkość 4 bajty, zakres danych: -2147483647 do 2147483647
byte - wielkość 1 bajt, zakres danych: 0 do 255
word - wielkość 2 bajty, zakres danych: 0 do 65535
smallint - wielkość 2 bajty, zakres danych: -32768..32767
int64 - wielkość 8 bajtów, zakres danych: -2^63..2^63-1
Single - [4 bajty] (1,5 * 10^-45 ... 3,4 * 10^38)
Double - [8 bajtów] (5,0 * 10^-324 ... 1,7 * 10^308)
Extended - [10 bajtów] (3,6 * 10^-4951 ... 1,1 * 10^4932)
Real - [8 bajtów] (5,0 * 10^-324 ... 1,7 * 10^308)
Real48 - [6 bajtów] (2,9 * 10^-39 ... 1,7 * 10^38)
Comp - całkowite [8 bajtów] (-2^63+1 ... 2^63-1)
Currency - rzeczywiste, stałoprzecinkowe [8 bajtów] (–922337203685477,5808 ... 922337203685477,5807
Zmienne tekstowe:
string - typ używany w pascalu, pierwszy bajt informuje o długości ciągu
pchar - typ używany m.in. w windows i c++, zerowy bajt oznacza koniec ciągu
zmienna logiczna:
boolean - pozwala przechowywać wartości: "true" i "false"
10.Tablice jednowymiarowe i dwuwymiarowe. Cechy tablic. Przykłady deklaracji tablic.
Deklaracja tablicy jednowymiarowej w Pascalu.
Oto przykład deklaracji 20-elementowej tablicy liczb całkowitych:
var tablica : array[1..20] ofinteger;
Odczyt/zapis elementów z/do tablicy w Pascalu.
Oto przykład zapisu wartości do elementu tablicy o indeksie 1:
tablica[1]:=123;
Oto przykład wypisywania na ekran wartości z tablicy czyli odczytu wartości z tablicy:
write(tablica[1]);
Deklaracja tablicy dwuwymiarowej.
Oto deklaracja tablicy dwuwymiarowej liczb całkowitych:
var tablica : array [1..20,1..20] ofinteger;
Wypełnianie tablicy dwuwymiarowej losowymi liczbami.
randomize;
for i:=1 to 20 do
for j:=1 to 20 do
begin
tablica[i][j]:=random(20);
writeln(tablica[i][j]);
end;
Zamiast tworzenia 20 różnych zmiennych (I,j,k,l…) moznastworzyc jedną tablicę I do niej zapisywać dane [1…20] <- tablica jednowymiarowa , dwudziestoelementowa.
[1...20][1…20] <- dwuwymiarowa , 400 elementowa
11.Pliki dyskowe. Tworzenie, czytanie, modyfikacja.
W bloku VAR piszemy identyfikator, a po dwukropku FILE OF i typ danych, które będziemy przechowywać w tym pliku. Jeśli będzie to plik z liczbami typu integer, to napiszemy
plik:FILE OF INTEGER;
aby korzystać z pliku na dysku, to należy wpierw go otworzyć. Ale aby otworzyć plik, to najpierw zmiennej plikowej należy przyporządkować nazwę pliku na dysku. Służy do tego procedura Assign. Jako jeden argument tej procedury podajemy zmienną plikową, a jako drugi, ścieżkę dostępu do pliku. Skoro przyprządkowaliśmy już zmiennej plikowej nazwę pliku to możemy ten plik otworzyć. Służą do tego procedury Reset, Rewrite i Append. Nie jest bez różnicy, której z nich użyjemy. Reset otworzy plik , ale jeśli plik nie istnieje na dysku, to wystąpi błąd wykonania, który spowoduje zakończenie działania programu. Rewrite utworzy nowy plik, ale gdy plik istniał na dysku, to procedura Rewrite nada mu zerową długość, co uniemożliwi odczytanie jego wcześniejszej zawartości. Append otworzy istniejący plik do zapisu (ustawiając wskaźnik plikowy, czyli takie coś, co wskazuje na aktualną pozycję w pliku, na końcu). Tej ostatniej procedury możemy użyć jedynie w przypadku plików tekstowych
Mając otwarty plik, możemy zapisywać do niego różne dane i odczytywać je. Służyć nam do tego będą procedury read i write. W tym wypadku dla tych procedur będziemy podawali dwa argumenty. Pierwszym z nich będzie identyfikator zmiennej plikowej, a drugim to, co chcemy wpisać, lub odczytać z pliku. Należy zwracać uwagę, na to, aby drugi argument miał typ taki, jaki jest typ danych przechowywanych przez plik. w innym wypadku wystąpi błąd. Gdy już zapiszemy coś do pliku i wiemy, że dalsze korzystanie z niego nie będzie w programie potrzebne, to trzeba go zamknąć, aby zachować wprowadzone informacje. Służy do tego procedura Close, dla której argumentem jest identyfikator zmiennej plikowej. Należy pamiętać, że nie można zapisywać do zamkniętego pliku, aby to zrobić, trzeba plik utworzyć ponownie.
PROGRAM Plik;
VAR
f:FILE OF STRING; {zmienna plikowa}
napis:STRING;
BEGIN
assign(f,'c:\pliktest.txt'); {przyporządkujemy plikowi nazwę}
rewrite(f); {otwieramy (nadpisujemy) plik}
ReadLN(napis);
WHILE (napis<>'') DO
BEGIN
WRITE(f,napis); {zapisujemy do pliku}
ReadLN(napis);
END;
Close(f); {Zamykamy plik}
writeln('Teraz ja!!!:');
reset(f);
WHILE NOT (Eof(F)) DO
BEGIN
Read(f,napis);
WriteLN(napis);
END;
close(f);
END.
Eof(f:FILE); sprawdza, czy plik przypadkiem się nie skończył (czy wskaźnik plikowy nie znalazł się na końcu pliku) i zwraca TRUE, gdy osiągnięto koniec pliku.
12.
Operatory arytmetyczne to operatory realizujące podstawowe działania matematyczne takie jak dodawanie, odejmowanie, mnożenie czy dzielenie.
Operatory arytmetyczne
+,-,*,/,
MODoperator dzielenia modulo. Wynik użycia operatora jest liczba całkowita będąca resztą z ilorazu argumentów np.
1 | begin |
---|---|
2 | WriteLn(5 mod 2); //Wypisze 1 |
3 | end. |
---|
div - operator dzielenia całkowitego. Wynik użycia operatora zwraca część całkowitą ilorazu argumentów np.
1 | begin |
---|---|
2 | WriteLn(5 div 2); //Wypisze 2 |
3 | end. |
---|
Operatory logiczne
not - to logiczne "nie" (negacja) - zaprzeczenie twierdzenia
and - logiczne "i" (koniunkcja) - twierdzenie będzie prawdziwe, jeśli wszystkie jego składniki będą równocześnie prawdziwe.
or - logiczne "lub" (alternatywa) - twierdzenie będzie prawdziwe, gdy co najmniej jeden z jego składników będzie prawdziwy.
13.
Instrukcja złożona jest ciągiem instrukcji poprzedzonych słowem kluczowym
begin i zakończonym słowem kluczowym end. Składnia Pascala wymaga
często użycia jednej instrukcji, podczas gdy dla realizacji celu niezbędne jest wy-
konanie wielu instrukcji. W tych przypadkach korzysta się z instrukcji złożonej,
która tworzy z ciągu instrukcji jedną instrukcję.
Składnia instrukcji złożonej:
begin
instrukcja_1;
instrukcja_2;
{ ...}
end;
14.Instrukcja warunkowa if. Rodzaje instrukcji warunkowych.
Instrukcja if sprawdza nam konkretny warunek zamknięty w nawiasie okrągłym. Warunek może być złożony, stosując do tego operatory logiczne. Jeżeli warunek jest spełniony (wyrażenie logiczne ma wartość 1) to jest wykonywana instrukcja która występuje zaraz po nawiasie warunku, lub cały blok. Jeżeli natomiast warunek nie jest spełniony, to jeżeli zdefiniujemy else jest wykonywana instrukcja lub blok zaraz po else. Składnia:
if(warunek)
{
instrukcja1; // Wykonana gdy warunek jest spełniony
}
else
{
instrukcja2; // Wykonana gdy warunek okazał się być nieprawdą
}
15. instrukcjacase
USES CRT;
VAR
liczba:byte;
BEGIN
clrscr;
writeln(' Wprowadź liczbę od 1 do 20');
read(liczba);
CASE liczba OF
1 : writeln('Liczba ta dzieli się przez 1');
2 : writeln('Liczba ta dzieli się przez 2 i 1');
3 : writeln('Liczba ta dzieli się przez 1 i 3');
4 : writeln('Liczba ta dzieli się przez 1,2 i 4');
5 : writeln('Liczba ta dzieli się przez 1 i 5');
6 : writeln('Liczba ta dzieli się przez 1,2,3 i 6');
7 : writeln('Liczba ta dzieli się przez 1 i 7');
8 : writeln('Liczba ta dzieli się przez 1,2,4 i 8');
9 : writeln('Liczba ta dzieli się przez 1,3 i 9');
10 : writeln('Liczba ta dzieli się przez 1,2,5 i 10');
11 : writeln('Liczba ta dzieli się przez 1 i 11');
12 : writeln('Liczba ta dzieli się przez 1,2,4,6 i 12');
13 : writeln('Liczba ta dzieli się przez 1 i 13');
14 : writeln('Liczba ta dzieli się przez 1,2,7 i 14');
15 : writeln('Liczba ta dzieli się przez 1,3,5 i 15');
16 : writeln('Liczba ta dzieli się przez 1,2,4,8 i 16');
17 : writeln('Liczba ta dzieli się przez 1 i 17');
18 : writeln('Liczba ta dzieli się przez 1,2,6,9 i 18');
19 : writeln('Liczba ta dzieli się przez 1 i 19');
20 : writeln('Liczba ta dzieli się przez 1,2,4,5,10 i 20');
readln;
END.
I krótki opis: Po wprowadzeniu zmiennej, piszemy instrukcję "CASE", a po niej nazwę zmiennej. Następnie widać słówko "OF" i zaczynamy pisać wszystkie możliwe wartości zmiennej. Gdy dana wartość będzie się zgadzała, następuje polecenie po dwukropku.
To samo napisane instrukcją if:
VAR
liczba:byte;
BEGIN
clrscr;
writeln(' Wprowadź liczbę od 1 do 20');
read(liczba);
IF liczba=1 THEN writeln('Liczba ta dzieli się przez 1');
IF liczba=2 THEN writeln('Liczba ta dzieli się przez 2 i 1');
IF liczba=3 THEN writeln('Liczba ta dzieli się przez 1 i 3');
IF liczba=4 THEN writeln('Liczba ta dzieli się przez 1,2 i 4');
IF liczba=5 THEN writeln('Liczba ta dzieli się przez 1 i 5');
IF liczba=6 THEN writeln('Liczba ta dzieli się przez 1,2,3 i 6');
IF liczba=7 THEN writeln('Liczba ta dzieli się przez 1 i 7');
IF liczba=8 THEN writeln('Liczba ta dzieli się przez 1,2,4 i 8');
IF liczba=9 THEN writeln('Liczba ta dzieli się przez 1,3 i 9');
IF liczba=10 THEN writeln('Liczba ta dzieli się przez 1,2,5 i 10');
IF liczba=11 THEN writeln('Liczba ta dzieli się przez 1 i 11');
IF liczba=12 THEN writeln('Liczba ta dzieli się przez 1,2,4,6 i 12');
IF liczba=13 THEN writeln('Liczba ta dzieli się przez 1 i 13');
IF liczba=14 THEN writeln('Liczba ta dzieli się przez 1,2,7 i 14');
IF liczba=15 THEN writeln('Liczba ta dzieli się przez 1,3,5 i 15');
IF liczba=16 THEN writeln('Liczba ta dzieli się przez 1,2,4,8 i 16');
IF liczba=17 THEN writeln('Liczba ta dzieli się przez 1 i 17');
IF liczba=18 THEN writeln('Liczba ta dzieli się przez 1,2,6,9 i 18');
IF liczba=19 THEN writeln('Liczba ta dzieli się przez 1 i 19');
IF liczba=20 THEN writeln('Liczba ta dzieli się przez 1,2,4,5,10 i 20');
readln;
END.Jak widzimy - działanie programu jest proste. Zastosowaliśmy tu dwadzieścia instrukcja warunkowych. Dotyczą one tylko jednej zmiennej ("liczba"). Możemy, zatem skorzystać z instrukcji CASE.
16. Rodzaje pętli. Jak działają i czym się różnią.
Pętla jest to instrukcja lub zestaw instrukcji do wykonania przez program pod określonym warunkiem. Jak sama nazwa wskazuje powtarza pewną czynność określoną ilość razy, działa dopóki warunek nie zostanie spełniony, bądź działa dopóki warunek jest. spełniany. Używamy jej przy czynnościach, które wymagają wielokrotnego powtarzania do określonego warunkiem momentu.
Jakie wyróżniamy rodzaje pętli?
W Pascalu są trzy rodzaje pętli: Repeat – Until, While – Do i For to do.
Każda pętla różni się kilkoma rzeczami, ale tak naprawdę robi to samo.
1. Pętla Repeat – Until
Budowapętli REPEAT – UNTIL:
\"REPEAT (instrukcje – oddzielone średnikami) UNTIL (warunek) \" – (powtarzaj);
Po słowie \"REPEAT\" wpisujemy instrukcje jakie mają być wykonywane przez program. Warunek zakończenia pętli jest podany na końcu po słowie \"UNTIL\", co oznacza że w chwili spełnienia warunku pętla skończy pracę. Wykonywane są w tej pętli wszystkie instrukcje między słowami \"REPEAT\" i \"UNTIL\". Taka konstrukcja pętli powoduje, że nawet gdy chcemy, aby w pętli wykonywało się kilka instrukcji, to nie musimy używać instrukcji grupującej (czyli \"begin...end;\").
Na przykład napiszmy coś takiego: \"Witam cię po raz 1, witam cię po raz 2 ... \" i tak dalej, aż do załóżmy 100. Chcemy, aby program wypisał 100 razy ten sam tekst z ciągle zwiększającą się liczbą o jeden. W takim przypadku trzeba zastosować pętle:
Program witaj;
USES CRT;
VAR
licznik:longint;
BEGIN
clrscr;
licznik:=0;
REPEAT
licznik:=licznik+1;
writeln(\'Witam cie po raz \',licznik);
UNTIL licznik=100
readln;
END.
A teraz wyjaśnienie. Na początku zdeklarowaliśmy zmienną o nazwie \"licznik\".
Zaraz po \"BEGIN\" czyścimy cały ekran i zerujemy licznik (przypisujemy wartość 0). Zaczynamy pętle. Od tego momentu, zatem, wszystko będzie powtarzane. Licznik przyjmuje wartość \"licznik+1\". Licznik miał wartość 0, zatem 0+1 jest jeden.
Licznik, więc ma wartość 1. Program rozkazuje napisać tekst i wstawić wartość licznika. Pętla się kończy, program sprawdza czy warunek jest spełniony. Aby pętla się zakończyła, wartość licznika musi wynosić 100. Nasz licznik aktualnie ma wartość 1. Zatem warunek nie został spełniony - program wraca do słowa \"REPEAT\".
I znowu - licznik zwiększa swoją wartość o 1, czyli ma już 2. Rozkazuje napisać tekst i wstawić licznik. Sprawdza warunek - warunek nie jest spełniony - i znowu \"REPEAT\" Licznik podnosi swoją wartość do 3 i tak dalej. Pętla się zakończy gdy wartość licznika będzie równa 100. Gdy pętla się zakończy, program wykonuje dalsze instrukcje (w tym wypadku jest to \"READLN\"), po czym zakańcza pracę.
2. Pętla For to Do
Budowa pętli FOR to DO:
\"FOR zmienna:=wartość początkowa TO wartość końcowa DO instrukcja\" – (dla);
Pierwsze słowo \"FOR\" to słowo kluczowe sygnalizujące, że w tym miejscu będzie pętla. Po nim następuje od razu inicjacja zmiennej sterującej pętlą \"for\".
Każda pętla for ma swoją zmienną sterującą, czyli licznik wykonywanych pętli. Przedtem taką zmienną trzeba zadeklarować, musi to być zmienną całkowita.
Pętla \"for\" ma to do siebie, że w każdym cyklu jej wykonania zmienna sterująca zostaje automatycznie zwiększona o 1. Po wartości początkowej pętli stawiamy słowo kluczowe \"TO\" a po nim liczbę będącą ogranicznikiem pętli, czyli wartość końcową. Po ograniczniku stawiamy słowo kluczowe \"DO\" (ang. wykonuj) i następnie jedną instrukcję, która będzie wykonywana w pętli. Oczywiście może być ich parę połączonych w jednym bloku (instrukcja złożona) stosując po słowie \"DO\" BEGIN i END koniecznie ze średnikiem na końcu instrukcji. Możemy użyć pętli także do odliczania w dół przez wpisanie słowa DOWNTO zamiast TO, wtedy program będzie liczył „od końca”, a wartość początkowa będzie większa od końcowej, odwrotnie niż w przypadku odliczania „od początku”.
program petla1;
usescrt;
var a:byte;
begin
for a:=1 to 10 do
begin
write(\'PETLA\');
end;
end.
program petla2;
usescrt;
var a:byte;
begin
for a:=10 downto 1 do
begin
write(\'PETLA\');
end;
end.
A teraz wyjaśnienie. Najpierw deklarujemy zmienną \"a\" jako liczbę z zakresu
0-255 (czyli byte). Teraz od zmiennej \"a\" równej 1 do liczby 10 program zrobi to co jest na dole po słowie BEGIN, czyli napisze słowo \"PETLA\" i powtórzy to 10 razy (bo taki był ustalony granicznik pętli), a następnie zakończy go.
Te dwa powyższe programy różnią się tym, że pierwszy wypisuje \"PETLA\"
od 1 do 10, a drugi od 10 do 1. W tym drugim licznik na początku przyjmuje wartość 10 i schodzi do 1, w pierwszym jest na odwrót, efekt jest taki sam.
3. Pętla While – Do
Budowa pętli WHILE – DO:
\"WHILE (warunek) DO (instrukcja)\" – (dopóki);
Po słowie WHILE wpisujemy warunek, który jest najczęściej jakimś wyrażeniem logicznym, czyli zwracającym jedną z dwóch wartości: prawda lub fałsz.
Po słowie kluczowym DO wstawiamy instrukcje. Gdy jednak chcemy zastosować więcej komend, trzeba zastosować instrukcje złożoną (grupującą). Pętla jest wykonywana tak długo, jak jest spełniony warunek wykonywania pętli.
programile;
usescrt;
var a:byte;
begin
write(\'Ile to 2+2? \');
readln(a);
while a=4 do
begin
writeln(\'Dobrze\');
end;
end.
A teraz wyjaśnienie. Deklarujemy zmienną \"a\" jako liczbę z zakresu 0-255 (byte)
Program wyświetla nam pytanie \"Ile to 2+2?\" . Po podaniu liczby program czyta naszą odpowiedź - to ważny moment w programie, a następnie porównuje z warunkiem. Jeśli odpowiedź czyli zmienna \"a\" będzie równa 4 wtedy program idzie dalej, jeśli nie będzie powtarzał pytanie aż do skutku. Tu następuje początek podprogramu, czyli tego co stanie się po wpisaniu prawidłowej odpowiedzi \"a\", u nas wyświetlenie tekstu \"Dobrze\" po czym koniec pętli, który musi być zakończony słowem END; (koniecznie ze średnikiem). Program ten będzie powtarzał pytanie: \"Ile to 2+2?\" tyle razy aż nie otrzyma odpowiedzi 4.
17.Przykłady stosowania pętli. Ciągi liczbowe.
18.Algorytmy sortowania.
programBubble_Sort_1;
constN = 20; // Liczebność zbioru.
var
d : array[1..N] ofinteger;
// Program główny
//---------------
var
i,j,x : integer;
begin
writeln(' Sortowanie babelkowe ');
writeln(' WERSJA NR 1 ');
writeln('----------------------');
writeln('(C)2005 Jerzy Walaszek');
writeln;
// Najpierw wypełniamy tablicę d[] liczbami pseudolosowymi
// a następnie wyświetlamy jej zawartość
randomize;
fori := 1toNdod[i] := random(100);
writeln('Przed sortowaniem:'); writeln;
fori := 1toNdowrite(d[i] : 4);
writeln;
// Sortujemy
forj := 1toN - 1do
fori := 1toN - 1do
ifd[i] >d[i+1] then// Porządek rosnący
begin
x := d[i]; d[i] := d[i+1]; d[i+1] := x;
end;
// Wyświetlamy wynik sortowania
writeln('Po sortowaniu:'); writeln;
fori := 1toNdowrite(d[i] : 4);
writeln;
writeln('Nacisnij Enter...');
readln;
end
19.
Procedura – jeśli musimy w programie wykorzystać kilka razy ten sam kawałek kodu, możemy ‘wrzucić’ ten kod w procedure a potem w programie wywoływać tą procedure (a kod w niej zawarty zostanie wykonany przez program). Dzięki temu nie musimy kilka razy pisać tego samego kodu w programie.
Procedure deklarujemy poza blokiem Begin.. End!
Aby skorzystać z procedury, musimy ją wywołać w programie: wystarczy wpisać nazwę tej procedury;
przykład deklaracji i wywołania:
Funkcja – to samo co procedura tylko zwraca jakąś wartość;
Deklaracja i wywołanie - tak samo jak dla procedury.
Funkcje są w swoim działaniu bardzo podobne do procedur. Właściwie w innych językach programowania, takich jak C++ czy Java, procedury w ogóle nie istnieją ? dostępne są jedynie funkcje. Podstawowa różnica pomiędzy procedurami a funkcjami polega na tym, że te drugie zwracają jakąś wartość.
Deklaracja funkcji następuje poprzez użycie słowa kluczowego Function. Oprócz tego funkcja, jak już mówiłem, musi zwracać jakąś wartość: po znaku dwukropka należy wpisać typ zwracanej wartości:
przykład deklaracji:
PRZYKŁADY FUNKCJI I PROCEDUR: http://4programmers.net/Delphi/Procedury_i_funkcje
Zmienna lokalna: Zmienne lokalne to zmienne deklarowanie w ciele procedury lub funkcji. Zmienne lub stałe deklarowane w ciele procedury nie są dostępne poza ową procedurą.
Zmienna globalna: zmienne deklarowane w programie, dostępne dla całego programu, a także funkcji i procedur umieszczonych w aplikacji. Pamięć dla zmiennych globalnych przydzielana jest w momencie uruchamiania aplikacji.
20.
Klasa - można powiedzieć, że klasa jest rodzajem zbioru, pewnym elementem programu, który wykonuje jakieś zadania. Klasa zawiera metody (procedury i funkcje), współdziałające ze sobą w celu wykonania jakiegoś zadania.
Załóżmy, że napisano klasę do obsługi poczty (wysyłanie i odbieranie). Klasa może zawierać procedury Connect (połącz), SendMail (wyślij e-mail), k(rozłącz). Z kolei procedura Connect może wywoływać inną, np. Error (która też jest procedurą znajdującą się w klasie), wyświetlającą komunikat o błędzie w razie niepowodzenia i zapisującą odpowiednią informację w dzienniku programu (czyli, inaczej mówiąc, w logach; plikach z rozszerzeniem *.log). Teraz taką klasę można wykorzystać w wielu swoich aplikacjach: wystarczy skopiować fragment kodu i już gotowa jest obsługa błędów, łączenie itp. Taką klasę można udostępnić innym użytkownikom lub swoim współpracownikom.
przykłady klas:
//DOPISAC
WIĘCEJ O KLASACH: http://4programmers.net/Delphi/OOP#id-Klasy
Obiekt -
http://pl.wikipedia.org/wiki/Obiekt_(programowanie_obiektowe)
http://4programmers.net/Delphi/NET/Elementy_języka_Delphi#id-Obiekty-w-Delphi
Komponenty Delphi: komponenty są obiektami, za pomocą których można bardzo szybko tworzyć programy. Można je porównać do klocków, z których układa się program. Przy tworzeniu programu wszystkie komponenty są widoczne dla programisty. Komponentem jest formularz, komponentem jest przycisk, pole wprowadzania tekstu, przełączniki, menu programu i tak dalej;
np.: komponent Label (czyli Etykieta) odpowiada w systemie Windows za wyświetlenie statycznego tekstu.
Dzielą się na:
wizualne (Button, Label)
nie wizualne (Dialog, MainMenu, PopUpMenu)
21.
Cechy programowania obiektowego:
//DOPISAC
22.
Z jakich plików składa się standardowa aplikacja Delphi:
//DOPISAC
23.
Standardowe własności komponentów Delphi:
Align - służy do wyśrodkowania komponentu, dostępnych jest sześć możliwości:
alNone - brak wyśrodkowania, komponent przyjmuje zdefiniowane wymiary i położenie
alLeft - wyrównanie do lewej krawędzi formy/panelu
alRight - wyrównanie do prawej krawędzi formy/panelu
alTop - wyrównanie do górnej krawędzi formy/panelu
alBottom - wyrównanie do dolnej krawędzi formy/panelu
alClient - komponent zajmuje całą powierzchnię formy/panelu
Caption i Text
jeżeli kontrolka posiada możliwość wyświetlania tekstu to tu deklarujemy jego treść
Color
tutaj definiujemy kolor komponentu; w liście dostępnej w Object Inspectorze znajdują się podstawowe barwy, większą ich ilość uzyskamy poprzez dwukrotne kliknięcie w polu wyboru
Enabled
podajemy informację o tym, czy komponent jest dostępny (TRUE- tak, FALSE- nie); jeżeli mamy np. Button na formie to gdy ustawimy właściwość na FALSE to nie będzie reagować na kliknięcie
Font
jeżeli komponent posiada możliwość wyświetlania tekstu to tu możemy ustalić jego czcionkę; więcej możliwości uzyskuje się poprzez dwukrotne kliknięcie w polu wyboru
Height
definiujemy wysokość komponentu
Left
położenie komponentu względem osi X
Name
nazwa komponentu, każdy komponent musi mieć inną nazwę, jeżeli położysz na formie dwa Labele to zauważysz, że nazywają się Label1 i Label2; nazw używamy, gdy odwołujemy się do komponentu z innego miejsca (np. Label1.Caption:='OK')
Top
położenie komponentu względem osi Y
Visible
deklarujemy czy komponent ma być widoczny, czy też nie
Width
szerokość komponentu
24.
Standardowe zdarzenia komponentów Delphi:
Click(Sender: TObject);
zwykłe kliknięcie na komponencie; (np. wstawiamy na formę Button i w zdarzeniu OnClick piszemy Form1.Caption:='Click';)
DblClick(Sender: TObject);
to samo co wyżej, lecz akcja zachodzi dopiero po dwukrotnym kliknięciu
KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
jeżeli klawisz został wciśnięty
KeyPress(Sender: TObject; var Key: Char);
to co wyżej
KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
jeżeli klawisz został zwolniony
MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
jeżeli trzymamy wciścnięty klawisz myszy
MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
jeżeli poruszamy myszką
MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
jeżeli klawisz myszki został zwolniony
25.
Konwersja typów:
Konwersja typów służy do przekształcania jednego typu na inny - w zależności od potrzeb.
przykłady:
FloatToStr Konwertuje liczbę zmiennoprzecinkową do formatu String
FloatToStrF Konwertuje liczbę zmiennoprzecinkową do formatu String z zachowaniem formatowania
IntToStr Konwertuje liczbę Integer do postaci łańcucha String
StrToFloat Konwertuje łańcuch do liczby zmiennoprzecinkowej
StrToInt Konwertuje łańcuch do liczby Integer