3.3. Язык программирования Pascal

3.3. Язык программирования Pascal

Особенности языка Паскаль. Более подробно познакомимся с одним из самых популярных и самым (на взгляд автора) удобным для изучения языком программирования высокого уровня Паскаль. Самой удобной для пользователя версией языка является Turbo Pascal 7.0. Рассмотрим особенности этой версии:

обладает простым синтаксисом и достаточно малым набором понятий;

написан на языке, близком к естественному, что позволяет четко описать всю последовательность действий;

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

кроме стандартных встроенных типов программист может создавать и описывать свои собственные типы.

Для удобства пользователя Turbo Pascal 7.0. позволяет использовать функциональные клавиши. Рассмотрим самые важные из них:

F1 – вызов справки (если она установлена);

F9 – компилировать программы без выполнения;

Ctrl+F9 – компилировать программу и в случае удачной компиляции выполнить;

Alt+F5 – сменить окно редактора на окно выполнения программы (и наоборот);

Alt+Х – выход из программы.

Синтаксис Turbo Pascal 7.0. Алфавит языка состоит из следующих символов:

Заглавные и строчные буквы латинского алфавита (от A до z);

Арабские цифры (от 0 до 9);

Знаки арифметических операций (+, –, *, /);

4) Знаки пунктуации.

Как и любой язык программирования высокого уровня Turbo Pascal 7.0. содержит зарезервированные слова, которые при написании программы выделяются полужирным шрифтом. Зарезервированные слова используются для указания частей программы и для некоторых функций. Постепенно мы познакомимся с этими словами.

Любая программа имеет одинаковую структуру (таблица 3.6.)

Часть программы

Запись на Turbo Pascal 7.0.

Program <имя программы>;

Список используемых модулей

Uses<список модулей через запятую>;

Раздел объявления меток

Label <список меток через запятую>;

Раздел объявления констант

Const <имя константы>=<значение>;

Раздел объявления типов

Type <список типов>;

Раздел объявления переменных

Var <имя переменной>:<тип переменной>;

Раздел объявления функций и процедур

Procedure<имя процедуры>;(function<имя функции>;)

<тело процедуры или функции>

Тело программы (программный алгоритм)

Begin (начало алгоритма)

End (завершение алгортима или все программы). (или ;)

Таблица 3.6. Структура программы TurboPascal7.0.

Каждое действие отделяется точкой с запятой (;), в конце программы ставится точка. Программа начинается с заголовка. После зарезервированного слова program через пробел следует имя программы. Имя программы может состоять из любых символа алфавита, при этом начинаться имя должно с латинской буквы. Максимальная длина имени 255 символов.

Список используемых моделей и разделы описания модулей, меток, констант, типов, переменных, процедур и функций не обязательно присутствуют в каждой программе. Мы рассмотрим только раздел описания констант, переменных, процедур и функций.

Раздел описания констант служит для описания переменных, значения которых не будут изменяться. Например, при решении задач с использованием числа пи, обычно значение числа записывается в разделе описания констант: const P=3.14;.

В разделе описания переменных должны быть описаны все переменные, используемые в программе. Рассмотрим основные используемые типы (табл. 3.7.).

Тип переменной

Запись в Turbo Pascal 7.0.

Диапазон значений

-32768…32767 (2 байта)

-2 147 483 648… 2 147 483 647 (4 байта)

Целый длинный кодовый

-2.910 -39 …1.710 38 (6 байт)

Строка из любых символов алфавита длиной до 255 символов

Любой из символов используемой таблицы кодов

Два значения: true(истина) иfalse(ложь)

Таблица 3.7. Типы переменных в TurboPascal7.0.

Среди числовых типов наиболее удобны для использования integer для целых чисел и real для действительных.

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

Рассмотрим запись операций и основных функций (табл. 3.8.). Типы аргумента в таблицы записаны сокращенно: I – integer, R – real, S – string, C – char, B – boolean.

Функция/операция

Математическая запись

Запись в Turbo Pascal 7.0.

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

Тип значения функции

x y

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

Неполное частное деления хнау

Округление до целого

Случайное число от 0 до x-1

Ввод переменной х без переноса строки

Ввод переменной х с переносом строки

Вывод переменной х без переноса строки

Вывод переменной х с переносом строки

Таблицы 3.8. Арифметические операции и основные функции.

Реализация линейных алгоритмов на языке Turbo Pascal 7.0. При написании линейных алгоритмов на языке Turbo Pascal 7.0. все действия записываются строго друг за другом и разделены точкой с запятой. Знак присваивания записывается в виде: «:=» (двоеточие, равно). Алгоритм решения каждой задачи будем записывать в графическом и программном виде.

Задача 3.7. Найти корень линейного уравнения ax+b=0.

Решение задачи запишем в таблицу 3.9. Стоит отметить, что для корректной работы программы коэффициент а≠0.

Programz331;

VarA,B,X:real;

Имя программы – z331

Все переменные действительные числа.

