Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка вторая.doc
Скачиваний:
57
Добавлен:
05.06.2015
Размер:
1.61 Mб
Скачать

Оператор выбора case. Решение задач.

Ранее Вы познакомились с условным оператором If, который позволяет программе выполнять переходы на ту или иную ветвь по значению булева условия. Используя несколько операторов If, можно производить ветвление по последовательности условий. В приведенном фрагменте показано, как при помощи ряда операторов If можно преобразовать целое число (в диапазоне 0-9) к его словесному представлению:

if Ziphra = 0   then     write (‘Нуль‘);       if Ziphra = 1         then           write (‘Единица‘);             if Ziphra = 2               then                write (‘Два‘);

и т.д.

Вы уже, наверное, представили, насколько этот подход однообразный и утомительный. Язык Паскаль предоставляет для этих целей другую управляющую структуру (оператор выбора case), которая позволяет построить ветвление по ряду условий в форме, более удобной для чтения программ.

Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор) - выражение любого типа (кроме типов REAL и STRING).

Общая форма записи следующая:

case выражение of значение1 : оператор (группа операторов); значение2 : оператор (группа операторов); . . . . . . . . . . . . . . . . . . . . . . значениеN : оператор (группа операторов) else оператор (группа операторов); end;

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

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

Например,

case NUMBER mod 2 of   0 : writeln (NUMBER, ‘- число четное‘) else : writeln (NUMBER, ‘- число нечетное‘); end;

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

case MONTH of   1, 2, 3 : writeln (‘Первый квартал‘);   4, 5, 6 : writeln (‘Второй квартал‘);   7, 8, 9 : writeln (‘Третий квартал‘);   10, 11, 12 : writeln (‘Четвёртый квартал‘); end;

Оператором может являться не только простой оператор, но также составной и пустой операторы.

case CODE of   1 : for i := 1 to 5 do          writeln (‘*******‘);   2 : begin {составной оператор}          x:=sqr(y-1);          writeln (x);        end;   3 : {пустой оператор}        end;

Любому заданному значению селектора соответствует лишь один вход в списке операторов. Константы должны принадлежать тому же типу, что и селектор. Если селектор принимает значение, которому не соответствует ни один вход, то будет выполняться оператор, следующий за словом else. Если же этого оператора нет, то никакие альтернативы не будут выполняться.

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

case Chislo of   0..9 : write (‘Это число является цифрой‘);

Посмотрите, в каких вариантах еще можно использовать оператор выбора при решении задачи.

Задача. Написать программу преобразования цифр в слова.

Program Number1; Var   a, b, c : integer; Begin   writeln(‘Введите цифру ‘);   readln(a);   if (a<0) or (a>9)     then       writeln (‘Это число не является цифрой‘)     else       case a of         0 : writeln (‘ноль‘);         1 : writeln (‘один‘);         2 : writeln (‘два‘);         3 : writeln (‘три‘);         4 : writeln (‘четыре‘);         5 : writeln (‘пять‘);         6 : writeln (‘шесть‘);         7 : writeln (‘семь‘);         8 : writeln (‘восемь‘);         9 : writeln (‘девять‘);       end;   readln; End.

Program Number2; Var   a, b, c : integer; Begin   writeln(‘Введите цифру ‘);   readln(a);   case a of     0 : writeln (‘ноль‘);     1 : writeln (‘один‘);     2 : writeln (‘два‘);     3 : writeln (‘три‘);     4 : writeln (‘четыре‘);     5 : writeln (‘пять‘);     6 : writeln (‘шесть‘);     7 : writeln (‘семь‘);     8 : writeln (‘восемь‘);     9 : writeln (‘девять‘)   else writeln (‘Это число не является цифрой‘);   end;   readln; End.

  1. Написать алгоритм, позволяющий получить словесное наименование школьных оценок.

  2. Написать алгортм, классифицирующий треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы.

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

  4. Написать алгоритм нахождения числа дней в месяце, если даны: Номер месяца n - целое число а, равное 1 для високосного года и равное 0 в противном случае.

  5. По номеру дня недели вывести его название.

  6. В зависимости от того введена ли открытая скобка или закрытая, напечатать "открытая круглая скобка" или "закрытая фигурная скобка". (Учитывать круглые, квадратные, фигурные скобки).

  7. В зависимости от введённого символа L, S, V программа должна вычислять длину окружности; площадь круга; объём цилиндра.

  8. По введенному числу от 0 до 15 вывести название цвета, соответствующего этому коду.

  9. Определить, является ли введенная буква русского алфавита гласной.

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

  11. Придумайте шуточный тест с выдачей шуточных результатов.

  12. Напишите программу, которая по введенному числу из промежутка 0..24, определяет время суток.

  13. Напишите программу, которая по введенному номеру месяца високосного или невисокосного года, выводит количество дней в месяце.

  14. Вычислить значение функции по одной из формул:

  15. Придумайте программу на использование оператора выбора сase.

