Линейные алгоритмы. Условные операторы. Циклы.




Лабораторная работа №1

 

 

Основные определения

 

Понятие алгоритма — одно из основных в программировании и информатике. Алгоритм — это точно определённая вычислительная процедура (последовательность вычислительных шагов), применяя которую к исходным данным, можно получить решение задачи. Для каждого алгоритма есть некоторое множество объектов, допустимых в качестве исходных данных. Например, в алгоритме деления вещественных чисел делимое может быть любым, а делитель не может быть равен нулю. Все имеющиеся алгоритмы можно разделить на три вида:

· линейные алгоритмы;

· алгоритмы ветвления;

· циклические алгоритмы.

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

Запись алгоритма на формальном языке называется программой. Программа обычно представляет собой последовательность инструкций, иначе говоря, операторов. Инструкция или оператор (англ. statement) — одно из ведущих понятий всех языков программирования. Каждый оператор представляет собой законченную фразу языка и определяет этап обработки данных. Одним из базовых операторов является оператор присваивания (в языке С# оператор заканчивается знаком «;»)

Операторы могут состоять из различных выражений, составленных с помощью специальных операций (англ. operators). К примеру, существуют арифметические операции:

+ Сложение
- Вычитание
* Умножение
/ Деление
% Вычисление остатка от деления

 

Программа всегда связана с записью алгоритма на конкретном формальном языке, называемом язык программирования.

Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением. Особая система, по которой различные данные организуются в программе, — это система типов языка программирования.

 

Типы данных

C# — строго типизированныйязык. Это значит, что все операции проверяются компилятором на соответствие типов.Некорректные операции не компилируются. Таким образом, контроль типов способствуетпредотвращению ошибок и повышает надежность программ.

C# содержит две категории встроенных типов данных: типы значений и ссылочныетипы. Ссылочные типы определяются в классах, но о классах речь еще впереди. Ядро языкаC# составляют 13 типов— встроенные типы, которыеопределяются ключевыми словами C# и доступны для использования в любой C#-программе.

Термин «тип значения» применяется к переменным, которые непосредственносодержат значения. (Для сравнения: переменные ссылочных типов содержат ссылки нареальные значения.) Таким образом, типы значений в C# во многом подобны типам данных,определенным в других языках программирования (например, C++). Типы значений такженазывают простыми типами.

 

Тип Разрядность в битах Диапазон
byte   0:255
sbyte   -128:127
short   -32768: 32767
ushort   0: 65535
int   -2147483648: 2147483647
uint   0: 4294967295
long   -9223372036854775808: 9223372036854775807
ulong   0: 18446744073709551615

 

Ссылка на подробную информацию по типам значений приведена в приложении 1.

 

Условные операторы

Помимо изученных в прошлой лабораторной работе арифметических операций (+, -, *, /, %) и операции присваивания (=) существуют также операции сравнения.

Существуют следующие операции сравнения:

== равно

!= не равно

> больше

>= больше или равно

< меньше

<= меньше или равно

Обратите внимание, что для сравнения необходимо использовать операцию «==», а не «=». Приведенные операции выполняют сравнение двух частей выражения и возвращают значение типа boolean, то есть true или false.

Существуют еще логические операции:

&& операция И

|| операция ИЛИ

! операция НЕ

Логические операции позволяют объединять несколько операций сравнения, к примеру, если a = 10 и b = 4, то следующее выражение:

(a>b) && (a!= 10)

вернет false, так как второе условие не выполнено.

Оператор IF

Простейшая форма этого оператора говорит программе выполнять некоторый оператор или блок, только если некоторое условие истинно. Его форма:

 

if (<условие>)

<блок операторов>

или

if (<условие>)

<оператор>

 

< условие > - это выражение, возвращающее результат типа boolean,чаще всего с операциями сравнения и логическими операциями. К примеру, a<5. Или переменная типа boolean.

Оператор SWITCH

Это оператор множественного ветвления. Он переключает выполнение на различные части кода программы, основываясь на значении выражения, и часто обеспечивает лучшую альтернативу, чем длинный ряд операторов if-else-if. Общая форма оператора switch:

switch (<выражение>) {

case <значение_1>:

< последовательность операторов 1>

break;

case<значение_2>:

< последовательность операторов 2>

break;

...

case<значение_n>:

< последовательность операторов n>

break;

default:

< последовательность операторов по умолчанию>

}

 

Оператор switch работает следующим образом. Значение выражения сравнивается с каждым из указанных значений в case-операторах. Если соответствие найдено, то выполняется последовательность операторов, следующая после этого оператора case. Если ни одно из значений не соответствует значению выражения, то выполняется последовательность операторов по умолчанию после default. Однако оператор default не обязателен. Если его нет, и ни одно из значений не совпало, то никаких дальнейших действий не требуется. Оператор break используется внутри switch, чтобы закончить последовательность операторов. Когда встречается break, выполнение программы переходит к первой строке кода, которая следует за закрывающей скобкой оператора switch.

 

Циклы

 

Цикл – это оператор или блок, выполняемый многократно.

 

Цикл WHILE

Этот цикл выполняет набор операторов, пока его условное выражение имеет значение true. Вот его общая форма:

while (<условное выражение>) {

<тело цикла>

}

Тело цикла содержит набор операторов, которые будут выполняться до тех пор, пока условное выражение имеет значение true. Когда <условное выражение> принимает значение false, программа продолжит выполнение со строки, следующей непосредственно после циклом.

Фигурные скобки не нужны, если повторяется одиночный оператор:

while (<условное выражение>)

<оператор>

К примеру, программа, выводящая на экран цифры от 0 до 9:

 

intx = 0; while (x < 10) { Console.WriteLine (x); x++; }  

 

 

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

 

Цикл DO…WHILE

В цикле while, если условное выражение, управляющее циклом, первоначально имеет значение false, то тело цикла не будет выполняться вообще. Однако иногда желательно выполнить тело цикла, по крайней мере, один раз, даже если условное выражение сначала имеет значение false. Другими словами, существуют ситуации, когда вы хотели бы проверить выражение завершения в конце цикла, а не в начале. Цикл do…while делает именно это. Этот цикл выполняет свое тело по крайней мере один раз. Его общая форма:

do {

<тело цикла>

} while (<условное выражение>);

Каждая итерация цикла dowhile сначала выполняет тело цикла, а затем оценивает условное выражение. Если это выражение – true, цикл повторяется. Иначе, цикл заканчивается. Ниже показана переделанная версия программы, выводящая на экран цифры от 0 до 9:

 

int x = 0; do { Console.WriteLine (x); x++; } while (x < 10);  

 

В следующем примере тело цикла выполняется один раз, хотя условие цикла ложно:

 

int a = 10, b = 20; do { Console.WriteLine ("Эта строка выведется один раз"); a = a - 5; } while (a > b);  

Цикл FOR

Более сложный оператор цикла – это for. Цикл for повторяет тело цикла определенное количество раз. Этот цикл также удобен для того чтобы пройти переменной по промежутку значений с каким-либо шагом. Его форма:

for (<инициализация>; <условное выражение>; <приращение>) {

<тело цикла>

}

В начале работы цикла выполняется выражение <инициализация>. В общем случае это выражение устанавливает значение переменной управления циклом, которая действует как счетчик. Выражение инициализации выполняется только один раз. Затем оценивается <условное выражение>. Если это выражение – true, то выполняются операторы в теле цикла, если false, цикл заканчивается. Если операторы в теле цикла выполнились, далее выполняется часть цикла <приращение>. Обычно это выражение, которое увеличивает или уменьшает переменную управления циклом. В каждом проходе цикла – сначала оценивается условное выражение, потом выполняется тело цикла и затем приращение. Этот процесс повторяется до тех пор, пока управляющее выражение не станет false. Ниже приведена версия программы, выводящей цифры, которая использует цикл for:

 

int x; for (x = 0; x < 10; x++) { Console.WriteLine (x); }  

 

В данном примере первым действием оператор цикла for присваивает переменной x значение 10. Далее проводится проверка условия (x<10). Это условие возвращает true, и выполняется тело цикла, то есть в консоль выводится цифра 0. Затем проводится приращение, к значению переменной x прибавляется 1. Теперь x = 1. Снова проводится проверка условия (x< 10). Оно снова истинно, и выполняется вывод в консоль цифры 1. Очередное приращение и так далее. Когда значение x достигает 9, выполняется оператор вывода в консоль, производится приращение – теперь x = 10. Производится проверка условия (x< 10). Оно возвращает false. На этом выполнение цикла заканчивается.

Если в теле цикла только один оператор, то скобки использовать не обязательно.

Часто переменная, которая управляет циклом for, необходима только для целей цикла, и не используется в другом месте. В таком случае, можно объявить переменную внутри выражения <инициализация>. Например:

for (int x = 0; x < 10; x++) Console.WriteLine (x);

 

 


Варианты заданий

Задание 1.1

 

1. Создать программу, вычисляющую площадь круга (S) по формуле

S = piR2; pi=3,14.

 

2. Создать программу, вычисляющую площадь прямоугольника (S) по формуле S = АВ.

 

3. Создать программу, вычисляющую площадь параллелограмма (S) по формуле S = АН.

 

4. Создать программу, вычисляющую площадь треугольника (S) по формуле S = 0,5АН.

 

5. Создать программу, вычисляющую площадь трапеции (S) по формуле

S = 0,5Н(А+В).

 

6. Создать программу, вычисляющую объем треугольной пирамиды (V) по формуле V = 1/3SН.

 

7. Создать программу, вычисляющую объем цилиндра (V) по формуле
V = piR2H; pi=3,14.

 

8. Создать программу, вычисляющую объем шара (V) по формуле

V = 4/3piR3; pi=3,14.

 

9. Создать программу, вычисляющую площадь сферы (S) по формуле

S = 4piR2; pi=3,14.

 

10. Создать программу, вычисляющую длину окружности (L) по формуле

L = 2piR; pi=3,14.

 


Задание 1.2

 

1. P = (M*Z1 + L^2 * Z2)^3; где Z1 = √(M^2 + 2 * L);

F = L - Z1^2 - M^2 * Z2; Z2 = L - M^3.

-----------------------------------------------------------------------------------------

2. Z = (M / P - L1 * P) / M * L1; где P = M^2 + L1^2 - L2^2;

Y = (L2 * P^2 * M) / P;

-----------------------------------------------------------------------------------------

3. F = (L - Z1 - Z2) * 3.5; где L = √(Z1 + Z2);

P = (Z1 * Z2 + L * M) / Z1^2; M = Z1 - Z2.

-----------------------------------------------------------------------------------------

4. Y = (B*X1 - C^2*X2) / 2; где X1 = B + √(B^2 - 4*B*C);

Z = (M*X2^2 + L*X1) / B; X2 = M * B /2*C.

-----------------------------------------------------------------------------------------

5. Z = (A + 1) * 3 - B^2 * (X1 + 2)^2; где X1 = 3.5 * A * B

Y = (B + 1) * 8 - A * (X2 - X1); X2 = 15.36 - A * B.

-----------------------------------------------------------------------------------------

6. Y = (Y1 - Y2) / X; где X = √(Y1^2 + Z1^2 + P1^2).

Z = (Z1 + Z2) / X;

P = P1 * P2 / X;

-----------------------------------------------------------------------------------------

7. A = (R + B + L) / (Z1 ^2 + Z2); где Z1 = B * cos(L^2);

Z2 = sin(L) / B.

-----------------------------------------------------------------------------------------

8. Z = (Z1 - M * Z2) * (M + 1); где M = ln(M1) * tn(M2).

Y = (Y1 + M * Y2) * (M + 1);

-----------------------------------------------------------------------------------------

9. X1 = Z1 / P; где P = (Z1^2 + Z2^2) / Z1 * Z2

X2 = Z2 / P;

X3 = Z3 / P;

-----------------------------------------------------------------------------------------

10. X = (M * X1 - L * X2) / M; где X1 = M - √(M^2 - 4*M*L);

Z = (M * X1 * X2 + L) / L; X2 = M + √(M^2 - 4*M*L).

-----------------------------------------------------------------------------------------


 

 

Задание 2.1

 

1) | 1.7 * X, если X < 3.5;

