Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 1 · Урок 13

Изчислителни процеси. Операции и оператори

Обобщение на цялата тема чрез задачи: сумиране с известен и с неизвестен брой числа, преобразуване на температури и растяща реколта. Кой цикъл кога.

Какво минахме дотук

Това е обобщителният урок на темата „Програмиране на C#“. Няма нищо ново — има задачи, които събират наученото. Преди тях, един кратък преглед.

Вид процесОператориКога
ЛинеенПрисвоявания, Parse, WriteLineДействията се изпълняват едно след друго в реда, в който са написани
Разклоненif / else / switchИзпълнението се разделя на клонове според данните
Цикличенfor / while / do-whileЕдни и същи действия се повтарят върху различни данни

Ключово

Изборът на цикъл е прост въпрос: знаеш ли предварително броя повторения — for. Не знаеш ли — while. Трябва ли тялото да мине поне веднъж — do-while.

Задача 1 — SumVal

Условие. Напиши конзолно приложение SumVal, което намира сумата на зададени на отделни редове на стандартния вход цели числа. Програмата първо трябва да въведе от клавиатурата ред с броя n на числата, n > 0, а след това n реда с по едно от числата на всеки от тях. На конзолата да изведе сумата на n-те числа.

ВходИзход
5, после 6, 12, −5, 23, 1652

Решение. Организираме цикъл, който въвежда n-те числа и добавя всяко от тях в променливата за натрупване на сумата, инициализирана предварително с нула.

static void Main(string[] args)
{
    int n; string s;
    s = Console.ReadLine();
    n = int.Parse(s);
    int sum = 0;
    for (int i = 1; i <= n; i++)
    {
        s = Console.ReadLine();
        int number = int.Parse(s);
        sum = sum + number;
    }
    Console.WriteLine("Sum={0}", sum);
}

Бележка

Записът "Sum={0}", sum е друг начин за форматиране: {0} е място, на което ще се постави първият аргумент след низа. Прилича на интерполацията с $, но е по-стар начин.

Задача 2 — SumVal1

Условие. Напиши програма SumVal1, която намира сумата на поредица от няколко зададени на отделни редове цели положителни числа, завършваща с нула. Нулата не се брои — тя е само знак за край.

ВходИзход
6, 12, 5, 23, 5, после 051

Упътване. Вместо цикъл for, който се изпълнява толкова пъти, колкото е броят на числата, използвай do-while цикъл, като спреш изпълнението при въвеждане на нула.

Съвет

Ето къде do-while е естественият избор: първо трябва да прочетеш число и чак после можеш да провериш дали е нула. Условието не може да се провери преди тялото — няма още какво да се проверява.

Задача 3 — от Фаренхайт в Целзий

Условие. Напиши конзолно приложение, което превръща температура, зададена в градуси по Фаренхайт, в градуси по Целзий. Температурите по Фаренхайт да са в интервала от 0°F до 200°F със стъпка 5.

Упътване. Вместо обичайния за такава задача оператор за цикъл for, използвай някой от операторите за цикъл с условие. Формулата за преобразуване от Фаренхайт в Целзий изведи от формулата за преобразуване от Целзий във Фаренхайт, която използвахме в предишен урок:

F = C · 9/5 + 32     =>     C = (F − 32) · 5/9

Задача 4 — реколтата от ябълки

Условие. Реколтата от ябълки на фермер през 2000 г. е била 20 тона. След това на всеки две години реколтата се увеличавала с 20%. Направи приложение, което решава следните задачи:

  • а) намира годината, през която за първи път реколтата е била по-голяма от 50 тона;
  • б) намира годината g, през която сумарното количество ябълки от 2000 г. до годината g ще превиши 900 тона.

Внимание

Внимавай с „на всеки две години“ — годината расте с 2, не с 1. А в подусловие б) трябва да натрупваш сума, не да гледаш само текущата реколта.

Контрол и оценка

Провери се

1. Реши всичките четири задачи по-горе и провери работоспособността на програмите с примерните данни.

2. За всяка от четирите задачи кажи какъв е видът на изчислителния процес и защо си избрал точно този оператор за цикъл.

3. Пренапиши задача 1 с while вместо с for, а задача 2 — с while вместо с do-while. Кое от двете е по-естествено и защо?

Какво трябва да запомниш

  • Броят повторения е известен предварително → for. Зависи от данните → while или do-while.
  • Когато поредицата свършва със специална стойност („нула за край“), естественият избор е do-while — първо четеш, после проверяваш.
  • Променливата за натрупване се инициализира преди цикъла — с 0 за сума и с 1 за произведение.
  • "Sum={0}", sum и $"Sum={sum}" правят едно и също.
  • Преди да пишеш код, кажи си на глас какъв е видът на процеса. Това решава кой оператор ти трябва.