Циклические алгоритмы

Рассмотрение операторов цикла в алгоритмическом языке Turbo Pascal. Способы вывода на экран таблицы значений. Спецификация на программные модули. Ввод и вывод целочисленного массива из десяти элементов. Поиск корня уравнения, блок-схема алгоритма.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 04.06.2015
Размер файла 82,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «МЭИ» в городе Смоленске

Кафедра информатики

Отчет

по лабораторной работе №5

по курсу «Информатика»

Тема: «Циклические алгоритмы»

Группа: ПЭ1-14

Студентка: Осипова А.С.

Преподаватель: Бояринов Ю.Г.

Смоленск 2015

Цель работы: научиться использовать операторы циклов.

Подготовка к работе.

1. Изучить операторы цикла в ТР.

Циклы организуются, чтобы выполнить некоторый оператор или группу операторов определенное число раз. В языке Си три оператора цикла: for, while и do - while. Первый из них формально записывается, в следующем виде:

алгоритм цикл оператор программный

for (выражение_1; выражение_2; выражение_3) тело_цикла

Тело цикла составляет либо один оператор, либо несколько операторов, заключенных в фигурные скобки { ... } (после блока точка с запятой не ставится). В выражениях 1, 2, 3 фигурирует специальная переменная, называемая управляющей. По ее значению устанавливается необходимость повторения цикла или выхода из него.

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

Примеры:

for (i = 1; i < 10; i++)

{ ...

}

for (сh = 'a'; ch != 'p';) scanf ("%c", &ch);

/* Цикл будет выполняться до тех пор, пока с клавиатуры

не будет введен символ 'p' */

Любое из трех выражений в цикле for может отсутствовать, однако точка с запятой должна оставаться. Таким образом, for ( ; ; ) {...} - это бесконечный цикл, из которого можно выйти лишь другими способами.

