Основы программирования на языке PascalABC

  • pdf
  • 14.08.2025
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Основы программирования на языке PascalABC.pdf

Основы программирования на языке PascalABC

Курс лекций

Почтарькова Т.П.

 

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

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

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

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

1.   Можно было легко читать;

2.   Ее можно было легко использовать.

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

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

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

Классификационные признаки паскаля

В современном мире существует огромное количество языков программирования. Ориентируются они на различные области применения. Возникает потребность классификации языков программирования. Таких попыток было много Паскаль, например, относят к классу процедурных языков программирования. Существуют также логические, объектно-ориентированные и другие группы языков. Такое деление основано на использовании в каждой группе различных принципов программирования.

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

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

В структурных языках одним оператором записываются целые алгоритмические структуры (ветвления, циклы и т.д.). В операционных языках для этого используются несколько операций. Пример структурных языков программирования: Паскаль, Си, Ада, ПЛ/1, Фортран, Бейсик, Фокал, Модула. Паскаль также обладает и возможностями операционного языка.

Объектно-ориентированная модель была добавлена в Turbo Pascal. Object Pascal

(диалектом которого является Delphi), является функциональным расширением языка Turbo Pascal.

Этапы написания программы

Условно процесс написания программы можно разбить на три этапа:

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

2.                  Написание исходного кода (текста программы на выбранном языке программирования).

3.                  Отладка и тестирование программы.

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

Задача любой программы – состоит в обработке данных. Данные в Паскале делятся на константы (не меняют своего значения в ходе выполнения программы) и переменные (могут менять свое значение). Данные в Паскале характеризуются именем, типом и значением. Умолчаний в Паскале нет. Все величины (данные) алгоритма должны быть описаны.

Структура программа на языке Паскаль

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

Программа на Паскале состоит из:

1.       Заголовка программы.

2.       Программного блока.

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

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

Заголовок – состоит из зарезервированного слова program и имени программы. Заголовок может отсутствовать. Но, поскольку он несет смысловую нагрузку, для более быстрого поиска нужной программы рекомендуется его использовать при написании программы.

Например, program poisk_maksimuma;

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

Программный блок состоит из двух разделов.

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

1.       Подключаемые библиотечные модули (uses);

2.       Описываются метки (label);

3.       Описываются константы (const);

4.       Типы данных (type);

5.       Переменные (var);

6.       Процедуры и функции (procedure, function).

В скобках приведены зарезервированные слова, с      которых начинается соответствующее описание.

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

Любой элемент приведенного списка может отсутствовать.

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

Второй раздел программного блока – раздел операторов, отделяется от раздела

описаний словом begin. Begin – это открывающая операторная скобка и после нее не следует ставить никаких знаков препинания. На блок схеме это зарезервированное слово соответствует блоку.

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

Заканчивается раздел операторов зарезервированным словом end. Это закрывающая операторная скобка.

На блок схеме она соответствует блоку

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

Синтаксис языка

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

Типы данных Паскаля

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

     скалярные (простые типы);

     структурированные (составные). Скалярные типы в свою очередь делятся на: – стандартные типы (предлагаются разработчиками паскаля); – пользовательские типы (разрабатываются программистами).

В этом пособии рассматриваются только простые стандартные типы данных

Целочисленные типы данных паскаля

Целочисленные типы паскаля представлены в табл. 1. Таблица 1. Целочисленные типы паскаля

Тип (зарезервированное слово для описания)

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

Требуемая память (байт)

Byte

0…255

1

ShortInt

-128…127

1

Integer

-32768…3276

2

word

0…655357

2

Longint

-2147483648…2147483647

4

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

Вещественные типы данных паскаля

Вещественные числа в паскале могут быть представлены в двух формах: – с фиксированной точкой. Например, 2.5.

1. с плавающей точкой mE±p. Здесь m – мантисса (целое или дробное число), E- означает 10 в степени, p – порядок (целое число). Например 25Е-1. Это означает тоже число 2.5. Форму записи с плавающей точкой удобно использовать при работе с очень большими или очень маленькими величинами. Вещественные типы данных паскаля представлены в табл. 2.