Y = | -36, X = 3.5;

| 100 * X, X> 3.5.

 

---------------------------------------------------------------

 

2) | Z^2, если Z ≤ -3;

Q = | Z^3, Z> 3;

| Z-4, Z = -3.

 

---------------------------------------------------------------

 

3) | L^2 - 17.7, если L > 5;

P = | L^ 3, 2 <L ≤ 5;

| L / 7.77, L ≤ 2.

 

---------------------------------------------------------------

 

4) | Q, если Q< -2;

| Q^2, -2 ≤ Q ≤ 2;

R = | Q^3, 2 ≤ Q ≤ 5;

| Q^4, Q> 5.

 

---------------------------------------------------------------

 

5) | M, если M<A;

N = | M * √(M^2 + 3), M = A;

| 4 - M, M > A.

 

---------------------------------------------------------------

 

6) | 1 - X, если X < C;

Y = | 1, X = C;

| X + 1, X > C.

 

---------------------------------------------------------------

 

7) | 101 * Y, если Y < 20.5;

Z = | 0, Y = 20.5;

| Y - 101, Y > 20.5.

 

---------------------------------------------------------------

 

8) | 8 - Z^2, если Z ≤ -2;

Y = | Z^ 2, -2 < Z < 2;

| Z^2 - 8, Z ≥ 2.

 

