
Основные структуры алгоритмов
Последовательная
S1
S2
…
Sn
Р азветвляющаяся
Условие ?
Условие ?
-
S2
+
S1
Условный оператор if позволяет выбрать одну из двух ветвей вычислительного процесса
Общий вид оператора
if (выражение)
{
Операторы 1;
}
else
{
Операторы 2;
}
Выражение в скобках после if является логическим выражением, значением которого является одно из двух логических значений true (истина) или false (ложь). В первом случае выполняются Операторы1, во втором – Операторы2. Вторая ветвь (Операторы2) может отсутствовать. Об этом говорит наличие квадратных скобок в определении оператора. (То, что заключено в квадратные скобки, не является обязательным.) После выполнения какой-либо одной из ветвей условный оператор считается выполненным. Наличие фигурных скобок не является обязательным, если какая-либо ветвь содержит один оператор, в котором нет объявления переменных. Однако, рекомендуется фигурные скобки использовать всегда, что делает структуру программы более наглядной.
Циклическая
Циклом называется многократно повторяющаяся последовательность действий (операторов). Цикл – типичная структура, характерная для программ, реализуемых на компьютере.
А) Оператор цикла по счетчику
i = in
S
i = i + ih
+
i ≤ ik ?
-
Оператор цикла for предназначен для выполнения одного оператора или группы (блока) операторов заданное количество раз.
Общий вид оператора for
for(инициализация; условие; приращение)
{
Операторы;
}
Если в цикле выполняется один оператор, то фигурные скобки необязательны. Однако их рекомендуется использовать и в этом случае для повышения наглядности.
Оператор for выполняется следующим образом: переменной цикла i присваивается начальное значение 1. Проверяется условие. Если оно имеет значение true, то выполняются операторы в цикле. Затем i увеличивается на 1 и снова проверяется условие, И так до тех пока условие получает значение false и происходит выход из цикла. Заметим, что первая проверка условия производится перед первым выполнением оператора (операторов), расположенных после for и таким образом возможна ситуация, когда этот оператор (операторы) не будет выполнен ни разу. Цикл for относится к циклам с предусловием.
Все параметры оператора for являются необязательными (при определении оператора каждый параметр заключен в квадратные скобки) и, следовательно, могут отсутствовать либо по отдельности, либо все вместе. При этом организация цикла (в той или иной мере) возлагается на программиста.
Б) Цикл по условию
Начальное значение
параметра цикла
Условие выпол-нения
цикла
Цикл закончен
Операторы цикла
Изменение параметра
цикла
Оператор while реализует цикл по условию с проверкой условия до первого прохождения цикла (цикл с предусловием). В отличии от цикла for количество проходов цикла while неизвестно до начала выполнения цикла.
Общий вид цикла
while (условие)
{
Операторы
}
Операторы выполняются пока условие имеет значение true.
Операторы цикла do-while реализуют цикл по условию с проверкой условия после первого прохождения цикла (цикл с постусловием). Общий вид цикла
do
{
Операторы
}
while (условие);
Операторы выполняются до тех пор пока условие имеет значение true.
Последовательная структура
Задача № 1
Тормозной путь S автомобиля массой m, движущегося по горизонтальной дороге, вычисляется по формуле:
где F - горизонтальная сила торможения,
t - время торможения.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
double m,t,F,S;
Console.WriteLine(“Введите массу автомобиля”);
m=double.Parse(Console.ReadLine());
Console.WriteLine(“Введите время торможения”);
t=double.Parse(Console.ReadLine());
Console.WriteLine(“Введите силу торможения”);
F=double.Parse(Console.ReadLine());
S=F*t*t/(2*m);
Console.WriteLine(“Время Тормозной путь”);
Console.WriteLine(“{0:f6} {1:f6}”, t, S);
Console.ReadKey();
}
}
}
Задача № 2
Будущая стоимость Fv за n периодов вычисляется по формуле:
где CF - величина потока платежей в текущем периоде,
r - процентная ставка.
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main()
{
int n;
double CF,r,Fv;
Console.WriteLine(“Введите период”);
n=int.Parse(Console.ReadLine());
Console.WriteLine(“Введите поток платежей”);
CF=double.Parse(Console.ReadLine());
Console.WriteLine(“Введите процентную ставку”);
r=double.Parse(Console.ReadLine());
Fv=СF*(Math.Pow(1+r,n)-1)/r;
Console.WriteLine(“Процентная ставка Будущая стоимость”);
Console.WriteLine(“{0:f6} {1:f6}”, r, Fv);
Console.ReadKey();
}
}
}