1112975
столько раз учителя, ученики и родители
посетили сайт «Инфоурок»
за прошедшие 24 часа
+Добавить материал
и получить бесплатное
свидетельство о публикации
в СМИ №ФС77-60625 от 20.01.2015
Дистанционные курсы профессиональной переподготовки и повышения квалификации для педагогов

Дистанционные курсы для педагогов - курсы профессиональной переподготовки от 1.410 руб.;
- курсы повышения квалификации от 430 руб.
Московские документы для аттестации

ВЫБРАТЬ КУРС СО СКИДКОЙ ДО 90%

ВНИМАНИЕ: Скидка действует ТОЛЬКО до конца апреля!

(Лицензия на осуществление образовательной деятельности №038767 выдана ООО "Столичный учебный центр", г.Москва)

ИнфоурокИнформатикаТестыРазветвляющие алгоритмы. Запись условий. Условный оператор. Разбор решения задач.

Разветвляющие алгоритмы. Запись условий. Условный оператор. Разбор решения задач.

библиотека
материалов
Скачать материал целиком можно бесплатно по ссылке внизу страницы.

Занятие 3-5. Разветвляющие алгоритмы


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

Порядок операций в порядке их приоритета

  1. not (не)

  2. *,/, div,mod, and (и)

  3. +, - , or (или), xor (исключающее или)

  4. = (равно), < (меньше), > (больше),>= (больше или равно),<= (меньше или равно),<> (не равно)

Логические связки



(Условие 1)

(Условие 2)

(условие 1) AND

(условие 2)

(условие 1)

OR

(условие 2)

(условие 1)

XOR

(условие 2)

AND – И (ЛОГИЧЕСКОЕ УМНОЖЕНИЕ)

OR – ИЛИ (ЛОГИЧЕСКОЕ СЛОЖЕНИЕ)


XOR – ЛИБО , ЛИБО

(ИСКЛЮЧАЮЩЕЕ ИЛИ)

False

False

False

False


False

False

True

False

True

True


True

False

False

True

True


True

True

True


True

false


False – ложь

True - истина


Условие

Not(условие)


False

True


True

False


Запись логических выражений

Логические выражения бывают простые и составные.

Примеры простых логических выражений:

А<=10

B<>30

C=12

S>’Александр’

Пример составных логических выражений:

  1. проверка истинности 2 логических выражений а кратно 5 и b не кратно 3

(a mod 5=0) and (b mod 3 <>0)

Условие

Запись логического выражения в Паскаль

5<=x<=20

(x>=5) and (x<=20)

x>10 или x<=-3

(x>10) or (x<=-3)

X четное

(остаток от деления на 2 должен =0)

X mod 2=0

X нечетное

(остаток от деления на 2 не должен =0)

X mod 2<>0

X кратно 5

(остаток от деления на 5 должен =0)

X mоd 5=0

X не кратно 5

(остаток от деления на 2 не должен =0)

X mоd 5<>0

x положительное

x>0

X отрицательное

X<0

X не положетельное

  1. (X<=0)

  2. Not(x>0)


X не отрицательное

  1. (X>=0)

  2. Not(x<0)

Задание

Записать условие, которое является истинным, когда:

а) каждое из чисел А и В больше 100;

(A>100) and (B>100)


б) только одно из чисел А и В четное;

(a mod 2=0) and (b mod 2<>0) or (a mod 2<>0) and (b mod 2=0)

ИЛИ 2 ВАРИАНТ ЗАПИСИ

(a mod 2=0) xor (b mod 2=0)


в) хотя бы одно из чисел А и В положительно;

(a>0) or (b>0)


г) каждое из чисел А, В, С кратно трем;

(a mod 3=0) and (b mod 3=0) and (c mod 3=0)


д) только одно из чисел А, В и С меньше 50;

((a<50) and (not(b<50)) and (not(c<50))) or ((b<50) and (not(a<50)) and (not(c<50))) or ((c<50) and (not(a<50)) and (not(b<50)) )

ИЛИ 2 ВАРИАНТ ЗАПИСИ

(a<50) xor (b<50) xor (c<50)


е) хотя бы одно из чисел А, В, С отрицательно.

(A<0) or (B<0) or (C<0)


Логическая переменная

Логическая переменная – тип Boolean, принимает значение true или false.

True – истина

false – ложь.

Например:

Var a,b:integer;

B:Boolean;

Begin


A:=5;

C:=10;

B:=(a>10) or (c>=-3) ; { b – логическая переменная, примет значение true}