В языке Си принято следующее правило. Любое выражение с операцией присваивания, заключенное в круглые скобки, имеет значение, равное присваиваемому. Например, выражение (а=7+2) имеет значение 9. После этого можно записать другое выражение, например: ((а=7+2)<10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

((сh = getch( )) == 'i')

позволяет вводить значение переменной сh и давать истинный результат только тогда, когда введенным значением является буква 'i'. В скобках можно записывать и несколько формул, составляющих сложное выражение. Для этих целей используется операция запятая. Формулы будут вычисляться слева направо, и все выражение примет значение последней вычисленной формулы. Например, если имеются две переменные типа char, то выражение

z = (х = у, у = getch( ));

определяет следующие действия: значение переменной у присваивается переменной х; вводится символ с клавиатуры и присваивается переменной у; z получает значение переменной у. Скобки здесь необходимы, поскольку операция запятая имеет более низкий приоритет, чем операция присваивания, записанная после переменной z. Операция запятая находит широкое применение для построения выражений цикла for и позволяет параллельно изменять значения нескольких управляющих переменных.

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

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

while (выражение) тело_цикла

Выражение в скобках может принимать ненулевое (истинное) или нулевое (ложное) значение. Если оно истинно, то выполняется тело цикла и выражение вычисляется снова. Если выражение ложно, то цикл while заканчивается.

Оператор do-while формально записывается следующим образом:

do {тело_цикла} while (выражение);

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

Допускается вложенность одних циклов в другие, т.е. в теле любого цикла могут появляться операторы for, while и do - while.

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

2. Изучить способы вывода на экран таблицы значений.

Одномерные массивы в СИ

Массив - некие упорядоченные данные одного типа. Смысл этой всей упорядоченности состоит в том что доступ к элементам происходит через индекс, т.е через порядковый номер элемента тип_массива имя_массива[размер №1][размер №2]...[размер №N];

Примеры объявления одномерного массива:

int a[2];

double b[20];

Обращение к конкретному элементу одномерного массива в языке СИ осуществляется так: указываем имя массива, а потом в квадратных скобках индекс элемента в этом массиве. в СИ отсчет ведется начиная с нуля, т.е обращение к первому элементу массива будет иметь вид: a[0], а ко второму - a[1] и тд.

На практике наиболее часто используются только:

одномерные массивы (по другому говоря векторы);

двумерные массивы (или же что тоже самое матрицы).

Объявление одномерного массива в си (далее просто массив) имеет следующий синтаксис:

тип_данных имя_массива[размер];

Размер массива - любое положительное, целое число. В стандарте С89 значение должно было указываться сразу при написании кода, т.е быть константой. В стандарте С99 было введено понятие так называемого динамического массива. Динамический массив - массив, при создании которого в качестве размера указывается значение некоторого выражения, в которое входят переменные, объявленные и инициализированные ранее (выражение должно иметь положительный целочисленный результат).

Например:

int n;

printf("Введите размер массива: ”);

scanf("%d”,&n);

double x[n];

При объявлении статических массивов допускается производить инициализацию элементов массива. Синтаксис такого объявления:

тип_массива имя_массива[размер] = {значение №1, ... значение №N};

Примеры:

int a[5] = {1,2,3,4,5}, b[5] = {1,2};

double x[10] = {0.0};

int c[] = {1,2,3,4,5};

char d[] = {'a','b','c'};

int e[5] = {1,2,,4,5}; //Неправильно - ошибка

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

Примеры:

const int array[] = {1,2,3,4,5};

const double vector[5] = {1.0,2.0,3.0};

Каждый отдельный элемент массива может рассматриваться как простая переменная и, соответственно, выступать в выражениях в качестве RValue или LValue значений.

Ввод и вывод одномерных массивов в языке СИ осуществляется поэлементно в цикле. Например, ввод и вывод целочисленного массива из десяти элементов будет иметь вид:

int a[10];

for(int i=0; i<10; i++) scanf("%d”, &a[i]);

...

for(int i=0; i<10; i++) printf("%d\t”, a[i]);

Присвоение массива массиву также осуществляется поэлементно. Например, необходимо присвоить одномерный

вещественный массив x одномерному вещественному массиву y. Фрагмент программы:

double x[15], y[15];

...

for(int i=0; i<15; i++) y[i] = x[i];

...

В СИ во время выполнения программы не производится контроль за допустимыми значениями индексов элементов. Поэтому, если индекс элемента выходит за рамки массива, то в программе возможно появление ошибок. Ошибки могут быть:

простыми (например «случайное» изменение переменных);

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

Например:

int a[10];

for(int i=0; i<=10; i++) a[i] = i;

Ход работы

Техническое задание: вычислить корни уравнения для значений коэффициента В, равных 1,2,3…,N.

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

x1=(-(-B)+pow((-B)^2+2*B,1/2))/2;

x2=(-(-B)-pow((-B)^2+2*B,1/2))/2.

Пусть В=1, затем принимает целые значения до 10.

Блок-схема

Блок-схема алгоритма представлена на рисунке 1.

Рисунок 1

Спецификация на программные модуля. Имя модуля Program1.

1. Имя вызывающего модуля - нет.

2. Выполняемые функции - вычисление

x1=(-(-B)+pow((-B)^2+2*B,1/2))/2;

x2=(-(-B)-pow((-B)^2+2*B,1/2))/2,

при В=1,2,3,…,10.

3. Входные данные x типа float.

4. Выходные данные y типа float.

5. Особенности, ограничения - нет.

Текст программы

#include<conio.h>

#include<stdio.h>

#include<math.h>

main()

{

int B,x1,x2;

clrscr ();

for (B=1;B<=10;B++)

{

x1=(-(-B)+pow((-B)^2+2*B,1/2))/2;

x2=(-(-B)-pow((-B)^2+2*B,1/2))/2;

printf("B=%d x1=%f\n x2=%f\n",B,x1,x2);

}

getch();

return 0;

}

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

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

Заключение: в результате выполнения лабораторной работы научились использовать операторы циклов.

Размещено на Allbest.ru


Подобные документы

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.

    лабораторная работа [123,5 K], добавлен 15.01.2014

  • Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.

    задача [163,4 K], добавлен 16.12.2009

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • Ввод и вывод значений целого, вещественного, логического и перечисляемого типов. Табулирование функции на отрезке с заданным количеством точек. Рекурсивная функция - вычисление суммы, произведения, количества, минимума, максимума и проверка условия.

    курсовая работа [75,6 K], добавлен 07.03.2010

  • Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.

    курсовая работа [896,7 K], добавлен 18.05.2014

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

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

    курсовая работа [565,6 K], добавлен 18.08.2008

  • Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.

    лабораторная работа [62,0 K], добавлен 15.07.2010

  • Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.

    контрольная работа [360,4 K], добавлен 13.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.