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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ОДЕССКИЙ НАЦИОНАЛЬНЫЙ МОРСКОЙ УНИВЕРСИТЕТ

Кафедра«Техническая кибернетика»

 

 

Основы алгоритмизации и программирования

 

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

для всех специальностей ОНМУ

 

 

Одесса - 2004

 

 

Методические указания и задания разработаны к. т. н. Бугаевой Ириной Григорьевной – ассистентом кафедры ”Техническая кибернетика” Одесского национального морского университета, Кунгурцевой Еленой Николаевной и Новиковой Натальей Алексеевной – ст. преподавателями той же кафедры в соответствии с рабочей программой дисциплины «Информатика и компьютерная техника».

 

Методические указания и задания одобрены на заседании кафедры «Техническая кибернетика» ОНМУ 29 сентября 2003 г. (протокол № 2).

 

Оглавление

Предисловие……………………………………………………………………..4

Введение…………………………………………………………………………5

1. Разветвляющиеся вычислительные процессы……………………………...7

2. Циклические вычислительные процессы………………………………….13

2.1. Циклы с заданным числом повторений………………………………….13

2.1.1. Вычисление массива значений функции………………………………14

2.1.2. Обработка одномерных массивов………………………………………15

2.1.2.1. Поиск наименьшего (наибольшего) элемента массива……………..15

2.1.2.2. Вычисление суммы и количества элементов массива………………16

2.1.2.3. Вычисление произведения элементов массива……………………...17

2.1.2.4. Поиск элементов массива по заданному критерию…………………19

2.2. Циклы с неизвестным числом повторений………………………………20

2.2.1. Табулирование функций………………………………………………...20

2.2.2. Итерационные вычислительные процессы…………………………….22

2.2.3. Вычисление суммы бесконечного ряда….……………………………..23

2.3. Сложные циклы……………………………….……………………………25

2.3.1. Пример алгоритма, содержащего вложенный цикл…………………....25

2.3.2. Обработка двумерных массивов (матриц)..…………………………….28

2.3.2.1. Вычисление суммы и количества элементов массива……………….28

2.3.2.2. Поиск элементов массива по заданному критерию………………….30

3. Работа с текстовыми файлами……………………………………………….31

4. Функции в языке PASCAL………………………………….………………33

5. Процедуры в языке PASCAL……………………………………………….34

6. Модули в языке PASCAL …………………………………………………...37

Литература…………………………………………………………………….…40

Предисловие

 

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

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

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

Без ограничения общности рассматриваемых вопросов для изучения основ программирования будем использовать систему программированияBorland Pascal,включающую язык программирования Pascal.

Цель данного пособия – ознакомление студентов с основными методами алгоритмизации и программирования на конкретных примерах.

В разделах “Алгоритмизация вычислительных процессов” и “Программирование на языке Pascal” дисциплины “Информатика и компьютерная техника” предусмотрено выполнение лабораторных работ в системе Borland Pascal (Turbo Pascal), целью которых является получение практических навыков разработки схем алгоритмов для типовых задач, написания соответствующих им программ на языке Pascal и выполнения этих программ на компьютере при заданных вариантах исходных данных.

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

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

Для закрепления теоретического материала в пособии приведены некоторые основные понятия и конструкции языка Pascal.

Введение

Подготовка задачи к решению на компьютере – трудоёмкая и кропотливая работа, содержащая целый ряд различных этапов [Л1, стр. 5-7], три из которых рассматриваются в данном пособии:

; разработка алгоритма;

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

; выполнение программы на компьютере.

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

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

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

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

Программа на языке Pascal [Л1, стр. 58-61] состоит из трёх частей:

; заголовок;

; раздел описаний;

; тело программы.

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

; рабочая программа (программа пользователя);

; функция (подпрограмма – функция);

; процедура (подпрограмма – процедура);

; модуль (библиотека программ).

Каждая программная единица должна начинаться с соответствующего ей заголовка.

Пример заголовка рабочей программы:

Рrogram primer1;

гдеprimer1 –имя программы, выбранное пользователем.

В разделе описаний [Л1, стр. 59-61] должны указываться все модули, метки, константы, типы данных, переменные, процедуры и функции, которые используются в данной программе.

Пример описания констант:

 

Const

n=50;

k=25.5;

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

Var

a, b : real;

i, k : integer;

X : array [1..20] of real;

Y : array [1..10,1..10] of integer;

В этом описании содержится информация о том, что значениями переменных a и bдолжны быть вещественные числа, значениями переменных i и kдолжны быть целые числа, переменная Xявляется одномерным массивом, состоящим из 20-ти вещественных чисел, а переменная Yявляется двумерным массивом (матрицей 10*10), состоящим из целых чисел.

Тело программы состоит из операторов [Л1, стр.46] и должно начинаться с ключевого слова begin и заканчиваться словом end, после которого должна стоять точка в программах пользователя и модулях, а в процедурах и функциях после слова endставится точка с запятой.

Операторы отделяются друг от друга точкой с запятой.

Для выполнения вычислений по формулам используется оператор присваивания.

Примеры записи операторов присваивания:

a:=1;

b:=5;

x:=a+b;

y:=1-3.4*c;

z:=d*x+2.5*y-1.53;

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

В операторах присваивания могут использоваться стандартные функции:

sin(x), cos(x), ln(x), exp(x), sqrt(x) и др. для вычисления значений математических функций sinx, cosx, lnx, ex, Öx соответственно.

Для ввода данных с клавиатуры и вывода результатов на экран используются процедуры read, readln, write, writeln.

Примеры записи процедур ввода - вывода:

readln(b1,b2,…,bn);(ввод с клавиатуры)

writeln(b1,b2,…,bn);(вывод на экран)

где b1,b2,…,bn - имена переменных, подлежащих вводу или выводу.

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

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

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

 

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

В языке Pascal существует ряд средств, с помощью которых можно организовать разветвление в программе [Л1, стр. 51 - 54]. Одним из таких средств является условный оператор if.

Общий вид оператора if:

ifлогическое_выражениеthenоператор1еlseоператор2;

где оператор1, оператор2 – простые или составные операторы.

Составной оператор представляет собой последовательность операторов, заключенных в операторные скобки begin - end.

Выполнение оператора if:

1) вычисление значения логического выражения;

2) в случае, если его значение равно true (истина), выполняется оператор1, в противном случае - оператор2;

3) управление передается оператору, следующему за оператором if.

Допускается форма оператора if без конструкции else:

ifлогическое_выражениеthenоператор1;

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