---------------------------------------------------------------

 

9) | 0, если Y < 0.5;

| 1, 0.5 ≤ Y < 1.5;

X = | 2, 1.5 ≤ Y < 2.5;

| 3, 2.5 ≤ Y < 3.5;

| 4, Y ≥ 3.5.

---------------------------------------------------------------

 

10) | X - 2 * X^2, если X = Q;

Z = | 2 * X - X^2, X < Q;

| X^3, X > Q.

 

---------------------------------------------------------------

 

11) | N^2 / 3.6, если N > N1;

R = | N^3 * 3.6, N < N2;

| N, N2 ≤ N ≤ N1.

---------------------------------------------------------------

 

12) | X - 1, если X < 3.5;

Z = | 0, X = 3.5;

| X + 1, X > 3.5.

 

---------------------------------------------------------------

 

13) | Z^2 - 43.6, если Z < A1;

Q = | Z^3, A1 ≤ Z ≤ A2;

| Z / 43.5, Z > A2.

---------------------------------------------------------------

 

14) | Y^2 - 1, если Y ≤ -3;

Z = | 1, -3 < Y < 3;

| 1 - Y^2, Y ≥ 3.

---------------------------------------------------------------

 

15) | 0, если X ≤ 1;

| 1, 1 < X < 1.5;

