Основные элементы языка ПАСКАЛЬ

Среди современных языков программирования один из самых популярных является язык Паскаль. Этот язык разработан в 1971 году профессором Никлусам Виртом и назван в честь Блеза Паскаля – французского ученого, изобретателя механической вычислительной машины.

I. Алфавит

Алфавит языка программирования – это конечный набор знаков, состоящих из букв, цифр, знаков операций, скобок, специальных символов.

·  букв латинского алфавита(прописные и строчные);

·  арабские цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

·  специальные символы: . , + - = * / ; : ‘

·  знаки логических операций:

Ø  = - равно

Ø  < > - не равно

Ø  < - меньше

Ø  > - больше

Ø  <= - меньше или равно

Ø  >= - больше или равно

·  слова разделяются пробелами, знаком подчеркивания;

·  имя переменной – последовательность букв и цифр

(до 63 символов), которая начинается с буквы;

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

отдельных ее частей и ограничивается { } или (**):

Пример: {программа расчета}

2. Правила языка

Правила построения языковых конструкций называют синтаксисом языка. Он представляет состав допустимых конструкций языка и форму их записи.

Смысловые правила использования и интерпретации конструкций языка называют семантикой языка.

·  использовать буквы латинского алфавита;

·  в конце оператора ставить точку с запятой;

·  выражения записываются в строку. Двухэтажные выражения, верхние и нижние индексы не допускаются:

Пример: (А1*Х2+А2*Х2)/(Х1-Х2);

·  в правильно записанном выражении число открывающихся и число закрывающихся скобок должно быть равным;

·  использовать скобки только одного вида – круглые;

·  нельзя записывать подряд два знака операций;

·  операция присваивания записывается а:= в+d.

3. Выражения, операции, операнды

Выражение – это конструкция языка, задающая порядок выполнения действий над элементами данных. Выражение состоит из операндов, круглых скобок и знаков операций.

Операнд – величина или выражение, над которым производится операция.

Операция – действие, которjе надо выполнить над операндами.

Знак операции

Назначение

Приоритет

+

Сложение

2

-

Вычитание

2

*

Умножение

1

/

Деление

1

A div B

Целочисленное деление. Операнды А и В и результат операции div – только целочисленного типа

1

A mod B

Остаток от деления

Операнды А и В и результат операции mod – только целочисленного типа

1

Целочисленное деление (DIV) отличается от обычной операции деления тем, что вычисляет целую часть частного, дробная отбрасывается. Перед выполнением операции оба операнда округляются до целых значений. Результат целочисленного деления всегда равен нулю, если делимое меньше делителя.

Деление по модулю (MOD) вычисляет остаток, полученный при выполнении целочисленного деления.

Приоритет - очерёдность выполнения операций в выражениях.

4. Математические функции

Функция

Запись в языке PASCAL

Тип аргумента

Тип результата

׀

abs(x)

Integer, real

Integer, real

x2

sqr)x)

Integer, real

Integer, real

sqrt(x)

Integer, real

Real

sin x

sin(x)

Integer, real

Real

cos x

cos(x)

Integer, real

Real

ex

exp(x)

Real

Real

ln x

ln(x)

Real

Real

Пи

Pi

Real

Trunc(x)

Преобразует вещественный аргумент Х в целое число путём отбрасывания дробной части.

Round(x)

Преобразует вещественный аргумент Х в целое число путём округления до ближайшего целого.

Формирование случайного числа

Random(x)

word

integer

Оператор, позволяющий генерировать новую последовательность случайных чисел при новом запуске программы на выполнение

Randomize

Переменная – это ячейка (или несколько ячеек) оперативной памяти компьютера, которой присвоено определённое имя. Её содержимое может изменяться в ходе выполнения программы.

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

Идентификатор - это имя переменной или программы. Идентификатор может содержать любое количество символов, но распознаются только 63 первых из них. Идентификатор должен начинаться с буквы или знака подчёркивания.