Переменной Х присваиваем значение

Таблица 3.9. Решение задачи 3.7.

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

Ответ: см. табл. 3.9. 

Задача 3.8. Найти остаток от деления числа а на число b.

Programz332;

VarA,B,C:integer;

Имя программы – z332

Все переменные целые числа.

Переменной С присваиваем значение

Таблица 3.10. Решение задачи 3.8.

Ответ: см. табл. 3.10. 

Задача 3.9. Округлить число а до целых, до сотых.

При округлении числа до целых проблем не возникнет, так как есть функция ROUND. Как округлить число до сотых, ведь такой функции нет? Для решения этой проблемы мы «обманем» компьютер. Число, которое необходимо округлить до сотых, мы сначала умножим на 100. Затем результат округлим до целых. А округленное число разделим на 100. Решение представлено в таблице 3.11.

Programz333;

VarA,C,E:real;

Имя программы – z333

Объявление действительных аргументов

Объявление целых аргументов

Округление числа А до целых

Умножаем число А на 100

Округляем результат С до целых

Получаем округление числа А до сотых

Выводим округление числа А до целых

Выводим округление числа А до сотых

Таблица 3.11. Решение задачи 3.9.

Ответ: см. табл. 3.11. 

Реализация разветвляющихся алгоритмов на языке Turbo Pascal 7.0. На языке Паскаль разветвляющийся алгоритм реализуется следующим образом: if <условие> then <действие, если условие выполнено> else <действие, если условия не выполнено>;. Зарезервированное слово if соответствует слову «если», then – «то», else – «иначе». В случае невыполнения условия может быть так, что никаких действий выполнять не следует. Тогда разветвляющийся алгоритм запишется в виде: if <условие> then <действие, если условие выполнено>;. Если в случае выполнения (или не выполнения) условия необходимо выполнить несколько действий, то эти действия заключаются в операторные скобки. Открывается операторная скобка словом Begin, а закрывается словом end c точкой с запятой.

Задача 3.10. Дано число а. Если число а положительное вывести знак +, иначе вывести знак –.

Programz334;

then Writeln(‘+’)

else Writeln(‘-‘);

Имя программы – z334

Переменная А – действительное число

Ввод переменной А

То выводим знак +

Иначе выводим знак –

Таблица 3.12. Решение задачи 3.10.

Ответ: см. табл. 3.12. 

Задача 3.11. Даны числа а и b. Если a>b вывести их сумму, иначе вывести их разность.

Введем переменную С для вывода. Если условие выполняется С будет равно сумме, иначе произведению.

Programz335;

Var А,В,С:real;

Имя программы – z335

Все переменные действительные числа

То присваиваем переменной С сумму

Иначе присваиваем С произведение

Таблица 3.13. Решение задачи 3.11.

Ответ: см. табл. 3.13. 

Задача 3.12. Дано натуральное число а. Если а делится на 3, то вывести квадратный корень из часть числа а и тангенс числа а, иначе вывести квадрат числа а и экспоненту числа а.

Для записи условия воспользуемся тем, что если число делится на 3, то остаток от деления этого числа на 3 будет равен 0. Отметим, что в случае выполнения и невыполнения условия необходимо выполнить несколько действий. Значит, эти действия заключим в операторные скобки.

Programz336;

Var А:integer;

If A MOD 3=0

Имя программы – z336

В и С – действительные числа

Если А делится на 3

То открываем операторную скобку

В присваиваем корень из А

С присваиваем тангенс А

Закрываем операторную скобку

Иначе открываем операторную скобку

В присваиваем квадрат А

С присваиваем экспоненту А

Закрываем операторную скобку

Выводим число В

Выводим число С

Таблица 3.14. Решение задачи 3.12.

Ответ: см. табл. 3.14. 

Задача 3.13. Найти корень линейного уравнения ax+b=0 (При условии, что коэффициент a может быть равен 0).

Сначала мы выясним равен ли коэффициент а 0. Если он равен нулю, то выясним, равен ли 0 коэффициент b.

Programz337;

VarA,B,X:real;

Then if B=0

Then writeln(‘Х - любое’)

else writeln (‘Решений нет’)

Имя программы – z337

Все переменные действительные числа

То выводим сообщение «Х-любое»

Иначе выводим сообщение «Решений нет»

Иначе открываем операторную скобку

Присваиваем переменной Х корень ур-я

Выводим переменную Х

Закрываем операторную скобку

Таблица 3.15. Решение задачи 3.13.

Ответ: см. табл. 3.15. 

Реализация цикла со счетчиком на языке Turbo Pascal 7.0. На языке Паскаль цикл со счетчиком реализуется следующим образом: for <счетчик> do <тело цикла>;. Зарезервированное слово for соответствует слову «для», слово do соответствует началу тела цикла. Если тело цикла состоит из нескольких действий, то эти действия заключаются в операторные скобки.

Задача 3.14. Дано натуральное число n. Ввести n целых чисел. Найти их сумму.