Y = | 2, 1.5 ≤ X< 2.5;

| 3, 2.5 ≤ X < 3.5;

при X ≥ 3.5 напечатать " Y не определен! ".

 

---------------------------------------------------------------

 

16) | A - Z^2, если A1 ≤ Z ≤ A2;

Q = | Z - A^2, Z > A2;

| Z * A, Z ≤ A1.

---------------------------------------------------------------

 

17) | Y + 5, если Y > 5;

R = | 5 - Y, Y = 5;

| Y^2, Y < 5.

---------------------------------------------------------------

 

 

18) | X - 2 * X^2, если X < B;

Y = | 2 * X^2 - X, X > B;

| 8, X = B.

 

---------------------------------------------------------------

 

19) | 17.8 * X^2, если X < 1.036;

Z = | 100, X = 1.036;

| X - 17.8, X > 1.036.

 

---------------------------------------------------------------

 

20) | X^2, если X ≤ -5;

Y = | 0, -5 <X< 5;

| X-1, X> 5.


 

Задание 2.2

 

1) Найти наименьшее из трех заданных чисел.

-----------------------------------------------------------------------

2) Определить, попадает ли данное число в какой-либо из двух заданных числовых интервалов.

---------------------------------------------------------------------

3) Определить, пересекаются ли два интервала с заданными границами и, если пересекаются, вывести результат - границы интервала пересечения, если нет - соответствующее сообщение.

