- Учителю
- Методическое пособие. Изучаем Паскаль в школе.
Методическое пособие. Изучаем Паскаль в школе.
История возникновения языка программирования Паскаль
Паскаль был разработан в 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.
Комбинации клавиш для работы с буфером обмена
-
Описание переменных
Данный раздел описания обозначается ключевм словом 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 (а);
IntegerReal
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;
Var
N: integer;
X: Char;
Begin
x:='L';
Writeln(x);
n:=ord(x);
Writeln(n);
x:=chr(n);
Writeln(x);
End.
Ввод символов с клавиатуры
Program p2; {введите авс (х) и сат(у) и проверьте результат}
Var
X,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';
ОПЕРАЦИИ СО СТРОКАМИ
ЦЕЛЫЕ ТИПЫ ДАННЫХ
Блоки операторов
В структуре
if [условие] then [оператор 1];
после служебного слова then должен стоять только один оператор.
Если требуется выполнить несколько операторов подряд, то их заключают в блок, образуемый операторами
begin и end
if a > 5 then
begin
c:=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)ЛОГИЧЕСКИЕ ОПЕРАЦИИ
Пример: записать выражение, которое истинно, если 8<х<9.Program pr;
Var x:real;
b:boolean;
begin
readln(x);
b:=(x>8) and (x<9);
writeln(b);
end.
Цикл с предусловием
Оператор цикла - 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.
Цикл с постусловием
Оператор цикла - 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
Символьные строки
Описание.
Var
S: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
-