Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 336

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
909.45 Кб
Скачать

лые, вещественные, шестнадцатеричные числа, логические константы, символы, строки символов.

Целые числа записываются со знаком или без него по обычным правилам.

Пример – 100; 256; +75 или 75; 05.

Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части. Экспоненциальная часть начинается символом Е(е), за которым следует знак порядка + (или -) и десятичный порядок.

Пример 4.5; -0.75; +151.75 или 151.75; 0.0063; -0.131Е6; -131Е3; -5Е-02.

Символьная константа – это любой символ ПК, заключенный в апострофы.

Пример ‘z’, ‘2’, ‘ ’ (пробел).

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

Выражение состоит из операндов и операторов. Операндами могут быть числа (константы), переменные, функции. Операторы обозначают действия, выполняемые над операндами. При вычислении значений выражений важен порядок выполнения операторов. Сначала производятся вычисления в круглых скобках, затем находятся значения функций, далее унарные операции (с одним операндом), потом операции типа умножения (*, / , DIV, MOD, AND), затем операции типа сложения (+, –, OR), и наконец, операции отношения (=,<>,<,<=,>,>=). В простейшем случае выражение – это константа, переменная или функция.

Арифметическими операциями в языке ТР являются:

+ (сложение), - (вычитание), * (умножение), / (вещественное деление), DIV (целочисленное деление), MOD (вычисление остатка от деления целых чисел).

Пример

10 DIV 3=3

10 MOD 3 = 1.

Стандартные арифметические функции языка ТР приведены в табл. 3.

81

 

 

 

 

 

 

 

Таблица 3

 

 

 

 

 

 

 

 

 

 

 

Математическая

Запись на ТР

 

 

 

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

форма

 

 

 

 

 

 

 

 

|x|

аbs (x)

совпадает с типом х

x2

sqr (x)

совпадает с типом х

sin x

sin (x)

 

 

 

вещественный

cos x

cos (x)

 

 

 

вещественный

arctg x

arctan (x)

 

 

 

вещественный

ln x

ln (x)

 

 

 

вещественный

ex

exp (x)

 

 

 

вещественный

 

 

 

sqrt (x)

 

 

 

вещественный

 

x

 

 

 

дробная часть числа

frac (x)

 

 

 

вещественный

целая часть числа

int (x)

 

 

 

вещественный

π

pi

3,14159265358979323

Пример записи на языке Pascal выражения e

 

 

4cos2x ln x

 

 

 

 

 

 

 

 

3x

 

 

 

 

exp(abs((4*cos(2* x) ln(x))/(3* x)))

Для возведения переменной х в некоторую степень а, используется равенство

xa ealn x (при условии х>0).

Тогда выражение xa на языке Pascal должно быть записано как exp(a*ln(x)).

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

Программа, написанная на языке Pascal, состоит из следующих разделов:

-заголовок программы;

-раздел объявлений стандартных библиотечных модулей;

-раздел объявлений меток;

-раздел объявлений констант;

-раздел объявлений типов;

82

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

-раздел объявлений подпрограмм (процедур и функций);

-раздел операторов (обязательная часть).

Отметим, что первые семь разделов из этого списка относятся к декларативной (описательной) части программ и лишь последний раздел к исполняемой части.

Типы данных языка ТР

Язык Pascal является строго типизированным языком программирования. Это означает, что для всех переменных в программе должен быть определен их тип данных.

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

В языке Pascal все переменные, используемые в программе, описываются в ее начале в специальном разделе описания переменных после зарезервированного слова var. Переменные могут быть:

скалярные (простые) – содержат одно единственное значение;

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

иметь дело в ближайшее время.

Целый (Integer) – значением переменной этого типа может быть целое число из диапазона -32768. .32767 (занимает в памяти машины 2 байта).

Вещественный (Real) – значением переменной этого типа может быть вещественное число из диапазона 2.9∙10-39 . . 1.7∙1038 (6 байт).

Логический (Boolean) – переменная этого типа может принимать одно из двух значений: истина (true) или ложь (false) (1 байт).

Символьный (Char) – значением переменной этого типа может быть любой символ из набора символов данного компьютера (1 байт).

Краткое изложение темы