.

End.

В Паскале можно реализовать разветвляющие алгоритмы используя 2 оператора:

1)Условный оператор IF

А) Неполное ветвление – If then (если тогда)

Б) Полное ветвление – if then else (если тогда иначе)

2) Оператор выбора Case

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

a)Неполное ветвление

If Условие then begin

Блок команд 1 (через ;)

End;

Условие после if может быть простым или составным (см. выше).

Работа оператора:

Если условие истинно (да) выполняется блок команд 1 и осуществляется переход к командам после оператора if then, в противном случае если условие не выполняется блок команд 1 не выполняется.

Примечание:

После then блок команд 1 обязательно заключается в операторные скобки begin end если в этот блок включается >=2 команд, если между begin и еnd находится только одна инструкция, то слова begin и end можно не писать.

If – если, Then – то.

Б) Полное ветвление

If Условие then begin

Блок команд 1 (через ;)

End

Else begin

Блок команд 2 (через ;)

End;

Работа оператора:

Если условие истинно (да) выполняется блок команд 1 (Блок команд 2 – не выполняется) и осуществляется переход к оператору после оператора if then else, в противном случае если условие не выполняется (Ложно) осуществляется переход к выполнению блока команд 2 (Блок команд 1 не выполняется) , после выполнение которого осуществляется переход к оператору после оператора if then else.

Примечание:

Перед Else точка с запятой не ставится (грубая ошибка).

Если между begin и еnd находится только одна инструкция, то слова begin и end можно не писать.

If – если, Then – то, Else – иначе.

Решение задач разветвляющей структуры


Задача № 1. Даны два числа a,b. Если a больше b, то a увеличить в два раза, b уменьшить на 100.


Решение ввод исходных данных с клавиатуры и вывод на экран

Program vet1;

var a,b:real;

begin

write(‘введите значения 2-х переменных a и b’);

readln(a,b);

If a>b then begin

a:=a*2;

b:=b-100;

end;

writeln('a=',a:0:2,'b=':3,b:0:2);

readln;

end.


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

Program vet1;

var a,b:real;t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,a,b);

If a>b then begin

a:=a*2;

b:=b-100;

end;

writeln(t2,'a=',a:0:2,'b=':3,b:0:2);

close(t1); close(t2);

end.

Задача №2. Даны a,b. Необходимо осуществить обмен значениями a и b, если a не равно b.




A,b,h – должны быть одного типа: или все real; или все integer; или все char; или все string; или все Boolean.

Решение ввод исходных данных с клавиатуры и вывод на экран

Program vet1;

var a,b:real;

h:real; {вспомог. Переменная для обмена}

begin

write(‘введите значения 2-х переменных a и b’);

readln(a,b);

If a<>b then begin

h:=a;

a:=b;

b:=h;

еnd;

writeln('a=',a:0:2,'b=':3,b:0:2);

readln;

end.


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

Program vet1;

var a,b:real;t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,a,b);

If a<>b then begin

h:=a;

a:=b;

b:=h;

еnd;

writeln(t2,'a=',a:0:2,'b=':3,b:0:2);


close(t1); close(t2);

end.


Задача № 3.Даны три числа x,y,z. Найти максимальное число.

1 способ

Решение ввод исходных данных с клавиатуры и вывод на экран

Program vet2a;

var x,y,z,max:real;

begin

readln(x,y,z);

max:=x; {предположение}

if max

if max

writeln('максимальное число из трех чисел=',max:10:2);

readln

end.

Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

Program vet2a;

var x,y,z,max:real; t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,x,y,z);

max:=x; {предположение}

if max

if max

writeln(t2,'максимальное число из трех чисел=',max:10:2);

close(t1); close(t2);

end.


2 способ решения (полное ветвление, в котором ветка else содержит еще одно полное ветвление

Решение ввод исходных данных с клавиатуры и вывод на экран

Program vet_2_b;

var x,y,z:real;

begin

readln(x,y,z);

if (x>y) and (x>z) then

writeln('максим.число -',x:10:2)

else

if y>z then

writeln('максимальное число-',y:10:2)

else


writeln('максимальное число-',z:10:2);

readln;

end.


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)


Program vet_2_b;

var x,y,z:real; t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,x,y,z);

if (x>y) and (x>z) then writeln(t2,'максим.число -',x:10:2)

else if y>z then writeln(t2,'максимальное число-',y:10:2)

else writeln(t2,'максимальное число-',z:10:2);

close(t1); close(t2);

end.