Зарезервированные слова – это слова, имеющие вполне определённый смысл и определённое название. Их нельзя изменять: любая неточность в написании таких слов является серьёзной ошибкой. Интегрированная среда Турбо Паскаль настроена так, что выделяет зарезервированные слова другим цветом, отличными от цвета символов основного текста программы.

5. Структура программы

Программа представляет собой последовательность операторов и других элементов языка, построенную в соответствии с определёнными правилами и предназначенную для решения определённой задачи.

Программа на языке Паскаль состоит из строк. Программист, набирая текст программы, имеет право произвольно располагать строки на экране, но обязательно нужно использовать отступы от левой границы экрана с целью получить наиболее удобный для чтения текст программы.

НЕ нашли? Не то? Что вы ищете?

Структура программы на языке Pascal

Program name

Раздел описаний

BEGIN

Раздел операторов

END.

В начале программы находится заголовок, состоящий из зарезервированного слова Program, имени программы и параметров, с помощью которых программа взаимодействует с операционной системой.

Заголовок программы в Паскале может отсутствовать, так как совершенно не связан с именем внешнего файла, содержащего текст программы.

Параметрами программы обычно являются стандартные идентификаторы стандартных файлов ввода-вывода Input и Output(их можно не указывать).

После заголовка следует:

·  список библиотечных модулей (зарезервированное слово USES);

·  описание меток;

·  описание констант;

·  описание типов данных;

· 

Раздел VAR

 
описание переменных;

·  описание процедур и функций;

·  раздел операторов.

Любой раздел, кроме раздела операторов, может отсутствовать.

Разделы описания (кроме Uses, который всегда расположен после заголовка программы) могут встречаться в программе любое количество раз и следовать в произвольном порядке. Главное, чтобы все описания объектов программы были сделаны до того, как они будут использованы.

Раздел описания переменных. Каждая встречающаяся в программе переменная должна быть описана. Раздел описания переменных начинается зарезервированным словом VAR, затем через запятую перечисляются имена однотипных переменных и через двоеточие следуют их тип с точкой запятой.

В этом разделе размещается тело подпрограмм, которые имеют ту же структуру, что и основная программа (с ними познакомимся в 11 классе).

Раздел операторов является основным, так как именно в нём с предварительно описанными переменными, константами выполняются действия, позволяющие получить результат, ради которого создавалась программа.

Раздел операторов начинается зарезервированным словом BEGIN(начало), далее следуют операторы языка, отделённые друг от друга точкой с запятой. Завершается раздел зарезервированным словом END.(конец) с точкой.

Операторы выполняются строго последовательно в том порядке, в котором они записаны в тексте программы в соответствии с синтаксисом и правилами пунктуации.

Слово begin и end являются аналогом открывающейся и закрывающейся скобки в обычных арифметических выражениях.

6. Комментарии.

Для лучшего понимания программы в ней записывается пояснительный текст – комментарий, который можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничен символами {} или

(* *) и может содержать любые комбинации латинских и русских букв, цифр и других символов алфавита Паскаля. Ограничений на длину комментария нет, он может занимать несколько строк. Комментарий игнорируется компилятором, поэтому никакого влияния на программу не оказывает. В удачно прокомментированной программе легко найти ошибку.

7 .Переменная - это область оперативной памяти, занимающая несколько ячеек и имеющая свое имя. Переменная обладает следующими свойствами:

Ø  переменная хранит не более 1 значения;

Ø  переменная способна хранить значения только одного и того же типа;

Ø  переменная хранит значение до тех пор, пока в нее не поместят новое значение, при этом предыдущее содержимое переменной стирается;

Ø  значение переменной может быть вызвано для использования сколько угодно раз без изменения оригинала;

Ø  к началу выполнения программы содержимое переменной считается неопределенным; ячейки памяти, отведенные под переменную путем ее описания, заполняются значениями в ходе выполнения программы с помощью оператора присваивания; этим переменная отличается от константы, которой значение присваивается до выполнения основной программы, в разделе определения констант.

8. Типы данных.

