53
2013 Copyright © 2013 DAVID Holding Company Курс по програмиране на C# Занятие №2 Конзолен вход и изход. Условни преходи. Цикли

Училищен курс по програмиране на C# (2013/2014), занятие №2

Embed Size (px)

DESCRIPTION

Училищен курс по програмиране на C# (2013/2014) Занятие №2: Конзолен вход и изход. Условни преходи. Цикли

Citation preview

Page 1: Училищен курс по програмиране на C# (2013/2014), занятие №2

2013Copyright © 2013 DAVID Holding Company

Курс по програмиране на C#

Занятие №2Конзолен вход и изход. Условни преходи. Цикли

Page 2: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Съдържание

• Конзолни приложения• Въвеждане на данни от конзолата• Извеждане на данни на конзолата• Условия• Условни преходи• Цикли

Page 3: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Конзолни приложения

• Какво е „конзола“?– Съвкупността от физически устройства за въвеждане и

визуализиране на информация– Историческо начало и наследство– Конзола в Microsoft Windows

Page 4: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Конзолни приложения

• Какво е „конзолно приложение“?– Взаимодействието с потребителя се осъществява през

конзолата– Удобни за автоматизирани операции– Прости програми – удобни за навлизане в разработката на

съответния език– Неудобни за употреба от потребители (в общия случай)

Page 5: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Конзолни приложения

• Конзолни приложения в .NET– Проектен шаблон Console Application– Класът System.Console

Page 6: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Въвеждане на данни от конзолата

// прочитане на един символint i = Console.Read();char c = Convert.ToChar(i);// прочитане на цял редstring line = Console.ReadLine();// прочитане на клавишConsoleKeyInfo key = Console.ReadKey();// изчакване до натискане на// произволен клавишConsole.ReadKey();// изчакване до натискане на EnterConsole.ReadLine();

• Прочитане на един символ• Прочитане на цял ред• Прочитане на клавиш или

комбинация от клавиши• Изчакване до натискане на

клавиш

Page 7: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Въвеждане на данни от конзолата - демо

// Демонстрация

Page 8: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Въвеждане на данни от конзолата

// въвеждане на цяло числоint integer = int.Parse(Console.ReadLine());// въвеждане на дробно числоdouble real = double.Parse(Console.ReadLine());// въвеждане на датаDateTime date = DateTime.Parse( Console.ReadLine());// въвеждане на булева стойностbool boolean = bool.Parse(Console.ReadLine());

• Въвеждане на цяло число• Въвеждане на дробно число• Въвеждане на дата• Въвеждане на булева стойност

Page 9: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Въвеждане на данни от конзолата - демо

// Демонстрация

Page 10: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Извеждане на данни на конзолата

// извеждане на низConsole.Write("Hello World!");// извеждане на числоConsole.Write(3.14159265359d);// извеждане на булева стойностConsole.Write(true);// извежане на произволен обектobject obj = DateTime.Now;Console.Write(obj);// преминаване на нов редConsole.WriteLine();// нов ред след извеждане на стойностConsole.WriteLine(42);

• Извеждане на низ• Извеждане на число• Извеждане на други примитивни

типове данни• Извеждане на произволен обект• Преминаване на нов ред

Page 11: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Извеждане на данни на конзолата - демо

// Демонстрация

Page 12: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Извеждане на данни на конзолата

// извеждане с форматиращ низ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);// форматиране на датaConsole.WriteLine( "Date: {0:dd-MM-yyyy}", DateTime.Now);

• Извеждане на една или повече стойности с помощта на форматиращ низ

• Подравняване• Форматиране на числа• Форматиране на дати

Page 13: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Извеждане на данни на конзолата - демо

// Демонстрация

Page 14: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условия

• Какво е „условие“?– Израз с булев резултат– Булеви променливи, константи и литерали– Сравнения– Логически операции

Page 15: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условия

// равенствоbool b1 = (s == "Hello");// неравенствоbool b2 = (s != "World");// по-малкоbool b3 = (x < 14);// по-малко или равноbool b4 = (y <= 0);// по-голямоbool b5 = (x > 5);// по-голямо или равноbool b6 = (y >= 20);

• Сравнения– Равенство– Неравенство– По-малко– По-малко или равно– По-голямо– По-голямо или равно

