3. Конзолни приложения
• Какво е „конзола“?
– Съвкупността от физически устройства за въвеждане и
визуализиране на информация
– Историческо начало и наследство
– Конзола в Microsoft Windows
4. Конзолни приложения
• Какво е „конзолно приложение“?
– Взаимодействието с потребителя се осъществява през конзолата
– Удобни за автоматизирани операции
– Прости програми – удобни за навлизане в разработката на
съответния език
– Неудобни за употреба от потребители (в общия случай)
6. Въвеждане на данни от конзолата
• Прочитане на един символ
• Прочитане на цял ред
• Прочитане на клавиш или
комбинация от клавиши
• Изчакване до натискане на клавиш
// прочитане на един символ
int i = Console.Read();
char c = Convert.ToChar(i);
// прочитане на цял ред
string line = Console.ReadLine();
// прочитане на клавиш
ConsoleKeyInfo key =
Console.ReadKey();
// изчакване до натискане на
// произволен клавиш
Console.ReadKey();
// изчакване до натискане на Enter
Console.ReadLine();
8. Въвеждане на данни от конзолата
•
•
•
•
Въвеждане на цяло число
Въвеждане на дробно число
Въвеждане на дата
Въвеждане на булева стойност
// въвеждане на цяло число
int integer =
int.Parse(Console.ReadLine());
// въвеждане на дробно число
double real =
double.Parse(Console.ReadLine());
// въвеждане на дата
DateTime date = DateTime.Parse(
Console.ReadLine());
// въвеждане на булева стойност
bool boolean =
bool.Parse(Console.ReadLine());
10. Извеждане на данни на конзолата
• Извеждане на низ
• Извеждане на число
• Извеждане на други примитивни
типове данни
• Извеждане на произволен обект
• Преминаване на нов ред
// извеждане на низ
Console.Write("Hello World!");
// извеждане на число
Console.Write(3.14159265359d);
// извеждане на булева стойност
Console.Write(true);
// извежане на произволен обект
object obj = DateTime.Now;
Console.Write(obj);
// преминаване на нов ред
Console.WriteLine();
// нов ред след извеждане на стойност
Console.WriteLine(42);
12. Извеждане на данни на конзолата
• Извеждане на една или повече
стойности с помощта на
форматиращ низ
• Подравняване
• Форматиране на числа
• Форматиране на дати
// извеждане с форматиращ низ
string name = "Peter";
Console.WriteLine("Hello, {0}", name);
// подравняване
Console.WriteLine("Views: {0,5}", 335);
Console.WriteLine("Users: {0,5}", 13);
// форматиране на цяло число
Console.WriteLine("Number: {0:d5}", 3);
// форматиране на дробно число
Console.WriteLine("Pi: {0:f4}", Math.PI);
// форматиране на датa
Console.WriteLine(
"Date: {0:dd-MM-yyyy}", DateTime.Now);
14. Условия
• Какво е „условие“?
–
–
–
–
Израз с булев резултат
Булеви променливи, константи и литерали
Сравнения
Логически операции
15. Условия
• Сравнения
–
–
–
–
–
–
Равенство
Неравенство
По-малко
По-малко или равно
По-голямо
По-голямо или равно
// равенство
bool b1 = (s == "Hello");
// неравенство
bool b2 = (s != "World");
// по-малко
bool b3 = (x < 14);
// по-малко или равно
bool b4 = (y <= 0);
// по-голямо
bool b5 = (x > 5);
// по-голямо или равно
bool b6 = (y >= 20);
19. Условни преходи
• Какво е „условен преход“?
– Конструкция на езика за програмиране
– Позволява изпълнението или неизпълнението на операции в
зависимост от условие
– Необходими за реално приложими програми
20. Условни преходи
• Конструкция за условен преход if
– Условие
– Блок от операции
– Ако условието е изпълнено, се
изпълняват съжденията в блока след if
– В противен случай не се изпълнява
нищо
// условен преход с едноредов блок
string line = Console.ReadLine();
if (line == "hi")
Console.WriteLine("Hello!");
// условен преход с многоредов блок
Console.WriteLine("What's your name?");
line = Console.ReadLine();
if (line != string.Empty)
{
Console.WriteLine(
"Hello, {0}!", line);
Console.WriteLine(
"Nice to meet you!");
}
22. Условни преходи
• Конструкция за условен преход
if…else
Условие
Блок от операции при вярно условие
Блок от операции при грешно условие
Ако условието е изпълнено, се
изпълняват съжденията в блока след if
– В противен случай се изпълняват
съжденията в блока след else
–
–
–
–
// условен преход с else
Console.Write("Are you a girl (y/n)?");
string line = Console.ReadLine();
if (line == "y")
{
Console.WriteLine(
"You probably have long hair.");
}
else
{
Console.WriteLine(
"Let's watch football.");
}
24. Условни преходи
• Вложени конструкции за условен
преход
– Блокът с операции на конструкция за
условен преход може да съдържа
друга конструкция за условен преход
// вложени условни преходи
Console.WriteLine("Tell me an integer.");
int n = int.Parse(Console.ReadLine());
if (n > 0)
{
if (n % 2 == 0)
Console.WriteLine("It's even.");
else
Console.WriteLine("It's odd.");
}
else
{
Console.WriteLine(
"It's not positive.");
}
25. Условни преходи
• Вложени конструкции за условен
преход
– Често прилаган подход: if…else if…else
if…else if…
// Поредица от if...else if...
Console.WriteLine(
"Tell me another integer.");
int x = int.Parse(Console.ReadLine());
if (x > 0)
Console.WriteLine("It is positive.");
else if (x < 0)
Console.WriteLine("It is negative.");
else
Console.WriteLine("It is zero.");
27. Условни преходи
• Конструкция switch-case
– Сравнение на израз с няколко различни константи
– Прави кода по-четим и по-лесен за поддръжка
28. Условни преходи
• Конструкция switch-case
– Израз, който се сравнява
– Поредица от секции с константа и
съждения, които да бъдат изпълнени
при съвпадение
– Задължително прекратяване на
изпълнението във всяка секция – break
– Секции с повече от една константа
– Секция по подразбиране – при липса
на съвпадение с никоя от константите
// Конструкция switch-case
Console.Write(
"Do you like programming (y/n)?");
string line = Console.ReadLine();
switch (line)
{
case "y":
Console.WriteLine("Great!");
break;
case "n":
case "N":
Console.WriteLine("Awww. :(");
break;
default:
Console.WriteLine(
"Make up your mind!");
break;
}
30. Условни преходи
• Условен тернарен оператор
– Резултат: една от две възможни стойности според това дали е
изпълнено условие
– Прави кода по-кратък, четим и лесен за поддръжка
31. Условни преходи
• Условен тернарен оператор
// условен тернарен оператор
Console.WriteLine(
– Условие
"What's your surname?");
– Стойност ако условието е изпълнено
string surname = Console.ReadLine();
– Стойност ако условието не е изпълнено Console.WriteLine(
"What's your gender (m/f)?");
string line = Console.ReadLine();
string title =
(line == "m" ? "Mr" : "Ms");
Console.WriteLine(
"Greetings, {0} {1}.",
title, surname);
33. Цикли
• Какво е „цикъл“?
– Конструкция на езика за програмиране
– Позволява многократното изпълнение на една и съща поредица от
операции
– Итерация – еднократно изпълнение на операциите в цикъла
– Условие за преустановяване на цикъла
– Необходими за реално приложими програми
35. Цикли
• Цикъл с предусловие while
– Условие
– Блок от операции
– Условието се проверява преди
изпълнението на итерацията
– Нула или повече итерации
// цикъл с предусловие while
Console.WriteLine(
"Commencing countdown.");
int counter = 10;
while (counter > 0)
{
Console.WriteLine(
"{0}!", counter);
counter--;
}
Console.WriteLine("Launch!");
37. Цикли
• Цикъл с постусловие do…while
– Блок от операции
– Условие
– Условието се проверява след
изпълнението на итерацията
– Една или повече итерации
// цикъл с постусловие do...while
int age;
do
{
Console.WriteLine(
"How old are you?");
age = int.Parse(
Console.ReadLine());
}
while (age <= 0);
39. Цикли
• Цикъл for
Инициализация на брояча
Условие
Инкрементиране на брояча
Блок с операции
Условието се проверява преди
изпълнението на итерацията
– Инкрементирането се изпълнява след
изпълнението на итерацията
– Нула или повече итерации
–
–
–
–
–
// цикъл for
Console.WriteLine(
"Tell me a positive integer.");
int top = int.Parse(Console.ReadLine());
Console.WriteLine(
"The integers from 1 to {0} are:",
top);
for (int i = 1; i <= top; i++)
{
Console.WriteLine(i);
}
41. Цикли
• Цикъл foreach
Променлива за елемент
Изброима колекция от елементи
Блок с операции
Цикълът продължава докато има
неизброени елементи в колекцията
– Нула или повече итерации
–
–
–
–
// цикъл foreach
Console.WriteLine("Tell me a word.");
string word = Console.ReadLine();
Console.WriteLine(
"The word split into characters:");
foreach (char c in word)
{
Console.WriteLine(c);
}
43. Цикли
• Управление на циклите
– Прекратяване на текущата итерация –
continue
– Прекратяване на цикъла – break
// управление на циклите
for (int i = 0; i < 100; i++)
{
if (i % 3 == 0)
continue;
Console.WriteLine(i);
if (i == 10)
break;
}
45. Цикли
• Безкрайни цикли
– Условие, което винаги е истина
– Разчита се на прекратяване на цикъла
чрез break
– Опасност от „зацикляне“ на
програмата
– Могат да се реализират като крайни
цикли
– Понякога правят кода по-прост
// "безкраен" цикъл
while (true)
{
Console.WriteLine(
"The current time is {0}",
DateTime.Now.TimeOfDay);
Console.WriteLine(
"Type 'exit' to exit.");
string line = Console.ReadLine();
if (line == "exit")
break;
}
47. Цикли
• Вложени цикли
// вложени цикли
for (int i = 1; i < 10; i++)
– Блокът с операции на цикъл може да
{
съдържа друг цикъл
for (int j = i; j < 10; j++)
– Във всяка итерация на външния цикъл се
{
изпълнява целият вътрешен цикъл
Console.Write("{0,2}", j);
}
Console.WriteLine();
}
49. Задачи за упражнение
• Създайте програма, в която се въвежда година (цяло
положително число) и се извежда съобщение дали тя е
високосна или не.
• Създайте програма, в която се въвежда дробно число и
след това то се извежда с избран от потребителя брой
знаци след десетичната запетая.
• Създайте програма, в която въвежда се цяло положително
число и се извежда съобщение дали то е просто или не.
• Създайте програма, в която се въвежда цяло положително
число и се извеждат всички прости числа, по-малки или
равни на него.
50. Задачи за упражнение
• Създайте програма, в която се въвежда цяло
неотрицателно число n и се извежда факториелът му (n!).
• Създайте програма, в която се въвежда цяло положително
число n и се извежда n-тото по ред число от редицата на
Фибоначи.
• Създайте програма, в която се въвеждат коефициентите на
квадратно уравнение и се намират неговите решения, като
се разгледат всички случаи.
• Създайте програма, в която се въвежда поредица от оценки
(дробни числа между 2 и 6) на ученици и се извежда
средният успех на класа.
51. Задачи за упражнение
• Създайте конзолно приложение-калкулатор, в което
потребителят избира аритметична операция (събиране,
изваждане, умножение, деление), въвежда двата операнда
(дробни числа) и получава резултата; изпълнението да
продължи до избиране на опция за изход вместо
аритметична операция.
• Създайте проста текстово-базирана приключенска игра, в
която потребителят въвежда текстови команди и след всяка
команда получава описание на резултата от нея.