Различные типы данных занимают в оперативной памяти компьютера разное количество ячеек (емкость одной ячейки - 1 байт). Перед началом вычислений следует сообщить компьютеру, сколько ячеек памяти надо зарезервировать под ту или иную переменную. Для этого в блоке "VAR" раздела описаний программы должны быть описаны все используемые переменные, то есть должно быть указано имя каждой переменной и типы данных, которые будут храниться в этих переменных.

В Турбо-Паскале приняты следующие простые типы данных (типы значений констант и переменных):

1.  Integer

Для хранения значения в переменной типа integer, в оперативной памяти компьютера отводится 2 байта памяти. Это может быть целое число в диапазоне от -32768 до +32767.

2.  Real

Под значение переменной типа REAL в памяти отводится 6 байт. Переменная типа real - это вещественное число в диапазоне от 2.9Е -39 до 1.7Е +38 по модулю. Буква "Е" в этой записи означает "умножить на 10 в степени".

9. Оператор присваивания

Как известно, переменная - это несколько ячеек оперативной памяти, имеющих общее имя и предназначенных для хранения одного значения определенного типа. До выполнения вычислений значение переменной не определено, ячейки памяти заполнены случайной информацией, оставшейся от предыдущих программ. Запоминание переменной своего значения или, иначе говоря, запись в ячейки памяти данных, выполняется с помощью оператора присваивания, например A:=2.

В Паскале знак присваивания представлен комбинацией двух символов: ":" и "=". Знак присваивания не следует путать с операцией сравнения "=". В случае ошибочной записи оператора присваивания, например в выражении i:=i+1 (переменная i увеличивает свое значение на 1) он будет выглядеть как сравнение i=i+1, заведомо ложное.

Выполнение оператора присваивания сводится к вычислению значения выражения, стоящего от символа присваивания справа, с последующей записью полученного результата в переменную, стоящей от символа слева:

X:=2*Pi*R;

A:=SQRT(A*A+B*B).

Не допускается записывать в целочисленную переменную (типа integer) вещественное значение (типа Real).

X. Операторы ввода-вывода

Операторы ввода-вывода необходимы для ввода в компьютер данных с клавиатуры либо вывода результатов расчета на экран дисплея.

Для ввода данных используется оператор "Readln", например Readln(A), где А - имя переменной.

Встретив в тексте программы оператор Readln (имя переменной), компьютер останавливается и ждет, когда с клавиатуры будет введено значение для указанной переменной и нажата клавиша ENTER. После этого ячейка оперативной памяти, отведенная для переменной, будет заполнена введенными данными.

Вывод данных на экран осуществляется операторами Write(A, B,C, ... ,Z), либо Writeln(A, B,C, ... ,Z), где A, B,C, ... ,Z - имена переменных либо выражения.

Разница между этими двумя схожими операторами в следующем: при выполнении оператора Writeln( ) все перечисленные в нем элементы печатаются в одну строку в заданном порядке, после чего курсор переводится в начало следующей строки. Если после вывода последнего элемента списка необходимо оставить курсор на той же строке, следует использовать оператор вывода Write( ).

Часто при программировании необходимо вывести на экран небольшие текстовые сообщения: заголовок таблицы, пояснение к вводимым или выводимым данным и т. п. Для этого выводимый текст ограничивается с обеих сторон апострофами и записывается в оператор вывода:

Writeln('Введите исходные данные');

Такой оператор выводит на экран все символы, заключенные между апострофами, но сами апострофы не печатаются.

11. Основные виды ошибок программирования

Перечислим ошибки, наиболее часто допускаемые начинающими программистами, и разъясним сообщения Турбо-Паскаля, выдаваемые им при выявлении этих ошибок в процессе компиляции текста программы:

1.  Identifier expected - в этом месте программы должен находиться идентификатор (имя программного объекта). Возможно, программист пытался использовать в качестве идентификатора слово, зарезервированное Паскалем для других целей.

2.  Unknown identifier - идентификатор (имя переменной, константы, процедуры и т. п.) не был упомянут в разделе описаний программы.

