На лекциях с паскалем нас конкретно прокатили, так что напишу вкратце здесь, что в этом забавном языке к чему

вообще программа состоит из описательных блоков часть из которых обязательно, часть нет. и собственно тела программы

1й блок самый короткий

Program xxx;

где xxx  - Собственно название программы.

2й блок

Uses 
System, unit1, unit2,..., unitn;

Здесь после слова Uses описываются используемые в программе сторонние модули. В этих модулях обычно находятся различные процедуры и функции, они же операторы.  допустим если вам надо в программе извлеч квадратный корень из числа, то по идее вы можете расписать алгоритм его вычисления, на что уйдет либо пара часов, либо несколько дней, а для кого то это может оказаться и вовсе непосильной задачей. Вот, что бы не изобретать колесо используют библиотки, например для того что бы вычеслить корень, достаточно подключить модуль Math; и тогда запись вида sqrt(a) вернет нам корень квадратный из а.

3й блок
-Блок описания переменных, синтаксис паскаля требует описать все переменные используемые в программе в отдельном блоке. Может показаться что это не удобно, по сравнению скажем с бейсиком. Но на самом деле это уберегает от большого колличества всяких бяк в дальнейшем - типа а откуда взялась эта переменная 0_0
В общем случае переменная - это ячейка памяти в которой мы можем хранить все, что нам заблагорассудится, зачем это нужно - для сохранения промежуточных результатов вычеслений. Примитивный пример 
(123342+43241) + (12332-43563)
понятное дело что мы можем забить этот пример в комп или калькулятор, и он нам его посчитает. Но если бы мы считали на бумаге то в общем случае делали бы так
(a+b)+(c+d)  1) сложим a+b = F1 - это число бы мы выписали на бумагу.
                     2) сложили с+d = F2 - записали результат F2 на бумаге
                   3) сложили F1+F2 - нашли ответ.
Собственно F1 и F2  - это наши переменные для временного хранения информации. Вообщем, переменная это ячейка в которой мы можем временно хранить определенный тип информации, какие - смотри в ниже

Var
a:integer;// переменная в которой будем хранить целые числа, типа 1 или 15236
b:real; // переменная в которой можно хранить вещественные числа типа 1.3333 или 12684.874387
s:string; // переменная в которой можно хранить строки типа: 'мама мыла раму'
p:char; // переменная в которой можно хранить символ: 'a' или 'b' или '№' или '4'
           // прим.: с символами не возможны арифметические преобразования
ps: array [1..100] of char; // массив символов от одного до ста... как ни странно позволяет хранить строки 'мама мыла раму'
                                       // хотя и с рядом ограничений.
zx: array[1..10,1..10] of real; // двух мерный массив вещественных чисел, - читай таже Матрица первые строки
                                           // вторые столбцы
b:boolean//булевая переменная, т.е. может хранить либо true либо false. про булины напишу отдельно если надо будет.

Блок описания переменных начинается  со слова Var

после чего может идти тело программы

begin
...
...
...
end.

начинается после слова бегин, заканчивается   end. ,

ну и маленький пример как оно все вместе выглядит

Program HelloWorld;
uses
system;
begin
writeln('HelloWorld');
end.

примитивная программа выводит на экран HelloWorld

Program HelloWorldAdvanced;
Uses
System;
var
s1,s2:string;
begin
s1:='Hello';
s2:='xxx';
if s2='World' then writeln(s1+s2)
                   else begin
                           s2:='World';
                           writeln(s2+s1);
                         end;
end.

Делает тоже самое, что и предыдущая, только показан пример работы с переменными, и условиями.

Что к чему во второй программе отпишусь попозже. Если, кто знает может попробовать объяснить вместо меня. За ошибки в коде и определениях не бейте, я не из учебника параграфы переписываю.