Методическое пособие. Изучаем Паскаль в школе.


История возникновения языка программирования Паскаль
Паскаль был разработан в 1979 году швейцарским математиком Николаусом Виртом в качестве учебного языка программирования. Вирт назвал его в честь французского ученого Блеза Паскаля, изобретателя счетной машины.
В 1980 году была впервые выпущена среда для программироания Турбо Паскаль. Эта среда интегрирует в себе: компилятор с языка Паскаль, текстовый редактор для редактирования кода программ, а так же средства отладки программ.
В 1995 году был разработан язык программирования Delphi, представляющий собой визуальную версию языка Паскаль.
Структура программы языка Паскаль
Программа на языке Паскаль имеет вид:
PROGRAM [имя];
[необязательный оператор USES];
[раздел описания];
BEGIN
[команды];
END.
[имя] - программы может содержать до 8 символов, состоящих из латинских букв и цифр (должно начинаться с буквы и не содержать пробела).
[Необязательные операторы USES] - указывает какие модули входят в программу.
[раздел описания] - указывает какие процедуры и функции, переменные, метки будут использованы в программе.
BEGIN - ключевое слово, указывающее, что за ним следует текст программы.
[команды] - команды языка программирования.
END. - указывает на окончание программы.
Команды заканчиваются символом ' ; ' - этот символ показывает окончание одной команды и начало следующей.Команды могут содержать произвольное количество пробелов, а так же могут быть разделены на несколько экранных строк и наоборот - несколько команд может быть в одной строке. В принципе вся программа на языке Pascal может быть записана в одну экранную строку.
Оператор присваивания.
А:= 7
Пример 1.1:
PROGRAM PP;{имя}
USES Crt;{подключение графического модуля, необязательные операторы USES,.}
Var x,y,c:integer;{раздел описания}
BEGIN
Clrscr; (очистка экрана)
x:=5;
y:=6;{команды}
c:=x+y;
writeln(‘c=’,c);
END.
Пример 1.2 (та же программа, записанная в 5 строк, а не в 8):
PROGRAM Pavel;
USES Crt; Var x,y,c:integer;
BEGIN
x:=5; y:=6; c:=x+y;
writeln(‘c=’,c);
END.
Примечание: оператор PROGRAM [имя] можно вообще не писать, на работу программы он не влияет.
Комментарии в программе
Комментарии используются для пояснения некоторых участков кода программы.
Комментарии игнорируются компилятором и поэтому не влияют на выполнение программы.
Для записи комментария используют символы:
{ и }
Этапы создания компьютерной программы.
Запуск среды Turbo Pascal
Работа в окне редактирования Edit.
Сохранение программы в файле.
Запуск компилятора Compile (Alt+C).
Выполнение программы Run (Alt+R)
Просмотр результатов работы программы Alt+F5.
Выход из среды Turbo Pascal Alt+X.
Комбинации клавиш для работы с буфером обмена
Действие Комбинация клавиш
Удалить выделенный фрагмент Ctrl+deleteВырезать в буфер Shift + delete
Копировать в буфер Ctrl +Insert
Вставить из буфера Shift + Insert
Описание переменных
Данный раздел описания обозначается ключевм словом Var, за которым через точку с запятой перечисляются
Var <имя переменной> : <тип переменной>;
Пример описания переменных:
Var c, d, e: Integer;{описание целых чисел}
Var a,b:real;{описание вещественных чисел}
Примечание: в разделе описания переменных, переменным можно задавать начальное значение (с:integer =160;). Переменные одинакового типа записываются через запятую, затем после двоеточия указывается их тип (c, d, e: Integer;). Команды
Write – вывод на экран, текст заключается в апострофы
Writeln - вывод на экран с переводом курсора в следующую строку.Например: Writeln (‘Привет’)
Read – ввод числа с клавиатуры
Readln - ввод числа с клавиатуры с переводом курсора в следующую строку.Clrscr (очистка экрана при подключении модуля Crt)
Стандартные функции
Abs(х) – вычисляет абсолютное значение аргумента х, то есть модуль х.
Sqr(х) – возводит в квадрат аргумент х.
Sqrt(х) – вычисление квадратного корня.
DIV - деление нацело, (C:=A div B)
Mod – остаток от деления (C:=A MOD B)
Cos(х) - Возвращает косинус аргумента.
Описание: Cos(x) (х: real)Примечания: Параметр x является выражением вещественного типа.
Результатом будет косинус x.
Предполагается, что это значение задает угол в радианах, т.е. x - это радианы, а не градусы.
Пример:
VAR
a:real;
BEGIN
a:=Cos(30);
END.
Функция Sin (х)
Назначение: Возвращает синус аргумента.
Функция Trunc(x) –возвращает целую часть числа Х, т.е. отбрасывает дробную часть.
Функция Round(x) – округляет до ближайщего целого.
Арктангенс.
Арктангенс а  есть  угол, заключенный в интервале от — π/2 до + π/2 (или от —90° до +90°), тангенс которого равен а.
Функция Arctan (а)
B:= Arctan (а);
Функция Тип данных аргумента Тип результата
DIV Только integer Целый
MOD Только integer Целый
Abs, SqrInteger
Real Integer
Real
Sqrt, sin, cos, ArctanНе важен Real
Trunc, Round Не важен Integer
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
Операция Действие Типы операндов Тип результата
+ Сложение (сохранение знака) Целый, вещественный Целый, вещественный
– Вычитание (отрицание знака) Целый, вещественный Целый, вещественный
* Умножение Целый, вещественный Целый, вещественный
/ Деление Целый, вещественный Вещественный, вещественный
Форматы записи вещественных переменных
Переменные вещественного типа выдаются на экран в особой экспоненциальной форме.
Числа с десятичной точкой могут записываться в двух формах:
1.Обычная форма. 2,7 записывается как 2.7
2. Запись с экспонентой: число представляется в виде мантиссы, т.е. дробной части, умноженной на 10 в некоторой степени.
Например: 2700=2,7*103 , число 10 записывается в виде буквы Е, а дальше идет величина степени: 2,7Е+3.
Например:0,002=2*10-3 =2Е-3
Вывод на экран в обычной форме:
writeln(‘c=’,c:6:3);Для числа С отводится 6 позиций, 3 позиции после десятичной точки.
Команды ввода и вывода.
Для вывода даных на экран или для записи в файл используют комнды: write (a1, a2, a3) и writeln (a1, a2, a3). Где a1, a2, a3 - переменные или константы. Также используют эти команды для вывода сообщений: текста или просто симвлов. Эти две команды различны между собой только тем, что после выполнеия команды write курсор не переходит на другую строку, а в команде writeln - переходит.
Пример вывода на экран сообщения:
write('Это сообщение...');
Для ввода данных используют команды:
read (a1, a2, a3) и readln (a1, a2, a3). Где a1, a2, a3 - переменные. Эти две команды также различны между собой только тем, что после выполнеия команды read курсор не переходит на другую строку, а в команде readln - переходит.
Пример ввода данных:
readln(a);
Пример. Определить количество сотен, десятков и единиц числа: Х = 324
a:=X mod 10; {a = 4}
b:=X div 10; {b=32}
c:=b mod 10; {c=2}
d:=b div 10; {d=3}
Оператор условия - ifУсловный оператор предназначен для выполнения какого-нибудь действия при выполнении определенного условия.
Условный оператор имеет вид:
if [условие] then [оператор 1] else [оператор 2];
[условие] - некоторое логическое выражение (например: a=5); [оператор 1] - который выполняется только в том случае если [условие] - истинно (верно) [оператор 2] - который выполняется только в том случае если [условие] - ложно (не верно)
Замечание!
Перед else символ ; (точка с запятой) не ставится.
else [оператор 2]; - могут отсутствовать, если в этом нет необходимости.В таком случае условный оператор принимает вид:
if [условие] then [оператор 1];
Пример. Программа выводит пример 12+16= , а пользователь вводит ответ решения этого примера. А после этого программа проверяет: правильно ли ввел пользователь ответ, если правильно, то пишет "Ответ правильный!".
если ответ введен не верно, то программа напишет "Ответ не верный!"
VAR
a:integer;
BEGIN
writeln('Решите этот пример и введите ответ:');
write('12+6=');
readln(a);
if a=12+6 then
writeln('Ответ правильный!')
else
writeln('Ответ не верный!');
END.
Теперь если вы вводите число 18, то пишется "Ответ правильный!", а если другое число, то пишется "Ответ не верный!".
СИМВОЛЬНЫЙ ТИП ДАННЫХ
Символьный тип Char занимает объем памяти равный 1 байту и может принимать только 1 символ из введенной строки.
В таблице кодов коды символов упорядочены. Таким образом для каждого элемента типа Char всегда есть предшествующий и последующий элементы. Такой тип данных называется порядковым.
Тип Char – порядковый тип.
Функции
Ord(х) – возвращает код символа, занесенного в переменную Х.
Chr(N) – возвращает символ по заданному коду
Pred(X)- возвращает предшествующий элемент относительно значения переменной Х.
Succ (X) –возвращает последующий элемент относительно значения переменной Х.
Пример программы.
Program p1;
VarN: integer;
X: Char;
Begin
x:=’L’;
Writeln(x);
n:=ord(x);
Writeln(n);
x:=chr(n);
Writeln(x);
End.
Ввод символов с клавиатуры
Program p2; {введите авс (х) и сат(у) и проверьте результат}
VarX,Y: Char;
Begin
Readln(x);
Writeln(x);
Readln(x,y);
Writeln(x,y);
End.
Строковый тип
Переменная строкового типа задается набором символов, заключенных в кавычки.
Примеры описания:
VAR
s : string[25]; { Длина переменной s может изменяться от 1 до 25 символов }
s1 : string; { длина переменной s1 не указывается, наибольшее число символов равно 255 }
Примеры присвоения значения:
s := 'Привет';
s1 := 'Hello';
ОПЕРАЦИИ СО СТРОКАМИ
Операция Действие Типы операндов Тип результата
+ Конкатенация (склеивание) Строковый, символьный Строковый
ЦЕЛЫЕ ТИПЫ ДАННЫХ
Тип Диапазон значений Требуемая память
Integer -32768 .. 32767 2 байта
Longint -2147483648 .. 2147483647 4 байта
Блоки операторов
В структуре
if [условие] then [оператор 1];
после служебного слова then должен стоять только один оператор.
Если требуется выполнить несколько операторов подряд, то их заключают в блок, образуемый операторами
begin и end
if a > 5 then
beginc:=a+10;
writeln('a=',a);
end;
END.
Оператор цикла с параметром - forОператор цикла с параметром имеет вид:
for [переменная]:=[значение1] to [значение2] do [оператор];
[переменная] – переменная, которая будет изменяться, эта переменная счетчик повторения цикла[значение1] - начальное значение [переменной][значение2] - значение до которого может увеличиваться (уменьшаться) [переменная], т.е. когда [переменная]=[значению2] цикл прекращается.
Примечание: вместо [значения1] и [значения2] может стоять выражение или переменная.
Пример. Выводится символ "@", но еще с указанием номера символа.
VAR
х:integer;
BEGIN
for x:=1 to 20 do writeln(x,' @');{весь цикл}
END.
В данной программе начальное значение переменной x=1. Цикл будет выводить на экран значение самой переменной - x и символ - '@' до тех пор пока x не будет равно 20 т.е. цикл будет выполняться 20 раз.
Второй вид цикла с параметром имеет вид:
for [переменная]:=[значение1] downto [значение2] do [оператор];
Как можно заметить, этот вид оператора цикла с параметром отличается только ключевым словом - downto. Данное ключевое слово означает, что значение [переменной] после выполнения [оператора] будет уменьшаться на единицу.
Пример. Программа, которая выводит цифры от 9 до 1.
VAR
x:integer;
BEGIN
for x:=9 downto 1 do writeln(x);
END.
ЛОГИЧЕСКИЙ ТИП ДАННЫХ
Логический тип Boolean определяет те данные, которые могут принимать логические значения TRUE (истина) и FALSE (ложь). Переменные такого типа называются булевыми переменными. Данный тип занимает объем памяти равный 1 байту. Булевские переменные можно выводить на экран, но нельзя вводить с клавиатуры.Пример.
Program bool;
Var X:integer;
b:Boolean;
Begin
X:=4;
b:=X>3;
writeln(b);
b:=X<3;
writeln(b);
end.
Операции отношения
Операция Действие
= Равно
<> Не равно
< Меньше чем
> Больше чем
<= Меньше или равно
>= Больше или равно
Например: 2<х<4 записывается в программе: (х>2) and (х<4)
ЛОГИЧЕСКИЕ ОПЕРАЦИИ
Приоритет Операция Действие
1 not Отрицание
2 and И
3 or ИЛИ
3 xor Исключающее ИЛИ
Пример: записать выражение, которое истинно, если 8<х<9.
Program pr;
Var x:real;
b:boolean;
beginreadln(x);
b:=(x>8) and (x<9);
writeln(b);
end.
334454544196000Цикл с предусловием

