Теоретическая часть. Таблиця 4.1 – Вихідні данні № вар Напруга джерела живлення , кВ Тип трансформатора Лінія електропередач Режим навантаження
Таблиця 4.1 – Вихідні данні
Лабораторная работа №4 “Программирование циклических вычислительных процессов”
Цель работы: освоение методов составления алгоритмов циклических вычислительных процессов и организации циклических программ сложной структуры. Теоретическая часть 1.1. Циклические алгоритмы.
Цикл – это последовательность действий, которая может выполняться более одного раза. Циклический алгоритм – это алгоритм, содержащий один или несколько циклов. Имеется 3 вида циклов: - цикл с предусловием; - цикл с постусловием; - цикл со счетчиком (счетный цикл). Если выполнение цикла связано с каким-либо логическим условием, то используются циклы с предусловием или с постусловием. Циклы со счетчиком представляют такой класс, в котором выполнение тела цикла должно повторяться заранее определенное число раз. Блок-схемы циклических алгоритмов выглядят следующим образом: 1. Цикл со счетчиком. 2. Цикл с предусловием. 3. Цикл с постусловием. 1.2 Операторы цикла в языке программирования C++.
В C++ для каждого вида цикла имеется соответствующий оператор: - цикл типа while (с предусловием); - цикл типа do…while (с постусловием); - цикл типа for (счетный).
1.Оператор цикла типа while Форма записи: while (условие) оператор; где: (условие) – логическое выражение; оператор – выполняемый в цикле оператор или тело цикла. Если тело цикла представляет собой составной оператор, то его нужно заключить в операторные скобки{...}: while (условие) { группа операторов } Схема работы такого цикла: пока условие является истинным (true), выполняется тело цикла и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу. 2. Оператор цикла типа do…while Форма записи: do оператор; while (условие); Схема работы такого цикла: сначала выполняется оператор, потом проверяется условие, если условие является истинным, выполняется оператор и снова проверяется условие и т.д. Когда условие станет ложным, цикл завершает работу. Если тело цикла представляет собой составной оператор, то, как и для цикла с предусловием, его нужно заключить в операторные скобки{...}: do { группа операторов } while (условие); 3. Оператор цикла типа for Форма записи: for (A;B;C) оператор; A – начальное выражение, которое задает начальные значения параметру цикла и при необходимости начальные значения другим параметрам. Например: i=0, x=0.5, p=1, s=0 B – условное выражение, которое проверяет условие продолжения работы цикла. Например: x<=5 C – выражение приращения, которое задает приращение параметру цикла и при необходимости другим параметров, тогда они записываются списком. Например: x+=0.1, i++ 1.3 Пример составления алгоритма и программы на языке C++ для циклического вычислительного процесса. Задание: Вычислить значение выражения: b – исходная величина, ее значение вводятся с клавиатуры и не изменяется; a – изменяется в диапазоне [0;10] с шагом 1; y – результат, его значения выводятся на экран. Решение. Исходя из условия задания переменная a является целочисленной, поэтому может быть использована в качестве счетчика в счетном цикле. 1.3.1 Блок-схема алгоритма решения данной задачи с использованием счетного цикла выглядит следующим образом: Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом: #include <conio.h> #include <math.h> #include <stdio.h> int main() { int a; float b,y; clrscr(); printf(“Введите b: “); scanf(“%f”,&b); printf(“ a y\n”); for (a=0;a<=10;a++) { printf(“%3d”,a); if (a>b) { y=1.2*a+3*b; printf(“%8.2f\n”,y); } else { if (a>0) { y=(a-b)/sqrt(a); printf(“%8.2f\n”,y); } else printf(“ y не существует\n”); } } getch(); return 0; }
1.3.2 Блок-схема алгоритма решения данной задачи с использованием цикла с предусловием выглядит следующим образом: Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом: #include <conio.h> #include <math.h> #include <stdio.h> int main() { int a; float b,y; clrscr(); printf(“Введите b: “); scanf(“%f”,&b); a = 0; printf(“ a y\n”); while(a<=10) { printf(“%3d”,a); if (a>b) { y=1.2*a+3*b; printf(“%8.2f\n”,y); } else { if (a>0) { y=(a-b)/sqrt(a); printf(“%8.2f\n”,y); } else printf(“ y не существует\n”); } a=a+1; } getch(); return 0; }
1.3.3 Блок-схема алгоритма решения данной задачи с использованием цикла с постусловием выглядит следующим образом:
Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом: #include <conio.h> #include <math.h> #include <stdio.h> int main() { int a; float b,y; clrscr(); printf(“Введите b: “); scanf(“%f”,&b); a = 0; printf(“ a y\n”); do { printf(“%3d”,a); if (a>b) { y=1.2*a+3*b; printf(“%8.2f\n”,y); } else { if (a>0) { y=(a-b)/sqrt(a); printf(“%8.2f\n”,y); } else printf(“ y не существует\n”); } a=a+1; } while(a<=10); getch(); return 0; }
|