1. Языки, понятные ЭВМ, называются языками программирова-

ния.

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

83

3.Интегрированная система Turbo Pascal состоит из текстового редактора, компилятора, компоновщика, загрузчика.

4.Алфавит языка ТР включает буквы, цифры, специальные сим-

волы.

5.Арифметическими операциями языка ТР являются сложение, вычитание, умножение, вещественное деление, целочисленное деление, вычисление целочисленного остатка.

6.Вычисление значений выражений выполняется в определенном порядке. Начинается вычисление с определения переменных и констант, входящих в выражение. Дальнейшие действия выполняются в соответствии с их приоритетами.

7.Программа на языке ТР состоит из декларативной и исполняемой частей.

8.В языке ТР можно выделить простые и структурированные

типы.

9.К простым типам данных можно отнести целый, вещественный, логический, символьный типы.

Задание 2. Ответьте на вопросы.

1.Что такое алгоритмический язык?

2.Что такое программирование?

3.Что такое программа?

4.Какими достоинствами обладает язык программирования Turbo Pascal?

5.Что представляет собой интегрированная система языка Turbo

Pascal?

6.Перечислите базовые элементы языка Turbo Pascal.

7.Перечислите зарезервированные (служебные) слова языка

Turbo Pascal.

8.Дайте определение констант, переменных, выражений.

9.Укажите приоритеты выполнения операций.

10.Из каких разделов состоит программа, написанная на языке

Turbo Pascal?

11.Что определяет тип данных?

12.Какие типы данных относятся к простым?

84

6.МОЯ ПЕРВАЯ ПРОГРАММА

6.1.Программирование алгоритмов линейной структуры

Для реализации линейных алгоритмов используются следующие операторы:

оператор присваивания;

оператор (процедура) ввода;

оператор (процедура) вывода.

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

имя переменной: = выражение; где := символ присваивания.

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

Процедура ввода read (читать) считывает данные, вводимые с клавиатуры, а процедура readln считывает данные и символ конца строки. Частица ln (line – линия, строка) в конце означает, что после выполнения процедуры ввода курсор будет переведен на следующую строку.

Процедура вывода write (писать) предназначена для вывода на экран монитора сообщений и значений переменных или выражений. Для вывода сообщения его заключают в апострофы (строчные кавычки).

При выводе вещественных чисел можно использовать форматы данных write (d : n : m). Здесь d – выводимая переменная, n – означает общее количество позиций в выводимом числовом значении, включая знак числа и десятичную точку, m – количество знаков в дробной части. В процедуре writeln после вывода информации, записанной в скобках, курсор переместится в начало следующей строки.

Пример. Даны переменные А и В. Требуется обменять их значения.

Программная реализация решения задачи с использованием дополнительной ячейки будет иметь вид:

program change_2; var a, b, с: integer; BEGIN

85

{Ввод исходных данных}

writeln (‘Введите два целых числа через пробел’); read (a,b);

{Обмен значениями} c:= a;

a:=b;

b:=c;

{Результат работы} writeln (‘a=’, a,’ b=’,b) END.

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

Краткий разбор примера Программа начинается с заголовка, имеющего вид:

program change_2;

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

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

После служебного слова begin записываются операторы языка. Первый оператор нашей программы writeln (‘Введите два целых числа через пробел’); выполняет вывод на экран текста, заключенного между апострофами.

86

Следующий оператор read (a,b); читает данные с клавиатуры (экрана). После этих двух операторов стоят операторы присваивания. с := а; означает, что число, находящееся в ячейке с именем а будет перенесено и сохранено во вспомогательной ячейке с именем с. а := b; скопирует содержимое ячейки b в ячейку а. Наконец, оператор b := с перепишет сохраненное в ячейке с число а в ячейку b и, тем самым, завершит обмен значениями между исходными ячейками.

Стоящий ниже оператор writeln (‘a=’,a, ‘b=’,b) выведет на экран результат работы программы, то есть измененные значения ячеек а и

b.Служебное слово end с точкой завершит работу программы.

6.2.Программирование алгоритмов разветвляющейся

структуры

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

Для программной реализации этого типа алгоритма используют условный оператор, который имеет вид (полное условное предложение)

if b then < оператор 1> else < оператор 2>;

