APR, ćwiczenia 1

Na zajęciach z przedmiotu Algorytmy i programowanie główny nacisk położony będzie na algorytmy. Mimo to programowanie tych algorytmów jest integralną częścią kursu i bardzo pomaga w opanowaniu i zrozumieniu rozważanych zagadnień.

Poprawność napisanych przez siebie programów można automatycznie sprawdzać używając specjalnego systemu, tzw. sprawdzarki.

Sprawdzarka

Do sprawdzarki można dostać się logując się na stronie http://sprawdzarka.wmi.amu.edu.pl/. Przed pierwszym logowaniem należy się zarejestrować używając zakładki Rejestracja po prawej stronie u góry. Login można wybrać dowolny, najlepszy jednak byłby jakiś oparty o imię i nazwisko (ułatwiają mi Państwo tym samym życie). Jeżeli ktoś bardzo mocno chce inny login, proszę pamiętać o uzupełnieniu imienia i nazwiska w profilu.

Po utworzeniu profilu i zalogowaniu proszę dodać się do odpowiedniej grupy ćwiczeniowej.

Zadanie 1. Zalogować się na sprawdzarkę i rozwiązać zadanie Hello world wysyłając kod W Pascalu. Dla początkujących: kod rozwiązania znajduje się poniżej:

program Hello;
{$APPTYPE CONSOLE}
begin
WriteLn('Hello world!');
end.

Szerzej o rozwiązywaniu zadań na sprawdzarce można przeczytać tutaj.

Pierwsze kroki z językiem Pascal

Język Pascal powstał w latach 80-tych XX wieku. Jednym z założeń przy projektowaniu tego języka było aby mógł służyć do nauki programowania strukturalnego studentom rozpoczynającym przygodę z programowaniem. Jak to bywa, z biegiem czasu rozszerzano możliwości Pascala, tworząc język ogólnego zastosowania, w którym powstało nawet kilka liczących się programów. Najbardziej znanym środowiskiem, które powstało w celu wspierania programowania w Pascalu to Turbo Pascal firmy Borland i jego duchowy następca, środowisko Delphi. Delphi jest nadal rozwijane i sprzedawane. Na zajęciach będziemy korzystać z programu Lazarus, który z założenia ma być podobny do oryginalnego Delphi, a który można pobrać ze strony domowej projektu na wolnej licencji.

Lazarus znajdziemy w menu Start (Start > Wszystkie programy > Development > Lazarus).

Programy, które będziemy tworzyć będą z reguły programami konsolowymi. Programy tworzymy w Lazarusie w ramach projektów. Projekt zawiera pliki z instrukcjami w języku Pascal składające się na aplikację. Nasze projekty będą na razie składały się tylko z jednego pliku.

Zadanie 2. Przetestować w programie Lazarus poniższy kod. Przeanalizować strukturę prostego programu w Pascalu: dyrektywę procedure, deklarację nazw zmiennych i ich typów oraz wczytywanie do programu danych i wypisywanie wyników. Program jest rozwiązaniem zadania A+B na sprawdzarce.

program Suma;
{$APPTYPE CONSOLE}
var
a, b: Integer;
begin
ReadLn(a, b);
WriteLn('suma=', a+b);
end.

Jak Państwo zauważyli, okienko konsoli systemu Windows zamyka się natychmiast po zakończeniu wywołanego programu. Dla sprawdzarki nie jest to problemem, ale może uniemożliwić testowanie i przejrzenie końcowych wyników. Aby zapobiec temu zachowaniu, można postąpić następująco:

program Suma;
{$APPTYPE CONSOLE}
var
a, b: Integer;
begin
ReadLn(a, b);
WriteLn('suma=', a+b);
ReadLn;
end.

Należy jednak usunąć (lub wykomentować) przedostatnią linijkę z ReadLn przed wysłaniem programu na sprawdzarkę, w przeciwnym wypadku dostaniemy błąd przekroczenia czasu.

Zadanie 3. (domowe) Przeanalizować poniższy program. Dla niektórych danych program nie działa poprawnie. Dla jakich? Przemyśleć działanie programu dobrze radzącego sobie z wszystkimi możliwymi danymi.

program pierwiastki;
{$APPTYPE CONSOLE}
function Delta(a, b, c: Real): Real;
begin
Delta := b*b - 4*a*c;
end;
function x1(a, b, c: Real): Real;
begin
x1 := (-b + sqrt(Delta(a, b, c))) / (2*a);
end;
function x2(a, b, c: Real): Real;
begin
x2 := (-b - sqrt(Delta(a, b, c))) / (2*a);
end;
var
a, b, c: Real;
begin
WriteLn('Podaj współczynniki trójmianu:');
Write('a = ');
ReadLn(a);
Write('b = ');
ReadLn(b);
Write('c = ');
ReadLn(c);
WriteLn('Pierwiastkami równania ',
a, '*x^2 + ', b, '*x + ', c, ' = 0 są:');
WriteLn('x1 = ', x1(a, b, c), ', x2 = ', x2(a,b,c));
end.