3.  Duplicate identifier - попытка дважды описать один и тот же идентификатор.

4.  Syntax error - синтаксическая ошибка, например строка символов не была заключена в кавычки.

5.  Line too long - компилятор не может обрабатывать текст программы со строками длиннее 126 символов. Скорее всего, программист забыл поставить апостроф, закрывающий текстовую строку, записываемую в переменную или выводимую на экран.

6.  Type identifier expected - не указан тип идентификатора.

7.  Variable identifier expected - на этом месте в программе должна стоять переменная.

8.  Error in type - объявление типа данных не может начинаться с этого символа.

9.  Type mismatch - а)тип переменной, стоящей слева от знака присваивания, отличается от значения выражения, стоящего справа; б)при обращении к процедуре типы формального и фактического параметров не совпадают; в)переменная данного типа не может служить индексом массива.

10.  Begin expected - нужен begin.

11.  End expected - нужен end.

12.  Integer expression expected - требуется выражение типа integer.

13.  Boolean expression expected - требуется выражение типа boolean.

14.  Do expected - пропущено слово "Do".

15.  Of expected - пропущено слово "of".

16.  Then expected - пропущено слово "then".

17.  To expected - пропущено слово "to".

18.  String variable expected - требуется строковая переменная.

19.  Error in expression - данный символ не может участвовать в выражении таким образом.

20.  Division by zero - деление на ноль.

21.  Constant and case types do not math - тип меток и тип селектора в операторе CASE не соответствуют друг другу.