Оператор GOTO.

В языке принят естественный порядок выполнения программы: последовательный. Рассмотренные выше операторы if и case осуществляют переход к выполнению соответствующего оператора в зависимости от выполнения условия или предложенного выбора. Однако в практике программирования задач возникает необходимость безусловного перехода для выполнения нужной последовательности операторов. Например, необходимо обойти участок программы, а вернуться к нему позже. Для этого предназначен оператор безусловного перехода, который имеет следующую форму записи:

  goto метка;

Метка представляет собою число без знака в диапазоне 1-9999 либо последовательность латинских букв и цифр.

Перед использованием метка должна быть объявлена в разделе описания меток, который срузу следует за разделом описания используемых модулей:

Uses   Crt, Graph; Label   Metka1,   Metka2; Const   P=3.14; Var   x : integer;

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

Begin . . . if Alpha = 360   then     goto Metka1   else     writeln (‘Эта фигура - не окружность‘); . . .   Metka1 : Arc(X,Y,0,Alpha,R); . . . End.

Приведём пример уже знакомой Вам программы, применив в ней оператор безусловного перехода.

Program Number2; Label   Metka; Var   a, b, c : integer; Begin   Metka : writeln(‘Введите цифру ‘);   readln(a);   case a of     0 : writeln (‘ноль‘);     1 : writeln (‘один‘);     2 : writeln (‘два‘);     3 : writeln (‘три‘);     4 : writeln (‘четыре‘);     5 : writeln (‘пять‘);     6 : writeln (‘шесть‘);     7 : writeln (‘семь‘);     8 : writeln (‘восемь‘);     9 : writeln (‘девять‘)   else     begin       writeln (‘Это число не является цифрой‘);       goto Metka;     end;   end;   readln; End.

Теперь в этой программе мы заставляем пользователя правильно ввести цифру. Сколько бы раз пользователь ни вводил числа не из промежутка 0..9, программа будет выдавать сообщение об ошибочном вводе и снова просить ввести цифру.

Задание. Наберите программу и протестируйте ее.

В простых программах этот оператор не вызывает затруднений. При написании сложных и объёмных программ могут быть затруднения, поэтому программисты стараются не использовать этот оператор. Возникает вопрос: где должен использоваться безусловный переход? На этот вопрос следует ответить - “нигде”. Любая программа, написанная с goto, может быть запрограммирована без этого оператора.

Следует ли вообще использовать оператор перехода? Ответить трудно. В основном применение оператора безусловного перехода оправдано в двух случаях: при преждевременном завершении цикла или программы. Но даже в этих случаях можно обойтись некоторой стандартной управляющей структурой.

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

Задание. Выберите произвольно из решенных Вами задач две и дополните их решение использованием оператора безусловного перехода goto.

Синтаксис операторов циклов.

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

Определение. Цикл – это последовательность операторов, которая может выполняться более одного раза.

Определение. Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.

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

Исходными данными в этом случае являются переменная N - количество чисел и сами эти числа. Значение очередного числа обозначим переменной Х. Результатом работы алгоритма станет сумма этих чисел, которую обозначим переменной S.

  S=x1+x2+x3+...+xn

Допустимые значения переменной N должны удовлетворять условию n>0, так как количество слагаемых не может быть числом отрицательным.

Как же мы должны решать эту задачу? Сначала нужно запросить, сколько чисел нужно будет сложить и считать это число в переменную N. Затем нужно так организовать операторы, чтобы программа запрашивала очередное число и каждый раз складывала его с предыдущими; и повторяла эту группу операторов N раз.

На предыдущих занятиях при изучении оператора безусловного перехода мы знакомились с решением подобных задач. Но в языке Паскаль существуют более удобные конструкции для организации циклов:

  • цикл с предусловием;

  • цикл с постусловием;

  • цикл со счетчиком.

Познакомимся с первым из них – оператором цикла с предусловием while.