Если бы нам заранее было известно, сколько чисел необходимо ввести, то задачу можно было решить с помощью линейного алгоритма. В данном случае мы не можем прописать в программе n раз ввод числа. Для решения этой задачи используем цикл со счетчиком. Для нахождения суммы введем переменную S. По умолчанию значение каждой числовой переменной равно 0. В теле цикла мы будем прибавлять к этой переменной введенное число.

Programz338;

VarA,N,S,I:integer;

For I:=1 TO N DO

Имя программы – z338

Все переменные целые числа

Открываем операторную скобку

Добовляем к сумме число А

Закрываем операторную скобку

Таблица 3.16. Решение задачи 3.14.

Ответ: см. табл. 3.16.

Задача 3.15. Ввести 4 целых числа. Найти их произведение.

Нахождение произведения отличается от нахождения суммы тем, что искомой переменной задается начальное значение, равное 1.

Programz339;

VarA,P,I:integer;

For I:=1 TO 4 DO

Имя программы – z339

Все переменные целые числа

Начальное значение переменной P

Открываем операторную скобку

Закрываем операторную скобку

Таблица 3.17. Решение задачи 3.15.

Ответ: см. табл. 3.17.

Реализация цикла с условием на языке Turbo Pascal 7.0. На языке Паскаль цикл с условием реализуется следующим образом: while <условие> do <тело цикла>;. Зарезервированное слово while соответствует слову «пока».

Задача 3.16. Ввести последовательность ненулевых чисел. Найти сумму элементов последовательности.

Ввод чисел необходимо выполнять до тех пор, пока не будет введен ноль. Условие запишется следующим образом: A<>0 (А не равно 0). Сумму будем находить так же как и в задаче 3.3.8. Для того чтобы цикл продолжался в конце тела цикла введем следующее число последовательности.

Programz3310;

While A<>0 do

Имя программы – z3310

Все переменные целые числа

Пока А не равно нулю

Открываем операторную скобку

Добавляем к сумме число А

Закрываем операторную скобку

Таблица 3.18. Решение задачи 3.16.

Ответ: см. табл. 3.18. 

Задача 3.17. Ввести последовательность ненулевых чисел. Найти количество положительных элементов последовательности.

Алгоритм решения этой задачи содержит циклический и разветвляющийся алгоритмы. Для подсчета количества положительных чисел введем переменную S, которая по умолчанию равна 0. При вводе каждого числа мы проверяем больше нуля оно или нет. Если оно больше нуля, то увеличиваем переменную S на единицу. Если оно меньше нуля, то никаких действий выполнять не будем.

Programz3311;

While A<>0 do

Имя программы – z3311

Все переменные действительные числа

Пока А не равно нулю

Открываем операторную скобку

Если А больше нуля

То увеличиваем Sна единицу

Закрываем операторную скобку

Таблица 3.19. Решение задачи 3.17.

Ответ: см. табл. 3.19. 

Задача 3.18. Перевести натуральное число а в восьмеричную систему счисления.

Выполним алгоритм перевода из десятичной системы счисления в недесятичную. Для записи ответа нам понадобится дополнительная переменная R, которая будет определять порядок полученной восьмеричной цифры. Этой переменной дадим начальное приближение, равное 1.

Programz3312;

VarA,R,B,C:integer;

While A>7 do

Имя программы – z3312

Все переменные целые числа

Открываем операторные скобки

В – остаток от деления А на 8

А – неполное частное от деления А на 8

Записываем цифру Bв число

Увеличиваем порядок следующего числа

Закрываем операторные скобки

Записываем последнюю цифру в число

Таблица 3.20. Решение задачи 3.18.

Ответ: см. табл. 3.20. 

Массивы на языке Turbo Pascal 7.0. Массив – это совокупность конечного числа элементов одного типа, в которой каждый элемент имеет номер, а все элементы – общее имя. Номер элемента называется индексом. Массив может быть одномерным (все элементы расположены в одну строку или столбик) или двумерным (таблица или матрица). Индекс элемента двумерного массива состоит из двух чисел: первое число – номер строки, второе число – номер столбца. Количество элементов одномерного массива называется длиной массива. Массив описывается в разделе описания переменных следующим образом: var <имя массива>: array[<начальный индекс>..<конечный индекс>] of <тип элементов массива>;. Например, одномерный массив A действительных чисел длины 5 будет описан следующим образом: var A:array[1..5] of real. Двумерный массив B целых чисел из 4 строк и 5 столбцов будет описан следующим образом: var B:array[1..4,1..5] of integer;. Обратится к элементу массива можно как к обычной переменной, указав имя массива и индекс элемента в квадратных скобках. С элементами массива можно выполнять все операции, которые допускаются его типом.

Задача 3.19. Дан одномерный массив длины 6. Найти произведение элементов массива.

Решения этой задачи аналогично решению задачи о нахождении произведения элементов последовательности.

📎📎📎📎📎📎📎📎📎📎