Page 16: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условия

// отрицание ("не")bool b7 = !b2;// конюнкция ("и")bool b8 = (b3 && b5);// дизюнкция ("или")bool b9 = (b4 || b6);// изключваща дизюнкция// (изключващо "или")bool b10 = (b8 ^ b9);

• Логически операции– Отрицание (логическо „не“)

– Конюнкция (логическо „и“)– Дизюнкция (логическо „или“)– Изключваща дизюнкция (изключващо

„или“)

Page 17: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условия

// закон за двойното отрицание!(!b1) == b1// закон за отрицание на конюнкцията!(b3 && b5) == (!b3 || !b5)// закон за отрицание на дизюнкцията!(b4 || b6) == (!b4 && !b6)// "мързеливо" пресмятане(false && b3 /* && ... */) == false(true || b4 /* || ... */) == true

• Закони на Де Морган– Двойно отрицание– Отрицание на конюнкцията– Отрицание на дизюнкцията

• „Мързеливо“ пресмятане на условията

Page 18: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условия - демо

// Демонстрация

Page 19: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

• Какво е „условен преход“?– Конструкция на езика за програмиране– Позволява изпълнението или неизпълнението на операции в

зависимост от условие– Необходими за реално приложими програми

Page 20: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

// условен преход с едноредов блок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!");}

• Конструкция за условен преход if– Условие– Блок от операции– Ако условието е изпълнено, се

изпълняват съжденията в блока след if

– В противен случай не се изпълнява нищо

Page 21: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Конструкция за условен преход if - демо

// Демонстрация

Page 22: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

// условен преход с elseConsole.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.");}

• Конструкция за условен преход if…else– Условие– Блок от операции при вярно условие– Блок от операции при грешно

условие– Ако условието е изпълнено, се

изпълняват съжденията в блока след if

– В противен случай се изпълняват съжденията в блока след else

Page 23: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Конструкция за условен преход if…else - демо

// Демонстрация

Page 24: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

// вложени условни преходи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.");}

• Вложени конструкции за условен преход– Блокът с операции на конструкция за

условен преход може да съдържа друга конструкция за условен преход

Page 25: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

// Поредица от 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.");

• Вложени конструкции за условен преход– Често прилаган подход: if…else if…

else if…else if…

Page 26: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Вложени конструкции за условен преход - демо

// Демонстрация

Page 27: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

• Конструкция switch-case– Сравнение на израз с няколко различни константи– Прави кода по-четим и по-лесен за поддръжка

Page 28: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

// Конструкция switch-caseConsole.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;}

• Конструкция switch-case– Израз, който се сравнява– Поредица от секции с константа и

съждения, които да бъдат изпълнени при съвпадение

– Задължително прекратяване на изпълнението във всяка секция – break

– Секции с повече от една константа– Секция по подразбиране – при липса

на съвпадение с никоя от константите

Page 29: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Конструкция switch-case - демо

// Демонстрация

Page 30: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

• Условен тернарен оператор– Резултат: една от две възможни стойности според това дали е

изпълнено условие– Прави кода по-кратък, четим и лесен за поддръжка

Page 31: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условни преходи

// условен тернарен оператор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);

• Условен тернарен оператор– Условие– Стойност ако условието е изпълнено– Стойност ако условието не е

изпълнено

Page 32: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Условен тернарен оператор - демо

// Демонстрация

Page 33: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

• Какво е „цикъл“?– Конструкция на езика за програмиране– Позволява многократното изпълнение на една и съща поредица

от операции– Итерация – еднократно изпълнение на операциите в цикъла– Условие за преустановяване на цикъла– Необходими за реално приложими програми

Page 34: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

• Видове цикли– Цикли с предусловие– Цикли с постусловие– Крайни цикли– Безкрайни цикли

Page 35: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// цикъл с предусловие whileConsole.WriteLine( "Commencing countdown.");int counter = 10;while (counter > 0){ Console.WriteLine( "{0}!", counter); counter--;}Console.WriteLine("Launch!");

• Цикъл с предусловие while– Условие– Блок от операции– Условието се проверява преди

изпълнението на итерацията– Нула или повече итерации

Page 36: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикъл с предусловие while - демо