-----------------------------------------------------------------------

4) Определить, попадает ли точка с координатами X, Y в прямоугольник с заданными координатами двух вершин.

------- ---------------------------------------------------------------

5) Найти наибольшее из трех заданных чисел

------------------------------------------------------------------------

6) Даны два действительных числа. Заменить первое число нулем, если оно меньше второго, заменить второе число нулем, если первое число больше второго, либо заменить оба числа нулями в случае их равенства.

------------------------------------------------------------------------

7) Дан интервал и три действительных числа. Выбрать из них те, которые принадлежат заданному интервалу.

---------------------------------------------------------------------

8) Даны два действительных числа. Меньшее из этих двух чисел заменить их произведением, а большее - полусуммой. В случае равенства чисел вывести на экран соответствующее сообщение.

------------------------------------------------------------------------

9) Даны три числа. Вывести их на экран в порядке возрастания.

-----------------------------------------------------------------------

10) Даны три числа. Вывести их на экран в порядке убывания.

---------------------------------------------------------------------------


 

Задание3.1 (цикл for)

 

-------------------------------------------------------------------

1) z = 15,28y+cos(y+S^2)- √y-x

а) x изменяется от 0.5 до 0.77 с шагом 0.01

S,y-произвольно;

 

б) x изменяется от 0.5 до 0.77 с шагом 0.01

y=11;12;13;14; S-произвольно;

-------------------------------------------------------------------

2) P = (tn(Z1 * Z2) + M * sin(M)) / Z1^2;

а) z2 изменяется от 0,1 до 10 с шагом 0,5; z1,M-произвольно

 

б) z2 изменяется от 0,1 до 10 с шагом 0,5

M изменяется от 1 до 5 с шагом 1; z1-произвольно;

--------------------------------------------------------------------

3) X1 = (|C1| + √(C1^2 - 4*C1*C)) /2*|C|;

a) C1 изменяется от -3 до 5 с шагом 1; С-произвольно

 

б) C1 изменяется от -3 до 5 с шагом 1;

С изменяется от -3 до 5 с шагом 2

-------------------------------------------------------------------

4) Z = (F + 1) * 3 - B^2 * (X1 + 2)^2;

a) F изменяется от 5 до -3 с шагом 0,1; x1,B-произвольно

 

б) F изменяется от 5 до -3 с шагом 0,1

B изменяется от 5 до -3 с шагом -1; x1-произвольно

---------------------------------------------------------------------

5) X = √(Y1^2 + Z1^2 + P1^2)/tn(Z1)

a) y1,P1- задаются произвольно

z1 изменяется от -3 до -5 с шагом -1

 

б) y1- произвольно

z1 изменяется от -3 до -5 с шагом -1

p1 изменяется от -3 до 5 с шагом 0.1

------------------------------------------------------------------

6) H = (sinR + sinB + sinL) / (R ^2 + √R-L+B);

a) R изменяется от 0.5 до -0.77 с шагом -0.01;

L,B- произвольно

 

б) R изменяется от 0.5 до -0.77 с шагом -0.01

B=1;2;3;4;5; L- произвольно

--------------------------------------------------------------------

