Помощь в написании студенческих работ
Антистрессовый сервис

Алгоритмические языки. 
Изучение условных и циклических конструкций

Лабораторная работаПомощь в написанииУзнать стоимостьмоей работы

Для выполнения данной лабораторной работы необходимо описать алгоритм поставленной задачи в виде блок-схемы и написать программу на языке Pascal, которая будет реализовывать табулирование функции для заданной системы уравнений на числовом промежутке с шагом P. Данные должны выводиться в табличной форме, где каждому значению аргумента соответствует подсчитанное значение функции. Задание необходимо… Читать ещё >

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

Алгоритмические языки. Изучение условных и циклических конструкций

Брянск 2007

1. ЦЕЛЬ РАБОТЫ

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

Продолжительность работы — 2,5ч.

2. Теоретическая часть

2.1 Блок-схемы

Блок-схемой — называется графическое представление алгоритма. Блок-схемы должны быть оформлены в соответствии с единой системой программной документации (ЕСПД). ЕСПД является набором государственных стандартов, который определяет, в том числе, и элементы блок-схем. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий и т. п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Любая блок-схема обязательно должна иметь блоки «начало», из которого начинается выполнения алгоритма, и «конец», завершающим выполнение алгоритма. Рассмотрим наиболее часто употребляемые символы (табл. 1).

Таблица 1 Основные символы блок-схем

Название символа

Обозначение и пример заполнения

Пояснение

Процесс

Вычислительное действие или последовательность действий

Решение

Проверка условий

Модификация

Начало цикла (указываются начальное значение, конечное значение, шаг)

Ввод-вывод

Операция ввода-вывода

Пуск-останов

Начало, конец алгоритма

Документ

Вывод результатов на печать

Предопреде-ленный процесс

Вызов подпрограммы

Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет. Блок «модификация» используется для организации циклических конструкций. Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное значение и шаг изменения значения параметра для каждого повторения. Блок «предопределенный процесс» используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам. Пример. Необходимо составить алгоритм решения задачи нахождения значения функции 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 (32 767);

MaxLongInt — содержит максимально возможное значение для типа LongInt (2 147 483 647);

Встроенные функции:

PI: Real — возвращает число ?=3,14 159 265 358;

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 Primer1;

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 Primer2;

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 Primer3;

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 Список заданий

Система уравнений

Система уравнений

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с.

Показать весь текст
Заполнить форму текущей работой