Циклы с предусловием используются тогда, когда выполнение цикла связано с некоторым логическим условием. Оператор цикла с предусловием имеет две части: условие выполнения цикла и тело цикла.

При выполнении оператора while определенная группа операторов выполняется до тех пор, пока определенное в операторе while булево условие истинно. Если условие сразу ложно, то оператор не выполнится ни разу.

Общая форма записи следующая

while <булево выражение> do   begin     группа операторов   end;

На русском языке это звучит примерно так:

пока выполняется это условие делай   от начала     группа операторов   до конца;

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

При использовании цикла с предусловием надо помнить следующее:

  1. значение условия выполнения цикла должно быть определено до начала цикла;

  2. если значение условия истинно, то выполняется тело цикла, после чего повторяется проверка условия. Если условие ложно, то происходит выход из цикла;

  3. хотя бы один из операторов, входящих в тело цикла, должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.

Вернемся к нашей задаче вычисления суммы чисел. При вычислении суммы используем следующий прием: вначале, когда еще не задано ни одно слагаемое, сумму полагают равной нулю (S:=0), а затем, получая очередное слагаемое, прибавляют его к сумме (S:=S+x) (см. программу ниже).

Очень важное значение в операторе цикла имеет так называемая переменная цикла. В нашей программе она называется i. С ее помощью мы обращаемся к пользователю за очередным числом (write (‘Введите ‘,i,’-ое число ’)) и считаем количество уже введенных чисел (i:=i+1), чтобы не запросить лишнее. Одновременно переменная цикла участвует в булевом выражении (i<=N).

Рассмотрите внимательно программу, решающую нашу задачу.

Program Summa; Uses   Crt; Var   i,   N : integer;   x, S : real; Begin   ClrScr;   write (‘Сколько чисел для сложения? ‘);   readln (N);   S:=0;   i:=1;   while i<=N do     begin       write (‘Введите ‘,i,’-е число ’);       readln (x);       S:=S+x;       i:=i+1;     end;   write (‘Сумма введенных чисел равна ‘,s:5:2);   readln; End.

Хотелось бы, чтобы Вы смогли представить работу этой программы. Давайте попробуем вместе.

Пусть нам требуется сложить следующие числа: 5, 7, -4, 0, 8, 20. Посчитаем, сколько их всего – шесть. Это число мы введем, когда программа задаст вопрос: Сколько чисел для сложения? Теперь наша программа запросит ввести 1-ое число, т. к. на первом шаге переменная i равна 1. Мы введем число 5. Программа считает его в переменную х. Теперь число 5 сложим с числом 0 и результат присвоим переменной S (оператор S:=S+x). В этот момент S становится равной 5. Чтобы перейти к следующему числу, увеличим значение переменной i на 1 (оператор i:=i+1). Выполнение операторов тела цикла закончено. Теперь программа переходит опять к анализу условия вхождения в цикл (i<=N). Переменная цикла i=2, переменная N=6, поэтому значение логического условия 2<=6 равно True. Значит снова выполняется тело цикла:

while i<=N do {2<=6}   begin     write (‘Введите ‘,i,’-ое число ’); {Введите 2-е число}     readln (x); {Считали число 7}     S:=S+x; {S:=5+7}     i:=i+1; {i:=2+1}   end;

Итак, мы сложили два числа и переходим опять к проверке условия. Ответим на вопрос: 3<=6? Да. Поэтому снова начинаю работать операторы тела цикла и мы переходим к третьему числу:

while i<=N do {3<=6}   begin     write (‘Введите ‘,i,’-ое число ’); {Введите 3-е число}     readln (x); {Считали число -4}     S:=S+x; {S:=12 + (-4)}     i:=i+1; {i:=3+1}   end;

Аналогично, мы сложим и остальные числа. Но когда же операторы цикла выполнятся последний раз и остановится работа цикла? Когда сложим последнее число. Проверим это.

while i<=N do {6<=6}   begin     write (‘Введите ‘,i,’-ое число ’); {Введите 6-е число}     readln (x); {Считали число 20}     S:=S+x; {S:=16+20}     i:=i+1; {i:=6+1}   end;

Проверяется опять условие 7<=6. Значение этого условия равно False, а значит тело цикла выполняться не будет. Цикл закончил свою работу. А мы получили результат: посчитали сумму всех шести чисел S=32.

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

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

Например, рассмотрите следующие циклические алгоритмы