Задача № 4. Полное ветвление (множественный выбор). Заданы вес в килограммах и граммах. Сравнить веса.

Решение ввод исходных данных с клавиатуры и вывод на экран

Program vet3;

var k,gr:real; {вес в килограммах и граммах}

k2:real;{вес в гр. пересчитанный в кг}

begin

readln(k,gr);

k2:=gr/1000;

If k>k2 then writeln('вес в килограммах(',k:0:2,')>веса в граммах (',k2:0:2,')')

else

if k<k2 then

writeln('вес в килограммах(',k:0:2,')<веса в граммах (',k2:0:2,')')

else writeln('вес в килограммах(',k:0:2,')=весу в граммах (',k2:0:2,')');

readln;

end.


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)


Program vet3;

var k,gr:real; {вес в килограммах и граммах}

k2:real;{вес в гр. пересчитанный в кг}

t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,k,gr);

k2:=gr/1000;

If k>k2 then writeln(t2,'вес в килограммах(',k:0:2,')>веса в граммах (',k2:0:2,')')

else

if k<k2 then

writeln(t2,'вес в килограммах(',k:0:2,')<веса в граммах (',k2:0:2,')')

else writeln(t2,'вес в килограммах(',k:0:2,')=весу в граммах (',k2:0:2,')');

close(t1); close(t2);

end.


Задача № 5. Для заданного действительного числа X вычислить значение f(x)=y, если

hello_html_14a84c4f.gif


1 способ решения ( полное ветвление, ветка else содержит еще полное ветвление

Решение ввод исходных данных с клавиатуры и вывод на экран

program vet_4_a;

var x,y:real;

begin

write(‘введите x’);

readln(x);

if (x>1) then y:=sqrt(x)+10

else

if (x>=-1) and (x<=1) then y:=10

else y:=x-1;

writeln(‘y=',y:0:2);

readln;

end.

Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

program vet_4_a;

var x,y:real;t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t1,’output.txt’); rewrite(t2);

readln(t1,x);

if (x>1) then y:=sqrt(x)+10

else

if (x>=-1) and (x<=1) then y:=10

else y:=x-1;

writeln(t2,'y=',y:0:2);

close(t1); close(t2);

end.

2 способ решения (3 последовательных оператора if then)

Решение ввод исходных данных с клавиатуры и вывод на экран

program vet_4_b;

var x,y:real; t1,t2:text;

begin

write(‘введите x’);

readln(x);

if (x>1) then y:=sqrt(x)+10;

if (x>=-1) and (x<=1) then y:=10;

if (x<-1) then y:=x-1;

writeln('y=',y:0:2);

readln;

end.


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

program vet_4_b;

var x,y:real; t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(x);

if (x>1) then y:=sqrt(x)+10;

if (x>=-1) and (x<=1) then y:=10;

if (x<-1) then y:=x-1;

writeln('y=',y:0:2);

close(t1); close(t2);

end.


Задача № 6. Дан треугольник ABC с координатами A(Ax,Ay), B(Bx,By),C(Cx,Cy), где числа Ax, Ay, Bx, By, Cx, Cy – целые. Составьте алгоритм, определяющий, является ли треугольник равнобедренным.

Решение ввод исходных данных с клавиатуры и вывод на экран

program vet_4;

var ax,ay,bx,by,cx,cy:real;

ab2, bc2,ac2:real;


begin

write(‘введите координаты точки A’);

readln(ax,ay);

write(‘введите координаты точки В’);

readln(bx,by);

write(‘введите координаты точки C’);

readln(cx,cy);

ab2:=sqr(ax-bx)+sqr(ay-by); {сторона ab квадрате}

bc2:=sqr(bx-cx)+sqr(by-cy); {сторона вс в квадрате}

ac2:=sqr(ax-cx)+sqr(ay-cy); {сторона aс в квадрате}


if (ab2=bc2) or (bc2=ac2) or (ab2=ac2) then

writeln('равнобедренный')

else writeln('не равнобедренный');

readln;

end.


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

program vet_4;

var ax,ay,bx,by,cx,cy:real;

ab2, bc2,ac2:real; t1,t2:text;


begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,ax,ay);

readln(t1,bx,by);

readln(t1,cx,cy);

ab2:=sqr(ax-bx)+sqr(ay-by); {сторона ab квадрате}

bc2:=sqr(bx-cx)+sqr(by-cy); {сторона вс в квадрате}

ac2:=sqr(ax-cx)+sqr(ay-cy); {сторона aс в квадрате}