b – логическое выражение (условие).

При прочтении данного оператора ЭВМ вычисляет значение логического выражения b и если оно истинно (true), то выполняется < оператор 1>, а < оператор 2> игнорируется. Если же значение выражения b ложно (false), то < оператор 1> игнорируется и выполняется < оператор 2>.

Укороченное условное предложение записывается в виде

If в then < оператор 1>;

В этом случае при выполнении условия b реализуется < оператор 1>, а если b ложно < оператор 1> игнорируется и выполняется оператор, следующий за оператором if.

Пример. Составить программу для нахождения максимального из двух чисел.

Исходные данные разместим в ячейках памяти с именами а и b, результат – в ячейке max.

87

Program big;

var a, b, max: integer; BEGIN

writeln (‘Введите два целых числа через пробел’); read (a, b,);

{Сравнение двух чисел} if a>b then max := a

else max := b; {Результат}

writeln (‘max=’, max) END.

6.3. Программирование алгоритмов циклической структуры

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

Оператор перехода GOTO

Общий вид записи:

GOTO n;

где n – метка некоторого оператора программы (произвольный 88деентификатор или целая константа без знака в диапазоне 1 .. 9999), обозначает место в программе, куда надо передать управление.

При прочтении данного оператора ЭВМ находит в программе оператор с указанной меткой n и продолжает выполнение программы, начиная с этого оператора.

Пример. Вычислить значение функции y ae px b tg x2 в интервале [-2;3] с шагом x 0,3. Значения констант а=1,71; b=3,2;

р=2,1;

program tabul; label m1;

const a=1.71; b=3.2; p=2.1; var x,y: real;

BEGIN

88

x:=-2;

m1: y:=a*exp(-p*x)+b*sin(x/2)/cos(x/2); writeln (‘x=’, x:6:1,’…y=’, y:7:2); x:=x+0,3;

if x<=3 then goto m1 END.

Помимо организации цикла «вручную» в языке Turbo Pascal имеются три различных оператора, которые реализуют циклические процедуры.

6.3.1. Оператор цикла с предусловием

Структура WHILE <условие> DO < оператор>; <условие> - выражение логического типа; <оператор> - произвольный оператор ТР (один!).

При прочтении данного оператора ЭВМ определяет значение логического выражения (условия); если оно истинно, то выполняется <оператор>, затем вышеописанная процедура повторяется до тех пор, пока значение логического выражения не станет ложным, и тогда оператор цикла while прекращает свою работу. Если выражение было ложно сразу при первом входе в цикл, то <оператор> не выполняется ни разу.

Пример.

Предыдущее задание с использованием оператора WHILE приводится к следующей программе

program tabul1;

const a=1.71; b=3.2; p=2.1; var x,y: real;

BEGIN x:=-2;

while x<=3 do begin

y:=a*exp(-p*x)+b*sin(x/2)/cos(x/2); writeln (‘x=’, x:6:1,’…y=’, y:7:2);

x:=x+0.3; end

END.

89

6.3.2. Оператор цикла с постусловием

Структура

REPEAT <оператор1>; <оператор2>;

…………………….

<оператор n> UNTIL <условие>;

<условие> - выражение логического типа;

<оператор1>, <оператор2>,…, <оператор n> - произвольные операторы языка Turbo Pascal.

Оператор цикла REPEAT, также как и оператор цикла WHILE, не требует предварительного определения числа повторений. Отличие REPEAT от WHILE в том, что здесь проверка условия производится после выполнения операторов тела цикла. Отметим еще, что завершение работы оператора REPEAT происходит при значении условия истина (true).

Пример.

Выполнить предыдущее задание, но для произвольного интервала [хн, хк] и шага табулирования h.

program tabul2;

const a=1.71; b=3.2; p=2.1; var x,y, xn, xk,h: real; BEGIN

{Ввод начального xn, конечного xk значений интервала и

шага h}

writeln(‘Введите xn, xk,h’); readln (xn, xk,h);

x:=xn; repeat

y:=a*exp(-p*x)+b*sin(x/2)/cos(x/2); writeln (‘x=’, x:6:1,’…y=’, y:7:2); x:=x+h

until x>xk END.

90