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

Линейные_разветвления

.pdf
Скачиваний:
31
Добавлен:
02.06.2015
Размер:
336.42 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Электротехнический факультет Кафедра электрических станций

Линейные и разветвляющиеся вычислительные процессы

Методические указания и задания к лабораторным и практическим занятиям

по дисциплине «Информатика» для студентов дневного отделения

специальностей 100100, 100400, 100700, 180100, 181300

Киров 2009

2

УДК 519.95 С 23

Составители:

кандидат технических наук,

 

доцент Р.В. Медов

Подписано в печать

 

Усл. печ. л. 3,6

Бумага типографская

 

Печать матричная

Заказ №

Тираж

Бесплатно

Текст напечатан с оригинал-макета, представленного автором 610000, г. Киров. ул. Московская 36.

© Вятский государственный университет, 2009

3

Введение

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

1. Язык программирования Pascal 1.1.Алфавит языка Pascal

Как и каждый язык, Паскаль имеет свой алфавит. В него входят латинские буквы, цифры от 0 до 9, специальные символы (+, , *, /, =, ', . , : , ; ,<, >, ^, @, $, #), парные символы (<>, <=, >=, :=, [], (), {}, (* *), (..)), пробелы и зарезервированные слова. Зарезервированные слова не могут использоваться в качестве идентификаторов. Идентификаторы на языке Pascal — это имена констант, переменных, типов, программ и т. д. Длина идентификатора может быть любой, но значение имеют первые 63 символа. Идентификатор начинается буквой, за которой могут следовать буквы, цифры и знаки подчеркивания.

Текст программы на языке Pascal может содержать комментарии. Символом начала комментария является (* или {, символом окончания комментария

— *) или }. Текст, заключенный в скобки комментариев, игнорируется компилятором, поэтому в нем можно употреблять буквы русского алфавита.

Строка, начинающаяся символами {$, является директивой компилятору. За этими символами следует команда компилятору.

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

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

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

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

Uses имя модуля1, … , имя модуляN ; Const описание констант ;

Type описание типов ;

Var описание переменных ; Label описание меток ;

Procedure или Function описание подпрограмм ; begin

раздел исполнения ; end.

4

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

На практике при написании программ разделы const, type, var, label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз, а также могут отсутствовать вообще.

Раздел исполнения должен присутствовать в любой программе и является основным.

При записи операторов необходимо соблюдать правила расстановки символов точки с запятой:

точка с запятой ставится после завершения каждого описания;

точка с запятой не ставится после слова begin и перед словом end, так как эти слова являются операторными скобками;

точка с запятой ставится между операторами;

в операторах цикла точка с запятой не ставится после слов while, repeat, do;

в условном операторе точка с запятой не ставится после слова then и перед словом else;

в операторе варианта точка с запятой не ставится после слова of.

1.3.Присваивание

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

Имя переменной := арифметическое выражение .

Для типов переменной слева и арифметического выражения справа от оператора присваивания существуют ограничения:

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

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

1.4.Ввод и вывод данных

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

Формат процедуры ввода: Read(список ввода):

5

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

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

Если тип данных, вводимых с клавиатуры, не соответствует или не может быть приведен к типу переменных, имена которых указаны в read (readln), то программа аварийно завершает работу и на экран выводится сообщение об ошибке.

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

Формат процедуры вывода: write(список вывода);

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

Для переменных вещественного типа формат задается двумя целыми числами, разделенными двоеточием. Первое число определяет ширину поля вывода, а второе — количество цифр после десятичной точки.

Например:

writeln ('Ha улице хорошая погода'); writeln ('Целое а = ', а:3);

write ('Вещественное b = ', b:10:3);

Процедура writeln (write line — писать в строку) отличается от инструкции write только тем, что после вывода сообщений или значений переменных курсор переводится в начало следующей строки.

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

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

Формат описания типов:

type имя типа = значения типа. Формат описания переменных: var идентификатор : имя типа.

6

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

Таблица 1 – Целые типы:

Тип

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

Число байт в памяти

Byte

 

0...255

1

Shortint

-128...127

1

Word

0...65 535

2

Integer

-32 768...32 767

2

Longint

-2 147 483 648...2 147 483 647

4

Таблица 2 – Вещественные типы:

 

Тип

Диапазон

Количество зна-

Число байт в памяти

Real

 

чащих цифр

 

10-39..10+38

11-12

6

Single

10-45..10+3S

7-8

4

Double

10-324..10+308

15-16

8

Extended

10-4932..10+4932

19-20

10

Comp

(-263+l)...(263-l)

19-20

8

Логический (булев) тип данных boolean представлен всего двумя значениями — true и false.

Символьный тип char занимает 1 байт и определяется множеством значений кодовой таблицы ЭВМ. Каждому символу соответствует целое число в диапазоне 0...255.

Перечисляемый тип задается перечислением (в круглых скобках) всех доступных значений. Формат записи:

type имя типа = (знач.1, знач.2 , … , знач.N);

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

Формат записи:

type имя типа = мин знач .. макс знач;

Ограниченный и перечисляемый типы занимают в памяти 1 байт (8 бит), поэтому не могут содержать более 256 значений.

1.6.Стандартные функции и процедуры

Арифметические функции языка Паскаль: Abs(x) — абсолютное значение аргумента х;

Arctan(x)— арктангенс х, выраженный в радианах; Cos(x) — косинус х (х задается в радианах); Sin(x)— синус х (х задается в радианах);

7

Sqr(x) — квадрат х;

Sqrt(x) — квадратный корень из х; Exp(x) — ex (экспонента);

Ln(x) — натуральный логарифм х;

Pi - число π (3,1415926535897932385...); Frac(x) — дробная часть х;

Int(x) — выделяет целую часть х без преобразования типа; Randomize — включает генератор случайных чисел.

Random(x) —генерирует случайное целое число в пределах от 0 до х-1; Random — генерирует случайное действительноечисло в пределах от 0,00

до 1,00.

Функции преобразования типов:

Round(x) — округляет значение х до ближайшего целого числа;

Trunc(x) — выделяет целую часть вещественного числа и преобразует ее к типу longint.

Скалярные функции и процедуры:

Odd(x) — возвращает true, если х нечетно, и false, если х четно;

Pred(x) — возвращает элемент, предшествующий х в списке значений данного типа, тип результата совпадает с типом х;

Succ(х) — возвращает значение, следующее за х в списке значений данного типа, тип результата совпадает с типом параметра;

Inc(х, n) — увеличивает значение х на n, при отсутствии необязательного параметра n значение х увеличивается на единицу (x, n – целые);

Dec(х, n) — уменьшает значение х на n, при отсутствии необязательного параметра n значение х уменьшается на единицу (x, n – целые).

Процедуры и функции для работы с экраном (требуют подключения модуля crt):

Clrscr — очищает текущее окно, заполняет его цветом фона и помещает курсор в его верхний левый угол с координатами (1, 1);

Gotoxy(x,y) — перемещает курсор к элементу экрана с заданными координатами х, у, которые отсчитываются от левого верхнего угла текущего окна.

Wherex — возвращает текущую координату х курсора; Wherey — возвращает текущую координату у курсора.

1.7.Операции

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

Порядок выполнения операций определяется их приоритетом. В языке Pascal все операции делятся на четыре приоритета. В первую очередь выполняются операции 1 приоритета, в последнюю – 4 приоритета.

 

 

 

8

Таблица 3 – Деление операций по приоритетам

 

 

 

 

Прио-

Категория

Операция

Название операции

ритет

 

 

 

1

Унарные

not

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

операции

@

взятие адреса

 

 

 

*

умножение

 

 

/

деление

 

Бинарные опе-

div

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

2

рации типа

mod

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

 

умножения

and

логическое И

 

 

shl

разрядный сдвиг влево

 

 

shr

разрядный сдвиг вправо

 

Бинарные опе-

+

сложение

 

-

вычитание

3

рации типа сло-

or

логическое ИЛИ

 

жения

 

xor

логическое отрицающее ИЛИ

 

 

 

 

=

проверка на равенство

 

 

<>

проверка на неравенство

 

Бинарные опе-

<

проверка на меньше

4

рации отноше-

>

проверка на больше

 

ния

<=

проверка на меньше либо равно

 

 

>=

проверка на больше либо равно

 

 

in

проверка на вхождение в множество

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

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

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

Таблица 4 – Результаты логических операций

 

Операнд

 

Результат операции NOT

 

1 (true)

 

0 (false)

 

 

0 (false)

 

1 (true)

 

1 операнд

2 операнд

 

Результат операции

 

AND

OR

XOR

 

 

1

1

1

1

0

1

0

0

1

1

0

1

0

1

1

0

0

0

0

0

9

2. Линейные вычислительные процессы

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

Для отображения линейного алгоритма в виде блок схемы применяются следующие блоки:

Терминатор

Обозначает начало и конец программы

Процесс

Обозначает действие, изменяющее значения

данных

 

Данные

Общий блок для обозначения операций ввода-

вывода данных

 

Ручной ввод

Обозначает данные, введенные с клавиатуры

Дисплей

Обозначает данные, выводимые на экран

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

Задание 1. Составить алгоритм (в виде блок-схемы) и написать программу на языке Pascal для решения задачи: найти сумму и произведение трех введенных с клавиатуры целых чисел.

Алгоритм решения данной задачи должен включать в себя следующие действия:

1.Ввод с клавиатуры трех чисел.

2.Вычисление суммы введенных чисел.

3.Вычисление произведения введенных чисел.

4.Вывод на экран результатов расчета.

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

Для составления блок-схем алгоритмов лучше всего воспользоваться программой MS Visio. После запуска MS Visio необходимо выбрать категорию Flowchart, а в ней подкатегорию Basic Flowchart. В результате откроется новый документ, а в левой части окна появится окно со стандартными блоками (shape). Размещение блоков осуществляется простым перетаскиванием с помо-

щью мыши. Для соединения блоков между собой применяется кнопка

Connector tool на панели инструментов. Чтобы набрать текст в блоке необходимо произвести на нем двойной щелчок мышью.

10

Запустите MS Visio и составьте блок-схему программы, приведенную на рисунке 1.

Начало

Ввод a,b,c

Sum=a+b+c

Pr=a*b*c

Вывод Sum и Pr

Конец

Рисунок 1.

Набор текста программы может быть осуществлен в любом текстовом редакторе, но удобнее воспользоваться редактором, встроенным в систему программирования (Turbo Pascal, Borland Pascal, Pascal ABC и т.п.).

Запустите Pascal и наберите текст программы:

Program Example_1;

Uses crt; {или wincrt}

var a,b,c,sum,pr:integer; begin

clrscr;

writeln('Программа вычисления суммы и произведения'); write('Введите 3 целых числа через пробел ->,'); readln(a,b,c);

sum:=0;

pr:=0;

sum:=a+b+c;

pr:=a*b*c;

writeln('Сумма = ',sum,', произведение = ',pr);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]