if (ab2=bc2) or (bc2=ac2) or (ab2=ac2) then writeln(t2,'равнобедренный')

else writeln(t2,'не равнобедренный');

close(t1); close(t2);

end.


Комментарии к программе:

Необходимо последовательно ввести координаты каждой точки. Вычислить квадраты расстояний между соседними точками (ab2, bc2, ac2). Сравнить между собой найденные квадраты расстояний, если совпадут между собой хотя бы два, то треугольник окажется равнобедренным, в противном случае – не равнобедренный.


Задача № 7. Для пошива одного пальто требуется 3 метра драпа, 4 метра подкладочной ткани, 2 метра ватина и 7 пуговиц. Цех по пошиву пальто получил N метров драпа, M метров подкладочной ткани, К метров ватина и L пуговиц. Какое количество пальто можно сшить из полученных материалов?

Решение ввод исходных данных с клавиатуры и вывод на экран

program vet_6;

const dr=3; pt=4;

vat=2; pug=7;

var n,m,k,l,k1,k2,k3,k4,min:integer;

begin

write(‘введите кол-во в метрах драпа, подкл. Ткани, ватина, пуговиц’);

readln(n,m,k,l);

k1:=n div dr;

k2:=m div pt;

k3:=k div vat;

k4:=l div pug;

min:=k1;

if k2

if k3

if k4

writeln('kol-vo pal',min:2);

readln;

end.

Решение с использованием файлов чтения (input.txt) и вывода (output.txt)


program vet_6;

const dr=3; pt=4;

vat=2; pug=7;

var n,m,k,l,k1,k2,k3,k4,min:integer; t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t1,’output.txt’); rewrite(t2);

readln(t1,n,m,k,l);

k1:=n div dr;

k2:=m div pt;

k3:=k div vat;

k4:=l div pug;

min:=k1;

if k2

if k3

if k4

writeln(t2,'kol-vo pal',min:2);

Close(t1); close(t2);

end.


Комментарии к программе:

1) Указать в разделе констант, сколько метров драпа понадобится при пошиве одного пальто (dr), подкладочной ткани (pt), ватина (vt), пуговиц (pug).

2) Ввести исходные данные N,M, К,L.

3) Вычислить целую часть от деления n на dr (k1:=целая часть (n/dr), то есть находим на сколько пальто хватило бы драпа) .

4) Вычислить целую часть от деления m на pt (k2:=целая часть (m/pt), то есть находим на сколько пальто хватило бы подкладочной ткани).

5) Вычислить целую часть от деления k на vat (k3:=целая часть (k/vat), то есть находим на сколько пальто хватило бы ватина).

6) Вычислить целую часть от деления l на pug (k4:=целая часть (l/pug), то есть находим на сколько пальто хватило бы пуговиц).

7) Находим минимальное значение (min) из 4 чисел k1,k2,k3,k4 (можно использовать любой прием нахождение минимального значения).

8) Вывести «Количество пальто-» min (min – количество пальто, которое можно сшить из полученных материалов).


Задача № 8. Задача Пусть D – заштрихованная часть плоскости, как показано на рисунке. Определить, принадлежит ли заданная точка с координатами (x,y) области D.

Решение с использованием логической переменной

hello_html_m60f17c79.png


Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

program vet_7;

var x,y:real;

h:boolean;

begin

write(‘введите координаты точки’);

readln(x,y);

h:=(y>=x) and (x>0) or (y>=-x) and (x<=0) or (y>=1);

if h then writeln('принадлежит')

else writeln('не принадлежит');

readln;

end.


program vet_7;

var x,y:real;

h:boolean; t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,x,y);

h:=(y>=x) and (x>0) or (y>=-x) and (x<=0) or (y>=1);

if h then writeln(t1,'принадлежит')

else writeln(t2,'не принадлежит');

Close(t1); Close(t2);

end.

Комментарии к программе:

Используется логическая переменная h, которая получает значение true или false, в зависимости от принадлежности точки заштрихованной области.



Задача 9.

hello_html_m24fa7187.png


1 способ решения ( полное ветвление, ветка else содержит еще полное ветвление

Решение ввод исходных данных с клавиатуры и вывод на экран

program vet;

var a,b,c:real;

d,x1,x2,x:real;

begin

write(‘введите коэффициенты a,b,c’);

readln(a,b,c);

d:=sqr(b)-4*a*c;

writeln(‘дискриминант=’,d:0:2);

if (d<0) then writeln(‘корней нет’)

else

if d=0 then begin

x:=-b/(2*a)

writeln(‘x=’,x:0:2);

end

else begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);