22.  Floating point overflow operation - величина вещественного числа вышла за пределы диапазона, допускаемого Паскалем (обычно при делении на ноль

12.  Линейные алгоритмы

Программы, составленные исключительно из операторов присваивания и ввода-вывода, могут иметь только линейную структуру. Такая программа выполняется в порядке написания операторов.

Пример написания программы:

Var

A, B,S: integer; {Переменные А, В,С целого типа}

Begin {Начало программы}

Write (‘Введи значение целого числа А’); {Вывод запроса на экран}

Readln(А); {Ввод значения А с клавиатуры}

Writeln(‘Введи значение целого числа В’);

Readln(В);

S:=A+B; {Вычисление переменной S}

Writeln(‘Сумма равна’, S);{Вывод результата работы программы}

Readln; {Пустой(без параметров) оператор ввода, пишется в конце программы и позволяет создать паузу, тем самым позволяет рассмотреть результаты выполнения программы}

End. {Конец программы}

Задачи для самостоятельного решения

1.  Даны два целых числа. Вычислить и вывести на экран их сумму, разность, произведение.

2.  Найти среднее арифметическое двух целых чисел.

3.  Вычислить длину окружности и площадь круга одного и того же заданного радиуса.

4.  Вычислить площадь кольца с внутренним радиусом 17 и внешним

радиусом > 17.

5.  Найти гипотенузу С и площадь прямоугольного треугольника S по двум заданным катетам A, B.

6.  Вычислить площадь S треугольника по трем сторонам. Использовать формулу Герона: S = ;

где р – полупериметр (рассчитать);

а, в, с – длины сторон вводятся с экрана.

7.  Написать программу пересчета расстояния из верст в километры (веса из фунтов в килограммы). Одна верста равняется 1066,8 м; один российский фунт равен 409,5 г

8.  Напишите программу вычисления площади прямоугольника, значения сторон которого А и В вводятся с клавиатуры. Результат вывести в следующем виде: « Для значений сторон (цифровые значения, введенные с клавиатуры) площадь прямоугольника равна (цифровое значение вычисленной площади).

9.  Вычислить расстояние между двумя точками с координатами Х1,У1 и Х2,У2.

10.  Написать программу, которая вычисляет периметр треугольника, если известны координаты его вершин (Х1,У1;Х2,У2;Х3,У3).

11.  Напишите программу вычисления идеального веса человека по формуле: Ид. Вес = Рост в см – 100. Значение роста вводите с клавиатуры. Результат вывести в следующем виде: «Для человека ростом (Рост) идеальный вес равен (вес)».

12.  Вы положили деньги в банк на срочный депозит на три месяца из расчёта 60% годовых. Напишите программу, которая вычисляет причитающуюся вам через три месяца сумму.

13.  Найти сумму (произведение) цифр заданного трёхзначного числа.

14.  Составить программу исследования положительного числа А, в которой определялись бы значения следующих величин: целая часть; дробная часть; значение арифметического квадратного корня, остаток от деления на 5; на 3; на 2.

15.  Дано трёхзначное число АВС. Требуется получить число, записанное теми же цифрами, но в обратном порядке.

13. Разветвлённый алгоритм.

Часто бывает нужно, чтобы какой-нибудь блок программы выполнялся или не выполнялся в зависимости от задаваемого условия. Для подобного разветвления вычислительного процесса служат условные операторы. В Паскале имеется 2 формы условного оператора: полная и сокращенная.

Пример написания программы

VAR

A, B:Integer; {Объявление переменных целого типа}

P:Real; {Р вещественного ттипа}

Begin {Начало программы}

WriteLn(‘Введи значение перемнной А’);{Вывод запроса на экран}

ReadLn(A); {Ввод значения А с клавиатуры}

WriteLn(‘Введи значение переменной В’);{Вывод запроса на экран}

ReadLn(В);{Ввод значения В с клавиатуры}

IF B=0 Then writeLn(‘Деление на ноль не возможно’){Контроль ввода, условие выполнено}

Else {Условие не выполнено}

begin P:=A/B; WriteLn(‘’); end;{Составной оператор}

ReadLn;

End.

Задачи для самостоятельного решения

1.  Определить min (max)из двух заданных чисел и вывести min (max) на экран.

2.  Составить программу, определяющую чётно ли вводимое число.

3.  Определить, является ли заданное трёхзначное число палиндромом (палиндром читается одинаково слева направо и справа налево – 121, 343,797).

4.  Написать программу – модель пожарного датчика в помещении, которая выводит сообщение «Пожарная ситуация», если температура (вводится с клавиатуры) в комнате превысила 600С.

5.  Написать программу проверки знания даты основания Санкт - Петербурга (начала второй мировой войны). В случае неверного ответа программа должна вывести правильный ответ

6.  Точка плоскости задана своими координатами Х, У. Написать программу, которая определяет, принадлежит ли она плоской фигуре, являющейся кольцом с центром в точке (0,0), с внутрен

7.  Заданы площадь квадрата SKV и круга SKR. Составить программу, проверяющую поместится ли круг в квадрате.

8.  Определить цвет шахматной клетки. Клетка задаётся своими координатами

Х – номер вертикали; У – номер горизонтали.

9. У наибольшего из чисел А и В найти цифру младшего разряда (единиц) и остаток от его деления на 3.

10. Составить программу, реализующую эпизод применения компьютера в книжном магазине. Компьютера запрашивает стоимость книги, сумму денег, внесённую покупателем:

·  если сдача не требуется, печатает на экране «спасибо»;

·  если денег внесено больше, то печатает «возьмите сдачу и указывает сумму сдачи»;

·  если денег недостаточно, то печатает об этом сообщение и указывает размер недостающей суммы.

11. В ЭВМ поступают результаты соревнование по плаванию для трёх спортсменов. Составьте программу, которая выбирает лучший результат и выводит его на экран с сообщением, что этот результат победителя заплыва.

12. Каждый год дракон отращивает по 3 головы, но после того, как ему исполнилось 100 лет, - только по 2. Сколько голов и глаз у дракона, которому N лет.

13. Вычислить значение У, если

 

У =

14. Составить программу вычисления НОД (наибольшего общего делителя) двух чисел М и N. (Алгоритм Евклида)

15. Вычислить значение У, если

 

У =

16.Составит программу, реализующую эпизод сказки: спрашивает, куда предпочитает пойти герой (налево, направо или прямо), и печатает что его ждёт в каждом случае.

14. Структура повторений (циклы)

Пример написания программы

Const N=2; {Константа}

VAR

P:Integer; {Произведение}

I:Byte; {Счётчик цикла}

Begin

WriteLn(‘Таблица умножения на 2’);{Поясняющий текст}

FOR I:=1 to 10 do {Заголовок цикла с параметром}

Begin {Начало тела цикла}

P:= I * n;

WriteLN(I:2,’*’,n,’=’,P:2); {Вывод таблицы}

End; {Конец тела цикла}

ReadLn;

End;

Задачи для самостоятельного решения

1.  Вычислить сумму N чисел, введённых с клавиатуры(cумма – S).

2.  Вычислить сумму N чисел, полученных с помощью датчика случайных чисел (Random).

3.  Вычислить количество (K) и сумму (S) чисел по условию.

4.  Вычислить степень N числа А (Аn).

5.  Вычислить N! (N – факториал = 1*2*3*….*N). Принято считать 0! = 1.

6.  В компьютер по очереди вводятся данные о росте N учеников класса. Определить средний рост учащихся класса.

7.  Для данного N составить программу вычисления значения выражения:

Sin 1+ sin 2 + sin 3 + … + sin N.

8.  Составить программу вычисления куба суммы всех нечётных чисел от 1 до 50.

9.  Распечатать сто случайных чисел.

10.  Распечатать значения Х, Х2, Х3, если Х меняется от 1 до 10 с шагом 1.

11.  Даны натуральные числа N, A1, A2, A3, …,An. Сколько членов данной последовательности кратные 3 и некратные 5.

12.  Составить программу для перевода числа из 10-ой системы счисления в двоичную.

13.  Написать программу для определения МАХ и его номера из 10 вводимых чисел.

15. Одномерные массивы

Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип и одно и то же имя.

Элемент массива – отдельная переменная, входящая в массив.

Индекс элемента массива – это номер, определяющий его местоположение в общей последовательности числового ряда (таблицы).

Доступ к элементам массива осуществляется путём индексирования элементов.

Описание переменной типа – массив:

1. Type Mas: array [i..n] of type;

Var A: Mas;

 

2. Var A:array[i..n] jf type.

Задачи для самостоятельного решения

Заполнить массив:

·  Вводя элементы массива с клавиатуры;

·  С помощью датчика случайных чисел;

·  По формуле.

1.  Дан массив А, состоящий из 10 случайных чисел. Подсчитать сколько элементов массива имеют значение меньшие некоторой величины Т.

2.  Дан массив А. Найти сумму значений элементов массива, больших некоторой величины Т.

3.  Известны данные о среднемесячной температуре года. Определить, какая была самая высокая температура летом и самая низкая зимой.

4.  Составит программу, которая формирует одномерный массив, выполняет поиск элемента равного номеру пятого элемента и удаляет его из массива.

5.  Дан массив А(20), заполненный датчиком случайных чисел в диапазоне от –50 до 51 . Сформировать новый массив из десяти первых положительных элементов массива А.

6.  Дан массив А(20), заполненный датчиком случайных чисел. Отсортировать массив по возрастанию элементов.

7.  Сформировать и вывести массив из 15 случайных элементов. Определить, есть ли в нём элементы с одинаковыми значениями.

8.  Дан целочисленный массив А(N), заданный датчиком случайных чисел в интервале (-105, 109). Найти сумму значений элементов, которые меньше полусуммы наименьшего и наибольшего значений элементов данного массива.

9.  nаблица содержит 30 элементов. Составить программу заполнения данной таблицы конкретными числовыми значениями, если известно, что значение элемента равно его удвоенному порядковому номеру.

10.  В соревнованиях по фигурному катанию N судей выставляют оценки. Наибольшая и наименьшая отбрасываются, а по остальным выставляется средняя. Напишите программу, вычисляющую среднюю оценку и выдайте на печать номера судей, которые поставили наименьшую и наибольшую оценки.