а) Пока не сдал выпускные экзамены делай     начало       готовь уроки;       посещай школу;     конец;

б) Пока есть желание, возможность и здоровье делай       посещай занятия спортом

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

  1. “Репка”. “Дед тянет-потянет, вытянуть не может. Позвал бабку. Бабка за дедку , дедка за репку, тянут потянут, вытянуть не могут. Позвала бабка внучку... И вытянули репку”.

  2. “Курочка ряба”. “Снесла курочка яичко. Дед бил, бил, не разбил. Баба била, била, не разбила. Мышка бежала, хвостиком задела, яичко упало и разбилось”.

  3. “Колобок”. “... Катится колобок по лесу. От зайца ушел, от медведя ушел, от волка ушел. Встретил лису, она его и съела”.

  4. “Волк и лиса”. “... Сидит волк у проруби, хвост в воду опустил и приговаривает: “Ловись, ловись, рыбка, большая и маленькая”. Пришла за водой баба. Прогнала волка.

  5. “Горшочек каши”. “... Варит горшок кашу, варит. Каша из дома на улицу потекла. Не знает мать девочки, что надо горшочку сказать. Пришла девочка, сказала: “Горшочек, не вари”. Перестал горшок кашу варить”.

Циклические конструкции.

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

Счетный оператор цикла FOR имеет такую структуру:

for <пар_цик> := <нач_знач> to <кон_знач> do <onepamop>

Здесь for, to, do – зарезервированные слова (для, до, выполнить);

<пар_цик> – параметр цикла – переменная типа INTEGER (точнее, любого порядкового типа); <нач_знач> – начальное значение – выражение того же типа; <кон_знач> – конечное значение – выражение того же типа; <оператор> – произвольный оператор Турбо Паскаля. При выполнении оператора FOR вначале вычисляется выражение <нач_зчач> и осуществляется присваивание <пар_цик>:=<нач_знач>. После этого циклически повторяется

– проверка условия <пар_цик> <= <кон_знач>; если условие не выполнено, оператор FOR завершает свою работу;

– выполнение оператора <оператор>;

– наращивание переменной <пар_цик> на единицу.

Пример использования массива и цикла for:

Const N=3;

Var

list: array [1..N] of integer;

i: integer;

Begin

list[1] := 421;

list[2] := 53;

list[3] := 1806;

writeln("Список чисел:");

for i:=1 to N do writeln(list[i]);

End.

Выражение list: array [1..N] of integer объявляет list как массив переменных типа integer c объемом памяти, выделяемым для трех целых переменных (так как N равен 3). К первой переменной массива можно обращаться как к list[1], второй – как к list[2] и третьей – как к list[3].

Оператор в теле цикла for обычно является одним из операторов программы, но может использоваться и составной оператор, заключенный в begin ... end.

Цикл с предусловием. Оператор цикла с предусловием, начинающийся с ключевого слова while, содержит в себе выражение, которое управляет повторным выполнением оператора (который может быть составным оператором). Выражение, с помощью которого осуществляется управление повторением оператора, должно иметь булевский тип. Вычисление его производится до того, как внутренний оператор будет выполнен. Внутренний оператор выполнятся повторно до тех пор, пока выражение принимает значение Тruе. Если выражение с самого начала принимает значение False, то оператор, содержащийся внутри оператора цикла с предусловием, не выполняется.

Оператор цикла с предусловием имеет следующую структуру:

while <условие> do <оператор>

где <условие> – выражение логического типа; <оператор> – произвольные операторы Паскаля. Если <условие> принимает значение True, то выполняется <оператор>; после чего вычисление выражения <условие> и его проверка повторяются.

Примерами операторов цикла с предусловием могут служить следующие операторы:

while Data[I] <> X do I := I + 1;

While I > 0 do begin

if Odd(I) then Z := Z * X;

I := I div 2;

X := Sqr(X);

end;

Цикл с постусловием. В операторе цикла с постусловием, начинающимся со слова repeat, выражение, которое управляет повторным выполнением последовательности операторов содержится внутри оператора repeat. Результат выражения должен быть булевского типа. Операторы, заключенные между ключевыми словами repeat и until, выполняются последовательно до тех пор, пока результат выражения не примет значение True. Последовательность операторов выполнится по край ней мере один раз, поскольку вычисление выражения производится после каждого выполнения последовательности операторов.

Оператор цикла repeat...until с постпроверкой условия имеет следующую структуру:

REPEAT <тело_цикла> UNTIL <условие>.

Здесь REPEAT, UNTIL – зарезервированные слова (повторять до тех пор пока не будет выполнено условие); <тело_цикла> – произвольная последовательность операторов Турбо Паскаля; <условие> – выражение логического типа.

Операторы <тело_цикла> выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть FALSE, операторы <тело_цикла> повторяются, в противном случае оператор REPEAT...UNTIL завершает свою работу.

Примеры оператора цикла с постусловием:

repeat

K := I mod J;

I := J;

J := K;

until J = 0;

repeat

Write('Введите значение (0..9):');

Readln(I);

until (I >= 0) and (I <= 9);

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

В версии Турбо Паскаль 7.0 определены стандартные процедуры Break и Continue. Процедура Break выполняет безусловный выход из цикла. Процедура Continue обеспечивает переход к началу новой итерации цикла.

Циклы с предусловием.

Продолжим изучение цикла с предусловием на примере решения следующей задачи.

Задача. Найти сумму чисел в непустой последовательности.

Рассмотрим алгоритм решения. Пусть нам дана такая последовательность чисел:

  3, -4, 0, 5, 19, -20, 6, 2

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

  1 2 3 4 5 6 7 8

  3, -4, 0, 5, 19, -20, 6, 2

Получилось, что всего у нас чисел восемь, на первом месте стоит число 3, на втором - число (-4), на третьем - число 0 и т.д. Тогда переменная цикла i будет пробегать числа от 1 до 8, становясь на каждом шаге больше на 1 и запрашивая каждый раз очередное число. Поэтому общая схема цикла будет выглядеть так:

i:=1; while i<=N do   begin     write (‘Введите ‘,i,’-ое число’);     readln (x);     . . .     i:=i+1;   end;

Здесь N - количество чисел последовательности (в нашем случае 8), х - член последовательности, i - порядковый номер очередного члена последовательности. Просмотрим, как будет работать этот цикл.

1 шаг

i:=1; while i<=N do {Проверяется условие 1<=8? Да. Значит выполняем тело цикла}   begin     write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 1-ое число”}     readln (x); {Считываем число 3 в переменную х}     . . .     i:=i+1; {Переходим к следующему по порядку числу: i=2}   end;

2 шаг

i:=1; while i<=N do {Проверяется условие 2<=8? Да. Значит выполняем тело цикла}   begin     write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 2-ое число”}     readln (x); {Считываем число (-4) в переменную х}     . . .     i:=i+1; {Переходим к следующему по порядку числу: i=3}   end;

3 шаг

i:=1; while i<=N do {Проверяется условие 3<=8? Да. Значит выполняем тело цикла}   begin     write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 3-ое число”}     readln (x); {Считываем число 0 в переменную х}     . . .     i:=i+1; {Переходим к следующему по порядку числу: i=4}   end;

и т. д.

8 шаг

i:=1; while i<=N do {Проверяется условие 8<=8? Да. Значит выполняем тело цикла}   begin     write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 8-ое число”}     readln (x); {Считываем число 2 в переменную х}     . . .     i:=i+1; {Переходим к следующему по порядку числу: i=9}   end;

9 шаг

i:=1; while i<=N do {Проверяется условие 9<=8? Нет. Значит цикл закончил свою работу и компьютер переходит к обработке следующего за end оператора}

Итак, у нас уже организован цикл считывания чисел. Осталось только вписать в тело цикла оператор, который бы суммировал все эти числа. Для этого опишем переменную Summa в разделе описания переменных и присвоим ей нулевое значение перед выполнением цикла. Тогда при каждом шаге нашего цикла значение этой переменной должно быть изменено на х. Это произойдет при выполнении оператора

  Summa:=Summa+x;

Если Вам не совсем понятно, что происходит при выполнении этого оператора, Вам нужно вспомнить, как происходит присваивание значение переменной: сначала вычисляется значение выражения в правой части (в нашем случае Summa+x, т.е, значение переменной Summa увеличиваем на х), а затем присваиваем это значение переменной с именем, записанным в левой части (Summa). Таким образом, в переменной Summa собирается сумма всех считанных чисел.

Задание. Напишите полный текст программы, находящей сумму N чисел последовательности. Дополните программу нахождением среднего арифметического этих чисел.

Примечание. Средним арифметическим чисел называется сумма этих чисел, деленная на их количество.