writeln(‘x1=’,x1:0:2,’x2=’:4,x2:0:2);

end;


readln;

end.

Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

program vet;

var a,b,c:real;

d,x1,x2,x:real;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,a,b,c);

d:=sqr(b)-4*a*c;

writeln(t2,‘дискриминант=’,d:0:2);

if (d<0) then writeln(‘корней нет’)

else

if d=0 then begin

x:=-b/(2*a)

writeln(t2,‘x=’,x:0:2);

end

else begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln(t2,‘x1=’,x1:0:2,’x2=’:4,x2:0:2);

end;


Close(t1), Close(t2);

end.


2 способ решения (3 последовательных оператора if then)

Решение ввод исходных данных с клавиатуры и вывод на экран

program vet;

var a,b,c:real;

d,x1,x2,x:real;

begin

write(‘введите коэффициенты a,b,c’);

readln(a,b,c);

d:=sqr(b)-4*a*c;

writeln(‘дискриминант=’,d:0:2);

if (d<0) then writeln(‘корней нет’)

else

if d=0 then begin

x:=-b/(2*a)

writeln(‘x=’,x:0:2);

end

else begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);


writeln(‘x1=’,x1:0:2,’x2=’:4,x2:0:2);

end;


readln;

end.

Решение с использованием файлов чтения (input.txt) и вывода (output.txt)

program vet;

var a,b,c:real;

d,x1,x2,x:real;

t1,t2:text;

begin

assign(t1,’input.txt’); reset(t1);

assign(t2,’output.txt’); rewrite(t2);

readln(t1,a,b,c);

d:=sqr(b)-4*a*c;

writeln(t2,‘дискриминант=’,d:0:2);

if d<0 then writeln(‘корней нет’);

if d=0 then begin

x:=-b/(2*a)

writeln(t2,‘x=’,x:0:2);

end;

if d>0 then begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln(t2,‘x1=’,x1:0:2,’x2=’:4,x2:0:2);

end;


Close(t1), Close(t2);

end.


16


Общая информация

Номер материала: ДA-043019

Вам будут интересны эти курсы:

Курс повышения квалификации «Информационные технологии в деятельности учителя физики»
Курс повышения квалификации «Методика преподавания информатики в начальных классах»
Курс повышения квалификации «Современные информационные технологии и их использование в работе преподавателей. Системы автоматизированного проектирования одежды и организация технологического процесса»
Курс повышения квалификации «Основы создания интерактивного урока: от презентации до видеоурока»
Курс повышения квалификации «Внедрение системы компьютерной математики в процесс обучения математике в старших классах в рамках реализации ФГОС»
Курс повышения квалификации «Организация работы по формированию медиаграмотности и повышению уровня информационных компетенций всех участников образовательного процесса»
Курс повышения квалификации «Облачные технологии в образовании»
Курс «Фирменный стиль» (Corel Draw, Photoshop)
Курс «Оператор персонального компьютера»
Курс повышения квалификации «Развитие информационно-коммуникационных компетенций учителя в процессе внедрения ФГОС: работа в Московской электронной школе»
Курс профессиональной переподготовки «Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Специфика преподавания информатики в начальных классах с учетом ФГОС НОО»
Курс повышения квалификации «Применение MS Word, Excel в финансовых расчетах»
Курс профессиональной переподготовки «Математика и информатика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»

Благодарность за вклад в развитие крупнейшей онлайн-библиотеки методических разработок для учителей

Опубликуйте минимум 3 материала, чтобы БЕСПЛАТНО получить и скачать данную благодарность

Сертификат о создании сайта

Добавьте минимум пять материалов, чтобы получить сертификат о создании сайта

Грамота за использование ИКТ в работе педагога

Опубликуйте минимум 10 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Свидетельство о представлении обобщённого педагогического опыта на Всероссийском уровне

Опубликуйте минимум 15 материалов, чтобы БЕСПЛАТНО получить и скачать данное cвидетельство

Грамота за высокий профессионализм, проявленный в процессе создания и развития собственного учительского сайта в рамках проекта "Инфоурок"

Опубликуйте минимум 20 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Грамота за активное участие в работе над повышением качества образования совместно с проектом "Инфоурок"

Опубликуйте минимум 25 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Почётная грамота за научно-просветительскую и образовательную деятельность в рамках проекта "Инфоурок"

Опубликуйте минимум 40 материалов, чтобы БЕСПЛАТНО получить и скачать данную почётную грамоту

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