Таблица 2. Вещественные типы данных паскаля

Тип (зарезервированное слово для  описания)

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

Требуемая память (байт)

Real

2.9E-39 … 1.7E38

6

Single

1.5E-45 … 3.4E38

4

Double

5.0E-324 ... 1.7E308

8

Extended

3.4E-4932 … 1.1E493

10

comp

-9.2E63 … (9.2E63)-1

8

Символьный тип данных

Описывается зарезервированным словом char. Множество допустимых значений – множество значений кодовой таблицы ПК. Для размещения в памяти величины типа char требуется 1 байт.

Логический тип данных

Описывается зарезервированным словом Boolean. Величина этого типа может принять два значения true (истина) или false (ложь). Для размещения в памяти величины этого типа требуется 1 байт

Операции Паскаля

Все операции паскаля можно разделить на

1.       Арифметические

2.       Отношения

3.       Логические

4.       Строковые;

5.       Разрядные, сдвиговые;

6.       Операции над множествами; и т.д.

Подробнее ознакомимся с первыми тремя группами операций.

Арифметические операции могут быть бинарными (в операции участвуют два операнда) и унарными (в операции участвует один операнд). Арифметические операции паскаля приведены в табл. 3. Таблица 3. Арифметические операции паскаля

Операция

Действие

Тип операндов

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

бинарные

 

+

Сложение

Целый. Вещественный

Целый. Вещественный

-

Вычитание

Целый. Вещественный

Целый. Вещественный

*

Умножение

Целый. Вещественный

Целый. Вещественный

/

Деление

Целый. Вещественный

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

Div

Целочисленное деление

Целый

Целый

Mod

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

Целый

Целый

Операция

Действие

Тип операндов

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

 

Унарные

 

+

Сохранение знака

Целый. Вещественный

Целый. Вещественный

-

Отрицание знака

Целый. Вещественный

Целый. Вещественный

Операции отношения выполняют сравнение двух операндов и определяют, истинна или ложь будет в результате выполнения операции. Сравниваемые величины могут принадлежать любому типу данных. Результат операции – всегда логического типа. Операции отношения представлены в табл. 4.

Таблица 4. Операции отношения паскаля

Операция

Название

Выражение на паскале

=

Равно

А=В

<>

Неравно

А<>B

>

Больше

A>B

<

Меньше

A<B

>=

Больше или равно

A>=B

<+

Меньше или равно

A<=B

Логические операции.

Логические          выражения в        результате вычисления         принимают значения логического типа. Операндами логического выражения могут быть логические константы, переменные, отношения. В паскале имеется 4 логические операции:

Not – логическое отрицание; 

And – логическое умножение; Or – логическое сложение;  Xor – исключающее или.

Таблица истинности приведена ниже (истина в таблице обозначена T,  ложь – F). А и В – операнды, участвующие в операции.

Таблица 5. Типы результата выполнения логических операций  паскаля

A

B

Not А

A and B

A or B

A xor B

T

T

F

T

T

F

T

F

F

F

T

T

F

F

T

F

F

F

F

T

T

F

Е

T

Приоритет выполнения операций паскаля в порядке убывания. В одной группе, операции одного приоритета.

1.       Вычисление функций;

2.       Унарный минус, not;

3.       Умножение, деление, div, mod, and; 4. Сложение, вычитание, or, xor;

5. Операции отношения.

Если в выражении присутствуют операции одного приоритета, то выполняются они с лева на право. Если приоритет операций в выражении нужно нарушить – используют круглые скобки.

             

Некоторые стандартные функции

Таблица 6. Некоторые стандартные функции паскаля

 

Обращение

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

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

Функция

Abs(x)

Целый. Вещественный

Целый. Вещественный

Модуль аргумента