// Демонстрация

Page 37: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// цикъл с постусловие do...whileint age;do{ Console.WriteLine( "How old are you?"); age = int.Parse( Console.ReadLine());}while (age <= 0);

• Цикъл с постусловие do…while– Блок от операции– Условие– Условието се проверява след

изпълнението на итерацията– Една или повече итерации

Page 38: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикъл с постусловие do…while - демо

// Демонстрация

Page 39: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// цикъл forConsole.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);}

• Цикъл for– Инициализация на брояча– Условие– Инкрементиране на брояча– Блок с операции– Условието се проверява преди

изпълнението на итерацията– Инкрементирането се изпълнява

след изпълнението на итерацията– Нула или повече итерации

Page 40: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикъл for - демо

// Демонстрация

Page 41: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// цикъл foreachConsole.WriteLine("Tell me a word.");string word = Console.ReadLine();Console.WriteLine( "The word split into characters:");foreach (char c in word){ Console.WriteLine(c);}

• Цикъл foreach– Променлива за елемент– Изброима колекция от елементи– Блок с операции– Цикълът продължава докато има

неизброени елементи в колекцията– Нула или повече итерации

Page 42: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикъл foreach - демо

// Демонстрация

Page 43: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// управление на циклитеfor (int i = 0; i < 100; i++){ if (i % 3 == 0) continue; Console.WriteLine(i); if (i == 10) break;}

• Управление на циклите– Прекратяване на текущата итерация

– continue– Прекратяване на цикъла – break

Page 44: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Управление на циклите - демо

// Демонстрация

Page 45: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// "безкраен" цикъл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;}

• Безкрайни цикли– Условие, което винаги е истина– Разчита се на прекратяване на

цикъла чрез break– Опасност от „зацикляне“ на

програмата– Могат да се реализират като крайни

цикли– Понякога правят кода по-прост

Page 46: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Безкрайни цикли - демо

// Демонстрация

Page 47: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Цикли

// вложени циклиfor (int i = 1; i < 10; i++){ for (int j = i; j < 10; j++) { Console.Write("{0,2}", j); } Console.WriteLine();}

• Вложени цикли– Блокът с операции на цикъл може да

съдържа друг цикъл– Във всяка итерация на външния

цикъл се изпълнява целият вътрешен цикъл

Page 48: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Вложени цикли - демо

// Демонстрация

Page 49: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Задачи за упражнение

• Създайте програма, в която се въвежда година (цяло положително число) и се извежда съобщение дали тя е високосна или не.

• Създайте програма, в която се въвежда дробно число и след това то се извежда с избран от потребителя брой знаци след десетичната запетая.

• Създайте програма, в която въвежда се цяло положително число и се извежда съобщение дали то е просто или не.

• Създайте програма, в която се въвежда цяло положително число и се извеждат всички прости числа, по-малки или равни на него.

Page 50: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Задачи за упражнение

• Създайте програма, в която се въвежда цяло неотрицателно число n и се извежда факториелът му (n!).

• Създайте програма, в която се въвежда цяло положително число n и се извежда n-тото по ред число от редицата на Фибоначи.

• Създайте програма, в която се въвеждат коефициентите на квадратно уравнение и се намират неговите решения, като се разгледат всички случаи.

• Създайте програма, в която се въвежда поредица от оценки (дробни числа между 2 и 6) на ученици и се извежда средният успех на класа.

Page 51: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Задачи за упражнение

• Създайте конзолно приложение-калкулатор, в което потребителят избира аритметична операция (събиране, изваждане, умножение, деление), въвежда двата операнда (дробни числа) и получава резултата; изпълнението да продължи до избиране на опция за изход вместо аритметична операция.

• Създайте проста текстово-базирана приключенска игра, в която потребителят въвежда текстови команди и след всяка команда получава описание на резултата от нея.

Page 52: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Въпроси?

Page 53: Училищен курс по програмиране на C# (2013/2014), занятие №2

Copyright © 2013 DAVID Holding Company

Благодаря!

• Александър Далемски– [email protected]– Skype: musasho– https://facebook.com/adalemski

• ДАВИД академия– [email protected]– http://acad.david.bg/– @david_academy– https://facebook.com/DavidAcademy