7) P =(Z1^2 + Z2^2) / Z1 * Z2

a) Z2 изменяется от 0.5 до 0.7 с шагом 0.01; Z1-произвольно;

 

б) Z1 изменяется от 5 до 7 с шагом 1

Z2 изменяется от 0.5 до 0.7 с шагом 0.01

---------------------------------------------------------------------

 

8) X1 = tnM - √(M^2 - 4*M*L);

a) L изменяется от 5 до -7 с шагом -1; M-произвольно

 

б) M изменяется от 1 до 7 с шагом 2

L изменяется от 5 до -7 с шагом -1

------------------------------------------------------------------

9) R = K1 * Z1^2 - B * Z2 / (K - Z3);

a) В изменяется от 10 до 1 с шагом -1

z1,z2,z3,k,K1-произвольно

 

б) K1 изменяется от 1 до 10 с шагом 1

В изменяется от 10 до 1 с шагом -1

z1,z2,z3,k- произвольно

---------------------------------------------------------------------

10) Z = (A + B) * X1 + B^2 * X2;

a) x1 изменяется от 5 до 1 с шагом -0.2

А,B,X2-произвольно

 

б) x1 изменяется от 5 до 1 с шагом -0.2

x2 изменяется от 5 до 1 с шагом -1

А,B-произвольно

---------------------------------------------------------------------

Задание 3.2 (цикл while)

 

1) X = (X1 + N * X2) / (1 + N);

x1 изменяется от 0.9 до 0.1 с шагом -0.1

X2,N-произвольно

--------------------------------------------------------------------

2) L = (X2 + K + B)^2 - B^3;

K изменяется от 1 до 10 с шагом 1

B,X2-произвольно

-----------------------------------------------------------------------

3) X1 = B * C - √(B^2 - 4*B*C);

C изменяется от 9 до 1 с шагом 1; B-произвольно

---------------------------------------------------------------------

4) F = (L - Z1 - M - Z2) / L * M;

z2 изменяется от 10 до 5 с шагом -1

m,L,Z1-произвольно

----------------------------------------------------------------------

5) P = (M * Z1 - L * Z2) / 5.85;

L изменяется от 0.1 до 1 с шагом 0.2

z1,z2-произвольно

---------------------------------------------------------------------

6) Z2 = (X1 - X2^3) / √(X1 + X2);

x1 изменяетсяот 10 до -10 с шагом 0.51; X2-произвольно

--------------------------------------------------------------------

7) B = (X1 / X - P * X2) * X √(X1 - X2);

X изменяется от 2 до 6 с шагом 1; X1,X2,P-произвольно

----------------------------------------------------------------------

8) P = (L - √(M^2 - 4*M*L)) / L;

L изменяется от 0.1 до 1 с шагом 0.3; M-произвольно

----------------------------------------------------------------------

9) Z = (Z1 / M - Z2 * P) / Z1;

M изменяется от 2 до -6 с шагом -1; z1,z2,P-произвольно

 

z1,z2-произвольные

-------------------------------------------------------------------

10) X = (X1 + P * X2) / (1 + V);

V изменяется от -2 до -8 с шагом -1;

P,X1,X2-произвольные

 


 

Приложение 1

Справочные материалы

 

Операторы

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/

 

Типы значений

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/value-types

 

Типы и переменные

https://docs.microsoft.com/ru-ru/dotnet/csharp/tour-of-csharp/types-and-variables

 

Класс Math

https://msdn.microsoft.com/ru-ru/library/system.math%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

 

Условные операторы (if)

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/if-else

 

Условные операторы (switch)

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/switch

 

Циклы (do)

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/do

 

Циклы (for)

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/for

 

Циклы (foreach)

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/foreach-in

 

Циклы (while)

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/while

 

Создание приложения Hello World на C# с помощью.NET Core в Visual Studio 2017

https://docs.microsoft.com/ru-ru/dotnet/core/tutorials/with-visual-studio

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: