Алгоритмические языки. Изучение условных и циклических конструкций
Построение ветвящихся процессов на примере табулирования функции на заданном промежутке. Построение блок-схемы, применение операторов цикла и условного перехода, математических функций и констант. Создание алгоритма и листинг программы на языке Pascal.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 07.02.2012 |
Размер файла | 154,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Алгоритмические языки. Изучение условных и циклических конструкций
Брянск 2007
1. ЦЕЛЬ РАБОТЫ
Целью работы является приобретение практических навыков при построении ветвящихся процессов с использованием условных и циклических конструкций на примере табулирования функции на заданном промежутке.
Продолжительность работы - 2,5ч.
2. Теоретическая часть
2.1 Блок-схемы
Блок-схемой - называется графическое представление алгоритма. Блок-схемы должны быть оформлены в соответствии с единой системой программной документации (ЕСПД). ЕСПД является набором государственных стандартов, который определяет, в том числе, и элементы блок-схем. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Любая блок-схема обязательно должна иметь блоки "начало", из которого начинается выполнения алгоритма, и "конец", завершающим выполнение алгоритма. Рассмотрим наиболее часто употребляемые символы (табл. 1).
Таблица 1 Основные символы блок-схем
Название символа |
Обозначение и пример заполнения |
Пояснение |
|
Процесс |
Вычислительное действие или последовательность действий |
||
Решение |
Проверка условий |
||
Модификация |
Начало цикла (указываются начальное значение, конечное значение, шаг) |
||
Ввод-вывод |
Операция ввода-вывода |
||
Пуск-останов |
Начало, конец алгоритма |
||
Документ |
Вывод результатов на печать |
||
Предопреде-ленный процесс |
Вызов подпрограммы |
Блок "процесс" применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Блок "решение" используется для обозначения переходов управления по условию. В каждом блоке "решение" должны быть указаны вопрос, условие или сравнение, которые он определяет. Блок "модификация" используется для организации циклических конструкций. Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное значение и шаг изменения значения параметра для каждого повторения. Блок "предопределенный процесс" используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам. Пример. Необходимо составить алгоритм решения задачи нахождения значения функции R(r) в виде блок-схемы (рис. 1).
Рис. 1. Представление алгоритма в виде блок-схемы
2.2 Операторы условного перехода
Операторы условного перехода позволяют выбрать для исполнения один из нескольких операторов в зависимости от условия.
2.2.1 Оператор условия If
Синтаксис оператора If:
If выражение Then оператор_1 Else оператор_2;
В представленном операторе if выражение должно быть булевского (логического) типа данных, т.е. принимающее одно из значений true или false. Если значение выражения равно true, то выполняется оператор_1, если значение выражения - false, то выполняется оператор_2.
Выражение записывается с помощью булевских операций. Пример выражения: a>b, где a и b - это переменные, значение которых определено ранее.
После каждого оператора следует ставить ";", но следует обратить внимание, что после оператора_1 не стоит ";", так как это исключение. Вместо оператора_1 и оператора_2 может стоять несколько операторов, это становится возможным при применении составного оператора begin … end;. Несколько операторов заключаются в составной и представляются компилятору языка как один блок операторов.
Например:
If (a>0) and (a<=10) Then WriteLn(`Число находится в диапазоне (0,10].') Else WriteLn(`Число вне диапазона (0,10].');
Допускается краткая форма условного оператора:
If выражение Then оператор;
В качестве выражения может быть использовано также только булевское выражение. В этом случае, если значение выражения равно true, то выполняется оператор. Если значение выражения false, то управление передается оператору, следующему за оператором If.
2.2.2 Оператор выбора Case
Обычно при написании программы не рекомендуется использовать многократно вложенные друг в друга условные операторы - программа становится громоздкой и трудно понимаемой. Но если необходимо проверять достаточно много условий и в зависимости от них выполнять те или иные действия, то для этих целей в языке Pascal существует специальный оператор выбора Case.
Синтаксис оператора Case:
Case переключатель Of
список констант_1: оператор_1;
список констант_2: оператор_2;
…
список констант_N: оператор_N
[Else оператор_E;]
End;
Переключатель - это выражение порядкового типа данных, в частном случае в качестве переключателя может выступать имя переменной. К порядковому типу относят следующие типы данных: целочисленный, символьный, перечисляемый и булевский типы данных. Переключателем может быть переменная, условное выражение, функция. Тип констант в списке констант и тип переключателя обязан совпадать. Переключатель определяет, какой из операторов должен быть выполнен. Если переключатель принимает одно из значений списка констант_1, то выполняется оператор_1, а остальные операторы пропускаются. Если значение переключателя не совпадает ни с одним из значений списков констант, то выполняется оператор_E. После выполнения соответствующего оператора управление передается на оператор, следующий за конструкцией Case. Ветвь Else в операторе Case может отсутствовать.
Пример:
Case operation Of
'+': A:=A + B;
'-': A:=A - B;
End;
2.3 Операторы циклов
Операторы повторения (циклов) обычно используют для многократного повторения некоторых действий.
Pascal поддерживает три управляющих конструкции повторения:
· цикл с предусловием (While);
· цикл с постусловием (Repeat);
· цикл со счетчиком (For).
2.3.1 Оператор с предусловием While
Цикл While используется, как правило, в тех случаях, когда заранее неизвестно количество повторений цикла.
Синтаксис оператора While:
While выражение Do оператор;
Выражение должно быть булевского типа данных. Значение выражения вычисляется перед каждым выполнением оператора, поэтому цикл While называют еще циклом с предусловием. Оператор, составляющий тело цикла, выполняется, пока выражение равно true. Если значение выражения false, то оператор не выполняется и происходит выход из цикла.
Если первоначальное значение выражения равно false, то оператор не выполнится ни разу. Чтобы избежать бесконечного повторения (зацикливания), необходимо хотя бы одну переменную, входящую в выражение, изменять в теле оператора цикла. Более того, эти изменения должны быть такими, чтобы булевское выражение в ходе вычисления приняло значение false. Если же булевское выражение первоначально истинно и ни при каких обстоятельствах не становится ложным, то выполнение оператора цикла никогда не завершится.
Пример: вычисление суммы ряда, состоящего из 50 элементов.
S:=0; N:=1;
While N<=50 Do Begin
S:=S+1/N;
N:=N+1;
End;
2.3.2 Оператор с постусловием Repeat
Цикл Repeat, как правило, используется в тех случаях, когда заранее неизвестно количество повторений операторов тела цикла, но необходимо выполнить тело цикла хотя бы один раз. Синтаксис оператора цикла Repeat:
Repeat
оператор;
Until выражение;
В цикле Repeat вначале выполняется оператор (или операторы) тела цикла, затем вычисляется значение выражения; если его значение равно false, то вновь выполняется оператор, если значение выражения true, то цикл заканчивается. Если значение выражения равно true с самого начала, то оператор выполняется лишь один раз. Если выражение никогда не принимает значение true, то оператор выполняется бесконечное число раз, т.е. происходит "зацикливание".
Нижняя граница операторов циклической части обозначена словом Until, поэтому нет необходимости заключать операторы циклической части в операторные скобки begin … end.
Пример: вычисление суммы ряда, состоящего из 50 элементов.
S:=0; N:=1;
Repeat
S:=S+1/N; N:=N+1;
Until N>50; { пока значение N не превзойдет 50 }
2.3.3 Оператор со счетчиком For
Оператор цикла For служит для организации цикла в тех случаях, когда заранее известно, сколько раз должна повторяться циклическая часть программы, обычно цикл For используют при работе с массивами. Синтаксис оператора For по возрастающим значениям параметра:
For счетчик:=значение_1 To значение_2 Do оператор;
Счетчик - переменная порядкового типа.
Значение_1, значение_2 - начальное и конечное значения переменной счетчик.
Чтобы оператор в цикле выполнился хотя бы один раз, значение_2 должно быть равно либо больше, чем значение_1. Переменная цикла принимает последовательные значения данного типа от значения_1 до значения_2.
Например,
{для i=1,2,3,...,20 будет выполняться оператор А:=А+1}
For i:=1 To 20 Do A:=A+1;
Имеется возможность организовать цикл по убывающим значениям параметра. Для этого используется зарезервированное слово DownTo. Синтаксис оператора For по убывающим значениям параметра:
For счетчик:=значение_1 DownTo значение_2 Do оператор;
В этом случае переменная принимает последовательные убывающие значения данного типа от значения_1 до значения_2.
Например,
{для i=10,9,8,...,1 будет выполняться оператор А:=А+1}
For i:=10 DownTo 1 Do A:=A+1;
2.4 Математические функции и константы
В языке Pascal есть ряд констант, к значениям которых можно обращаться без предварительного определения; их называют встроенными (или зарезервированными) константами. Перечислим некоторые из них:
MaxInt - содержит максимально возможное значение для типа Integer (32767);
MaxLongInt - содержит максимально возможное значение для типа LongInt (2147483647);
Встроенные функции:
PI: Real - возвращает число ?=3,14159265358;
Odd(A: Integer): Boolean - возвращает true, если А нечётное;
Int(X: Real): Real - возвращает целую часть аргумента;
Round(X: Real): Integer - возвращает результат округления аргумента до ближайшего целого;
Trunc(X: Real): Integer - отбрасывает дробную часть аргумента;
Frac(X: Real): Real - возвращает дробную часть аргумента;
Abs(X: Real): Real - возвращает абсолютное значение аргумента;
Abs(X: Integer): Integer - возвращает абсолютное значение аргумента;
Random(A: Integer): Integer - возвращает случайное целое число из промежутка [0,A);
Sqr(X: Integer): Integer - возвращает квадрат аргумента;
Sqr(X: Real): Real - возвращает квадрат аргумента;
Sqrt(X: Real): Real - возвращает квадратный корень аргумента;
Exp(X: Real): Real - возвращает экспоненту аргумента;
Ln(X: Real): Real - возвращает натуральный логарифм аргумента;
Sin(X: Real): Real - возвращает синус аргумента;
Cos(X: Real): Real - возвращает косинус аргумента;
ArcTan(X: Real): Real - возвращает арктангенс аргумента.
Все перечисленные константы и функции находятся в стандартном модуле System, этот модуль доступен в программе без предварительного подключения.
Для вычисления значений других функций следует пользоваться следующими тождествами, записанными с помощью доступных функций языка Pascal:
ArcSin(x)=ArcTan(x/Sqrt(1-x*x));
ArcCos(x)=PI/2-ArcTan(x/Sqrt(1-x*x));
ArcCtg(x)=PI/2-ArcTan(x);
Logba=Ln(a)/Ln(b);
ax=Exp(x*Ln(a)), где a>0.
2.5 Примеры
Пример 1. Разложение целого числа на простые множители.
PROGRAM Primer_1;
Var x,m: Integer;
BEGIN
Write ('Введите целое число. '); ReadLn (x);
WriteLn ('Разложение числа ', x, ' на простые множители');
m:=2;
While m<=x do
If (x MOD m)=0 Then
Begin
Write (' * ',m);
x:=x DIV m;
End else m:=m+1;
END.
Пример 2. Программа, моделирующая калькулятор.
PROGRAM Primer_2;
Var operation: Char; { Символ арифметической операции }
n: Real;
Answer: Real; { Результат вычисления }
BEGIN
Answer:=0; { Вначале обнулим результат }
operation:='+'; { Присвоить '-', '*' или '/' нельзя }
WriteLn ('Вводите арифметическое выражение');
WriteLn ('каждый символ - с новой строки ');
Repeat
ReadLn (n);
Case operation Of
'+': Answer:=Answer + n;
'-': Answer:=Answer - n;
'*': Answer:=Answer * n;
'/': Answer:=Answer / n;
End;
ReadLn (operation);
Until operation = '=';
WriteLn (Answer:5:4);
END.
Пример 3. Найти все простые числа на заданном отрезке
PROGRAM Primer_3;
Var M: Integer; { Нижняя граница отрезка }
N: Integer; { Верхняя граница отрезка }
i,j: Integer; { Параметры циклов }
kl: Integer;
BEGIN
Write ('Введите нижнюю границу отрезка. '); ReadLn (M);
Write ('Введите верхнюю границу отрезка. '); ReadLn (N);
WriteLn ('Все простые числа из отрезка [', M, ' - ', N, ']');
For i:=M To N Do Begin
kl:=0;
For j:=2 To Round (Sqrt(i)) Do If (i MOD j)=0 Then kl:=kl+1;
If kl=0 Then Write (i, ' ');
End;
END.
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Работа выполняется студентом самостоятельно и состоит из этапов:
1) изучение методических указаний по выполнению лабораторной работы и получение индивидуального задания;
2) составление блок-схемы алгоритма программы;
3) разработка программы;
3) отладка программы;
4) защита лабораторной работы.
Общие требования к программе:
· текст программы представляется в электронном виде и должен включать постановку задачи, сведения об авторе и подробные комментарии;
· названия переменных должны быть логически обоснованны и давать понятие о том, что в них предполагается хранить или обрабатывать;
· программа должна запрашивать входные данные и выводить итоговый результат с пояснениями.
4. Список заданий
оператор алгоритм программа pascal
Для выполнения данной лабораторной работы необходимо описать алгоритм поставленной задачи в виде блок-схемы и написать программу на языке Pascal, которая будет реализовывать табулирование функции для заданной системы уравнений на числовом промежутке [a, b] с шагом P. Данные должны выводиться в табличной форме, где каждому значению аргумента соответствует подсчитанное значение функции. Задание необходимо выбрать из табл. 2 согласно номеру варианта.
Таблица 2 Список заданий
№ |
Система уравнений |
№ |
Система уравнений |
|
1 |
16 |
|||
2 |
17 |
|||
3 |
18 |
|||
4 |
19 |
|||
5 |
20 |
|||
6 |
21 |
|||
7 |
22 |
|||
8 |
23 |
|||
9 |
24 |
|||
10 |
25 |
|||
11 |
26 |
|||
12 |
27 |
|||
13 |
28 |
|||
14 |
29 |
|||
15 |
30 |
5. Контрольные вопросы
1. Какие типы данных вы знаете?
2. Что такое блок-схема и как она строится?
3. Какие вы знаете символы (блоки), предназначенные для представления алгоритма в виде блок-схемы?
4. Для чего предназначены циклические конструкции?
5. В каких случаях применяется оператор Case?
6. Какого типа данных "переключатель" в операторе Case?
7. Когда применяется цикл For?
8. Какого типа данных должна быть переменная "счетчик" в операторе For?
9. Чему равен шаг изменения переменной "счетчик" в операторе For?
10. В чем отличия между циклами While и Repeat?
11. Какие стандартные математические функции существуют в языке Pascal?
Список рекомендуемой литературы
1. Немнюгин, С.А. Turbo Pascal: программирование на языке высокого уровня / С.А. Немнюгин. - 2-е изд. - СПб.: Питер, 2006. - 544с.
2. Немнюгин, С.А. Turbo Pascal: практикум / С.А. Немнюгин. - 2-е изд. - СПб.: Питер, 2006. - 272с.
3. Фаронов, В.В. TurboPascal: учебное пособие / В.В. Фаронов. - М.: Изд.: ОМД Групп, 2007. - 368с.
4. Иванова, Г.С. Основы программирования: учебник для вузов / Г.С. Иванова. - 3-е изд., испр. - М.: МГТУ им. Н.Э. Баумана, 2004. - 416с.
5. Марченко, А.И. Программирование в среде Turbo Pascal 7.0. / А.И. Марченко, Л.А. Марченко. - М.: Бином Универсал, К.: ЮНИОР, 1997. - 496с.
6. Культин, Н.Б. Turbo Pascal в задачах и примерах / Н.Б. Культин. - СПб.: БХВ-Петербург, 2007. - 256с.
7. Коффман, Э.М. Turbo Pascal / Э.М. Коффман. - 5-е изд. - М.: Вильямс, 2005. - 896с.
8. Рапаков Г.Г. Программирование на языке Pascal: учебное пособие / Г.Г. Рапаков, С.Ю. Ржеуцкая - СПб.: БХВ-Петербург, 2004. - 480с.
Размещено на Allbest.ru
Подобные документы
История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.
курсовая работа [102,7 K], добавлен 23.12.2011Требования к интерфейсу программного продукта, характеристика операционной системы Windows XP и языка программирования разветвляющихся и циклических процессов Pascal. Структура условного оператора. Описание алгоритма работы с помощью блок-схемы, листинг.
курсовая работа [268,0 K], добавлен 25.12.2010Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.
реферат [64,0 K], добавлен 20.03.2016Изучение циклических операторов: оператора цикла, управляемого счетчиком, оператора цикла с предусловием и постусловием. Минимизированные функции, текст программы. Алгоритм работы приложения по нахождению функции с помощью операторов break и continue.
лабораторная работа [474,2 K], добавлен 23.11.2014Создание приложения, исполняющего трансляцию программы из языка Паскаль в язык Си: разработка алгоритма реализации задачи, описание необходимых констант, переменных, функций и операторов, представление листинга программы и распечатка результатов.
курсовая работа [305,9 K], добавлен 03.07.2011Символьные типы данных, работа со строками, составление блок-схемы алгоритма и программы для работы с массивами. Организация программы с использованием процедур и функций. Процедуры и функции, использующиеся при обработке файлов; компонентные файлы.
контрольная работа [52,9 K], добавлен 03.10.2010Методика разработки, практической апробации программы в среде Turbo Pascal по построению графика прямой линии регрессии. Формирование блок-схемы данной программы, ее листинг. Построение графика с помощью математических формул и графического модуля Graph.
контрольная работа [46,2 K], добавлен 22.07.2011Общие сведения об алгоритмическом языке PASCAL. Схема алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Применение метода простой итерации, метода решения полинома на языке PASCAL.
курсовая работа [41,5 K], добавлен 15.03.2012Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.
задача [163,4 K], добавлен 16.12.2009Разработка алгоритма и написание программы на языке Turbo Pascal. Построение электронных таблиц, отражающих расчеты за услуги фирмы. Вычисление значения функций и построение их графиков в Excel в одной системе координат. Порядок создания Web-страниц.
курсовая работа [1,9 M], добавлен 18.12.2012