Arctan(x0

Целый. Вещественный

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

Арктангенс

Cos(x0

Целый. Вещественный

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

Косинус

Exp(x0

Целый. Вещественный

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

Экспонента

Sin(x)

Целый. Вещественный

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

Синус

Ln(x)

Целый. Вещественный

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

Натуральный логарифм

Sqrt(x)

Целый. Вещественный

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

Корень квадратный из x

Sqr(x)

Целый. Вещественный

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

Квадрат x

Frac(x)

Целый. Вещественный

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

Дробная часть x

Int(x)

Целый. Вещественный

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

Целая часть x

Ввод – вывод данных

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

Выполнение этой операции в паскале происходит путем обращения к стандартным процедурам read или readln Запись процедуры ввода в общем виде:

read(список ввода);

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

Например read(a,b,c);

Вывод – процесс обратный вводу. Т.е. данные после обработки из оперативной памяти передаются на внешний носитель.

Выполнение этой операции в паскале происходит путем обращения к стандартным процедурам write или writeln Запись процедуры вывода в общем виде:

Write (список вывода);

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

Например Write(’а=’,а,’b=’,b,’сумма равна-‘,a+b);

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

 Пример 1. Вводятся два вещественных числа. Требуется вычислить их сумму. Вывести оба введенных числа и вычисленный результат. Обозначения: a,b – введенные числа Блок-схема алгоритма

 

Программа:

program summa; var  a,b:realbegin

writeln ('введите два числа'); readln(a,b);

writeln ('a=',a,' b=',b,' сумма введенных чисел =',a+b); end.

Распечатка окна вывода введите два числа 1 2 a=1 b=2 сумма введенных чисел =3

Комментарии к содержимому окна вывода. Первая строка – результат работы оператора

writeln ('введите два числа'); т.е. на монитор в окно вывода распечатается текст, записанный в апострофах. Исходные данные задачи рекомендуется вводить в режиме диалога.

Вторая строка окна вывода – это числа 1 и 2 набранные пользователем через пробел, поскольку в данном случае требовалось вести любые два числа. После того как пользователь наберет эти два числа требуется нажать клавишу Enter (ввод) а оператор программы readln(a,b); – считает эти два числа в память, отведенную для переменные a,b соответственно

Третья строка окна вывода – результат работы оператора:

writeln ('a=',a,' b=',b,' сумма введенных чисел =',s);

Здесь для того, чтобы при печати выводимые величины не сливались, использовались пробелы в тексте ' b=' содержит четыре пробела в выводимом тексте перед буквой b.

В выводимом тексте ' сумма введенных чисел =' перед словом сумма – четыре пробела.

Можно использовать при выводе форматный вывод.

Для вывода вещественных чисел в операторе WRITE необходимо указать формат представления такого числа, который имеет вид: WRITE(имя_переменной:m:n); где: m – целое число, указывающее общее количество позиций, отводимое под значение переменной, включая позицию под знак числа, точку и количество цифр дробной и целой части, n – целое число, определяющее количество цифр дробной части.

Выводимая информация выравнивается по левому краю выделяемого поля.

Вывод вещественных чисел выполняется по следующим правилам:

1.        Если число имеет меньшую длину, чем m, то оно будет дополнено слева пробелами.

2.        Если число имеет большую длину, чем m, то параметр m игнорируется и число будет выведено полностью.

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

4.        Если параметр n не указан, то ни дробная часть числа, ни десятичная точка не выводятся. Вывод осуществляется в формате с плавающей точкой.

Для вывода целых чисел в операторе WRITE необходимо указать формат представления такого числа, который имеет вид: WRITE(имя_переменной:k); где: k– целое число, указывающее общее количество позиций, отводимое под

значение переменной.

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

Программа с использованием форматного вывода в примере 1 имеет вид:

program summa; var   a,b:realbegin

writeln ('введите два числа'); readln(a,b); writeln ('a=',a:7:2,' b=',b:7:2,' сумма введенных чисел =',a+b:7:2); end.

Окно вывода: 

введите два числа 1 2 a= 1.00 b= 2.00 сумма введенных чисел = 3.00

Операторы паскаля

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

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

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

Оператор имеет структуру

Имя_переменной:=выражение;

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

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

1.   Вычисляется выражение, записанное справа от знака :=

2.   Полученное в результате значение присвается переменной, записанной слева от знака := , т.е. переменная теперь будет хранить это значение.

Пример 1. Вычислить сумму двух введенных чисел. Вывести оба эти числа и вычисленный результат. Обозначения:

Рис.1. Блок-схема алгоритма решения задачи примера 1  Программа:

program summa;  var a,b,s:real;

                begin      

writeln ('введите два числа');

 readln(a,b); s:=a+b; writeln ('a=',a:7:2,'b=',b:7:2,'сумма введенных чисел =',s:7:2); end.

Окно вывода: введите два числа 1 2

a= 1.00 b= 2.00 сумма введенных чисел = 3.00

Пример 2. Вычислить выражение

𝑥

 

Обозначения:

X – введенное число;

R, R1 – вспомогательные переменные; Y – результат вычисления выражения.

 

 

 

 

 

 

 

Рис. 2. Блок-схема алгоритма решения задачи Примера 2 Программа: 

program primer_2;  var x,r,r1,y:real;

                               begin      

writeln ('введите любое число'); readln(x); r:=sqr(x);  r1:=5-r/7;  r1:=3-r/r1;  r1:=1-r/r1;  y:=x/r1; writeln ('y=',y); end.

Окно вывода:

введите любое число 1 y=1.55737704918033

                 

Задания для самостоятельной работы

1.        Даны любые пять чисел: a, b, c, d, e. Найти среднее арифметическое и среднее геометрическое заданных чисел.

2.        Даны катеты прямоугольного треугольника a и b. Найти гипотенузу c и прилежащие углы прямоугольного треугольника.

3.        Известен диаметр окружности B. Требуется найти длину окружности L.

4.        Известны два числа A и B, ни одно из них не равно нулю. Найти их сумму S, разность R, произведение P и частное. Результаты вывести на печать.

5.        Известны катеты прямоугольного треугольника A и B. Требуется вычислить его гипотенузу C.

6.        Поменять местами содержимое ячеек A и B двумя способами.

7.        Известны координаты точек A и B на плоскости: A(x1, y1), B(x2, y2).Требуется вычислить длину отрезка AB.

8.        Известна диагональ квадрата A. Вычислить площадь S квадрата.

9.        Известны три числовые величины A1, A2, A3. Требуется осуществить перенос содержимого величины А2 в А1, содержимого величины А3 в А2, содержимого величины А1 в А3. Результат перестановки вывести на печать.

10.   Известна длина окружности L. Требуется вычислить радиус этой окружности

R.

11.   Известна сторона квадрата А. Вычислить длину диагонали D этого квадрата. Результат вывести на печать.

12.   Даны три точки на координатной плоскости: A(x1, y1), B(x2, y2) и C(x3, y3). Требуется вычислить длины отрезков AB, BC и CA. Результат вычисления вывести на печать.

13.   Известна гипотенуза c и один из прилежащих углов прямоугольного треугольника. Найти площадь прямоугольного треугольника S и прилежащий угол.

 

 

          

Условные операторы

Условные операторы предназначены для выбора к исполнению одного из возможных действий алгоритма в зависимости от результатов вычисления некого логического выражения, при этом одно из действий может отсутствовать. В паскале есть несколько условных операторов. Мы рассмотрим один из них – оператор if. Пусть на блок схеме ветвление имеет форму, изображенную на рис. 3.

нет

 

 

 

 

Рис. 3. Схема базовой структуры ветвления если-то

Здесь ЛВ – логическое выражение. Описывается эта конструкция на Паскале следующим оператором:

If ЛВ then оператор_1;

 

 

Рис. 4. Схема базовой структуры ветвления если-то-иначе

Если на блок схеме разветвляющаяся структура выглядит как на рис. 4, то описать ее средствами Паскаля можно с помощью оператора:

If ЛВ then оператор_1 else оператор_2;

Оператор if выполняется в таком порядке

1.                 Сначала вычисляется логическое выражение, записанное после слова if. В результате его вычисления получится величина логического типа (истина или ложь).

2.                 Если это истина, то выполняется оператор_1, записанный после слова then.

3.                 Если в результате вычисления логического выражения получим ложь. То выполняется опертор_2, записанный после слова else. Если в конструкции отсутствует слово else, то выполняется следующий оператор программы.

Если вместо оператора_1 или оператора_2 в конструкции ветвления стоит несколько операторов, то их нужно заключить в операторные скобки  begin… end.

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

 

Рис. 5. Базовая структура ветвления, где при выборе одного из альтернативных путей решения приходится выполнять несколько действий

 

Например, конструкция, представленная на рис. 5 в паскале описывается оператором:

If ЛВ then begin оператор_1;оператор_2;оператор_3; end еlse begin оператор_4;оператор_5;оператор_6; end;

В паскале точка с запятой может стоять только в конце оператора. И, если, в операторе, приведенном выше, опустить операторные скобки begin… end, то точка с запятой после оператора_1 спровоцирует конец оператора if и нарушит логику решения задачи. Чтобы избежать подобной ошибки и требуется выставлять операторные скобки. Скобка – не оператор, поэтому перед словом else точка с запятой не ставится. Она спровоцирует конец оператора if, кроме того, будет синтаксической ошибкой т.к. нет в паскале оператора начинающегося со слова else.

Если структура ветвления переставлена в алгоритме в форме выбора (рис.6), то записать ее на паскале нужно так

if ЛВ-1 then оператор_1 else if ЛВ-2 then оператор_2 else  if ЛВ-3 then оператор_3;

Здесь ЛВ 1 это логическое выражение 1, ЛВ 2 это логическое выражение 2, ЛВ

3 это логическое выражение 3.

 

 

Рис. 6. Базовая структура ветвления в виде выбора

Следует обратить внимание, что точка с запятой стоит только в конце оператора, т.е. только там, где все ветви, образовавшиеся в процессе ветвления – соединились (пришли в одну точку, т.е. конструкция ветвления закончилась).

Читается конструкция так:

Если ЛВ-1 является истиной, то выполнить опертор-1, иначе,  если ЛВ-2 будет истиной, то выполнить оператор 2, иначе если ЛВ-3 в результате вычисления будет истиной, то выполнить оператор_3 в противном случае ничего не делать.

Конец оператора (конструкции) ветвления.

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

Если структура ветвления имеет форму, представленную на рис. 7, то на паскале этот оператор запишем так if ЛВ-1 then begin оператор_1; оператор_2; end else if ЛВ-2 then begin оператор_3; оператор_4; end else   if ЛВ-3 then begin оператор_5; оператор_6;    end    else    begin оператор_7;оператор_8;      end;

Рис. 7. Базовая структура ветвления в виде выбора, где в случае выбора одного из альтернативных путей решения требуется выполнить несколько операторов Пример 3. Вводится число, если оно положительное требуется его удвоить.

Математическая модель:

                                                                                                   𝑥 = 2𝑥           если 𝑥>0

                                                     

Рис. 8. Блок-схема алгоритма решения задачи в примере 3

                 

Программа: 

program primer_3; var  x:real; begin writeln ('введите любое число'); readln

(x);

if x>0 then x:=2*x; writeln ('x=',x); end.

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

 

Пример 4. Вводится число, если оно положительное требуется его  удвоить, в противном случае утроить. Разработать блок схему алгоритма. Математическая модель:

2X X = 

3X

если

если

X>0

X≤0

Программа:

program primer_4; var x:real; begin writeln ('введите любое число'); readln

(x);

if x>0 then x:=2*x else x:=3*x; writeln

('x=',x); end.

 

 

Рис. 9. Блок-схема алгоритма решения задачи в примере 4

                 


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

Математическая модель:

2X, если X > 0 X = 3X, еслиX < 0

                                                                                              

Рис. 10. Блок-схема алгоритма решения задачи примера 5 Программа: 

program primer_5; var x:real; begin

writeln ('введите любое число'); readln (x); if x>0 then x:=2*x else if x<0 then x:=3*x; writeln ('x=',x); end.

Пример 6. Вводится число, если оно положительное требуется его  удвоить, если отрицательное утроить, если это ноль увеличить на единицу. Математическая модель:

2X, если X > 0

X = 3X, если X < 0

 X + 1, если X = 0 Программа: 

program primer_6;

var x:real; begin

writeln ('введите любое число'); readln (x); if x>0 then x:=2*x else if x<0 then x:=3*x else


x:=x+1; writeln ('x=',x); end.  

Рис. 11. Блок-схема алгоритма решения задачи примера 6

Рис 12. Блок-схема алгоритма решения задачи примера 7 Программа:

 program primer_7; var  x:real; begin

writeln ('введите любое число'); readln (x);

if x>0 then begin x:=2*x; writeln ('x=',x); endelse if x<0 then begin x:=3*x; writeln ('x=',x); endelse writeln('Решений нет'); end.

 

Пример 8. Найти максимальное из трех заданных чисел.

 Обозначения: X,Y,Z – введенные числа; MAX – максимальное из чисел.

Программа:

program primer_8_1; var x,y,z,max:real;

begin     

writeln ('введите любые три числа');

 readln (x,y,z);

if x>y then max:=x else max:=y; if z>max then max:=z;  writeln('max=',max); end

Программа:

program primer_8_2; var x,y,z,max:real; begin

writeln ('введите любые три числа'); readln (x,y,z);

if x>y then if x>z then max:=x else max:=z else if y>z then max:=y else max:=z; writeln('max=',max); end.

Пример 9. Упорядочить три числа по возрастанию. Обозначения: X,Y,Z – введенные числа; К – вспомогательная переменная (для хранения копии числа при обмене содержимого двух ячеек).

Программа: program primer_9; var x,y,z,k:real; begin

writeln ('введите любые три числа'); readln (x,y,z);

if x>y then begin k:=x;x:=y;y:=k;end; if x>z then begin k:=x;x:=z;z:=k;end;


if y>z then begin k:=y;y:=z;z:=k;end; writeln('x=',x,'y=',y,'z=',z); end.

Пример 10. Вычислить

𝑥, если − 3 < 𝑥 < 3

𝑦 = 𝑥2, если 3 < 𝑥 < 5

𝑥3, если 𝑥 > 5

 

Программа: program primer_10_1; var x,y:real; begin

writeln ('введите любое число'); readln (x); if (x>-3)and(x<3) then  begin y:=x; writeln('y=',y); end  else

if (x>=3)and(x<5) then  begin y:=sqr(x); writeln('y=',y); end  else if x>=5 then begin y:=exp(3*ln(x)); writeln('y=',y); end else

writeln('решений нет'); end.

 

Программа: 

program primer_10_2; var  x,y:real; begin

writeln ('введите любое число');

 readln (x); if x>=5 then begin y:=exp(3*ln(x)); writeln('y=',y); end else if (x>=3) then begin y:=sqr(x); writeln('y=',y); end  else if x>-3 then begin

y:=x; writeln('y=',y); end  else

writeln('решений нет'); end.

Пример 11. Даны вещественные числа x и y. Определить, принадлежит ли точка с координатами (x; y) заштрихованной области (рис. 18.).

Рис. 19. Блок-схема алгоритма решения задачи примера 11 Программа:

program primer_7;

var  x,y:realbegin

writeln ('введите координаты точки на плоскости'); readln (x,y); if (x>=-1)and(x<=3)and(y>=-2)and(y<=4) then writeln('точка принадлежит заданной области')else  writeln('точка не принадлежит заданной области'); end.

Задания для самостоятельной работы

1.                 Дано вещественное число B. Вычислить значения функции в заданной точке 𝑦 = f(B). Графики функции 𝑦 = f(x) приведены на рис. 20-21.

                                                                                                                                                                                                      

                                     Рис. 20                                               Рис. 21

2.                 Дана точка A с координатами (x,y) на плоскости. Определить, принадлежит ли эта точка закрашенной области. Области заданий на рис. 22-23.         

 

 

                          Рис. 22                                                     Рис 23

3.                 Задана окружность. Центр окружности – в точке (m, n), ее радиус - R. Определить, пересекается ли заданная окружность с осью абсцисс, и, если пересекается – найти координаты точек пересечения.

4.                 Задана окружность. Центр окружности – в точке (m, n), ее радиус - R. Определить, пересекается ли заданная окружность с осью ординат, и, если пересекается – найти координаты точек пересечения.