Оператор цикла – while ("пока")
Оператор цикла имеет вид:
while [логическое условие] do [оператор];
Пример 1. Необходимо вывести в столбик на экран 10 символов «*».
VAR
i: integer; {счетчик повторов}
BEGIN
i:=0;{начальное значение}
while i<10 do{проверка выражения}
begin {начало составного оператора}
writeln('*'); {напечатать символ *}
i:=i+1; {увеличить значение счетчика}
end; {конец составного оператора}
END.
Пример 2. Программа, которая требует ввести «WWW».
VAR
s: string; {s–пер.строкового типа}
BEGIN
while s<>'www’ do {проверка выражения}
begin s:=''; write('Введите нужное слово’);
readln(s);
end;
writeln('Вы ввели верное слово!');
END.
303276017462500Цикл с постусловием

Оператор цикла – repeat ("до")
Оператор цикла "до" имеет вид:
repeatтело цикла
until [логическое выражение];
Цикл "до" отличается от цикла "пока" тем, что операторы в нём выполняются хотя бы один раз.
Операторы BEGIN и END здесь не требуются.
Пример. Программа, в которой 10 раз выводится символ "*".
VAR
i:integer;
BEGIN
i:=0; {начальное значение счетчика}
repeat {начало цикла "до"}
writeln('*');{напечатать символ}
i:=i+1; {увеличить счетчик-i}
until i=10;{цикл закончится,если i=10}
END.
Описание констант
Обозначается: ConstПример описания констант:
Const
A=1.0E+15; {A=1015}
B=100;
Функции
Random(М)- датчик случайных чисел. Выдает случайное число в интервале от 0 до М-1.
Например.
PROGRAM ra;
const N=10; { Количество элементов в массиве }
Var A:Array [1..N] of Integer; { Описание типа массива }
i: Integer; { Параметр цикла }
BEGIN
For i:=1 to N do
A [ i ] := random(100);
END.
Функция Pi
Назначение: Возвращает значение 3.1415926535897932385 (значение числа Pi). Описание: function Pi: Real;
Пример
VAR
S,r:real;
BEGIN
r:=5;
s:=2*Pi*r;
writeln('Длина окружности радиуса r=', r:1:0,' равна: ',s:3:1);
END.
Оператор Break
Прерывает выполнение цикла и передает управление оператору, который должен выполняться после окончания цикла.
Двумерные массивы
Главная диагональ
1вариант
А[1,1]
А[1,2] А[1,3] А[1,4] А[1,5]
А[2,1]
А[2,2] А[2,3] А[2,4] А[2,5]
А[3,1]
А[3,2] А[3,3] А[3,4] А[3,5]
А[4,1]
А[4,2] А[4,3] А[4,4] А[4,5]
А[5,1]
А[5,2] А[5,3] А[5,4] А[5,5]
Выше главной диагонали:
Строки i=1 до n
Столбцы: от (i+1) до n
Индексы элементов главной диагонали всегда совпадают друг с другом.
Для индексов элементов, расположенных над главной диагональю выполняется отношение i < j.
Для индексов элементов, расположенных под главной диагональю выполняется отношение i > j.
Побочная диагональ
2 вариант
А[1,1]
А[1,2] А[1,3] А[1,4] А[1,5]
А[2,1]
А[2,2] А[2,3] А[2,4] А[2,5]
А[3,1]
А[3,2] А[3,3] А[3,4] А[3,5]
А[4,1]
А[4,2] А[4,3] А[4,4] А[4,5]
А[5,1]
А[5,2] А[5,3] А[5,4] А[5,5]
Выше побочной диагонали:
Строки i=1 до n
Столбцы: от 1 до n-iПобочную диагональ квадратного двумерного массива образуют элементы, расположенные между элементом в верхнем правого элементом в нижнем левом углах массива, включая сами эти элементы.
Взаимосвязь индексов элемента побочной диагонали, стоящего на пересечении i-строки и j-го столбца, выражается соотношением.
i + j = n + 1
Символьные строки
Описание.
VarS:string;
В этом случае под строку S выделяется 256 байтов.
Непосредственно для символов строки отводится 255 байтов, а один байт (самый начальный) предназначен для хранения длины строки.
Можно явно указыватьмаксимальный размер строки.
Например: S:string[50]
строка может содержать от 0 до 50 символов.
Процедуры для вставки и удаления символов.
Процедура Delete
Назначение: Удаляет из строки подстроку.
Описание: Delete (Str, Num, N);
Функция Delete удаляет N символов из Str начиная с позиции Num.
VAR
st: string;
BEGIN
st:='треугольник';
Delete(st,4,7); { результат: st='трек' }
END.
Процедура Insert
Назначение: Вставляет в строку подстроку.
Insert (Str1, Str2, Num)
Str1-строка, которая вставляется в строку Str2, начиная с позиции Num.
Str1:='Петя!';Str2:='Привет,';Insert(Str1,Str2,7);
Получаем: Привет, Петя!
Функция Length(Str) – вычисляет длину строки StrФункция COPY
Назначение: выделяет из строки подстроку
COPY (Str1, Num, N)
Str1- исходная строка.Num – позиция выделяемой подстроки.
N – число выделяемых символов.
Str1:='Петя,Вася,Олег';
Str2:= COPY (Str1, 6, 4)
Получаем: Вася
Функция ConcatНазначение: сложение строк
Concat(Str1,Str2,Str3,…)
Str1:='Петя'
Str2:='Вася'
Str3:= Concat(Str1,Str2)
Получаем: ПетяВасяФункция posОписание: pos (Str1, Str2)- позволяет обнаружить первое появление в строке Str2 подстроки Str1. Результат представляет собой номер позиции(целый тип), где находится первый символ подстроки Str1.
Str1:='Вася'
Str2:='Петя,Вася,Олег'N:= pos (Str1, Str2) Получаем: 6