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

Автор публикации:

Дата публикации:

Краткое описание: ...


История возникновения языка программирования Паскаль

Паскаль был разработан в 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 [имя] можно вообще не писать, на работу программы он не влияет.

Комментарии в программе

Комментарии используются для пояснения некоторых участков кода программы.

Комментарии игнорируются компилятором и поэтому не влияют на выполнение программы.

Для записи комментария используют символы:

{ и }

Этапы создания компьютерной программы.

  1. Запуск среды Turbo Pascal

  2. Работа в окне редактирования Edit.

  3. Сохранение программы в файле.

  4. Запуск компилятора Compile (Alt+C).

  5. Выполнение программы Run (Alt+R)

  6. Просмотр результатов работы программы Alt+F5.

  7. Выход из среды 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 (а);


Integer

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] - который выполняется только в том случае если [условие] - ложно (не верно)

Замечание!

  1. Перед else символ ; (точка с запятой) не ставится.

  2. 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.

Цикл с предусловием

[pic]

Оператор цикла – 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<>'wwwdo {проверка выражения}

begin

s:=''; write('Введите нужное слово’);

readln(s);

end;

writeln('Вы ввели верное слово!');

END.




















Цикл с постусловием

[pic]


Оператор цикла – 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