Какво минахме дотук
Това е обобщителният урок на темата „Програмиране на 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, 16 | 52 |
Решение. Организираме цикъл, който въвежда 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, после 0 | 51 |
Упътване. Вместо цикъл 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}"правят едно и също.- Преди да пишеш код, кажи си на глас какъв е видът на процеса. Това решава кой оператор ти трябва.