Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,200 views

Published on

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

Published in: Education
  • Finally found a service provider which actually supplies an essay with an engaging introduction leading to the main body of the exposition Here is the site ⇒⇒⇒WRITE-MY-PAPER.net ⇐⇐⇐
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

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

  1. 1. Курс по програмиране на C# Занятие №2 Конзолен вход и изход. Условни преходи. Цикли 2013
  2. 2. Съдържание • • • • • • Конзолни приложения Въвеждане на данни от конзолата Извеждане на данни на конзолата Условия Условни преходи Цикли
  3. 3. Конзолни приложения • Какво е „конзола“? – Съвкупността от физически устройства за въвеждане и визуализиране на информация – Историческо начало и наследство – Конзола в Microsoft Windows
  4. 4. Конзолни приложения • Какво е „конзолно приложение“? – Взаимодействието с потребителя се осъществява през конзолата – Удобни за автоматизирани операции – Прости програми – удобни за навлизане в разработката на съответния език – Неудобни за употреба от потребители (в общия случай)
  5. 5. Конзолни приложения • Конзолни приложения в .NET – Проектен шаблон Console Application – Класът System.Console
  6. 6. Въвеждане на данни от конзолата • Прочитане на един символ • Прочитане на цял ред • Прочитане на клавиш или комбинация от клавиши • Изчакване до натискане на клавиш // прочитане на един символ int i = Console.Read(); char c = Convert.ToChar(i); // прочитане на цял ред string line = Console.ReadLine(); // прочитане на клавиш ConsoleKeyInfo key = Console.ReadKey(); // изчакване до натискане на // произволен клавиш Console.ReadKey(); // изчакване до натискане на Enter Console.ReadLine();
  7. 7. Въвеждане на данни от конзолата - демо // Демонстрация
  8. 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());
  9. 9. Въвеждане на данни от конзолата - демо // Демонстрация
  10. 10. Извеждане на данни на конзолата • Извеждане на низ • Извеждане на число • Извеждане на други примитивни типове данни • Извеждане на произволен обект • Преминаване на нов ред // извеждане на низ Console.Write("Hello World!"); // извеждане на число Console.Write(3.14159265359d); // извеждане на булева стойност Console.Write(true); // извежане на произволен обект object obj = DateTime.Now; Console.Write(obj); // преминаване на нов ред Console.WriteLine(); // нов ред след извеждане на стойност Console.WriteLine(42);
  11. 11. Извеждане на данни на конзолата - демо // Демонстрация
  12. 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);
  13. 13. Извеждане на данни на конзолата - демо // Демонстрация
  14. 14. Условия • Какво е „условие“? – – – – Израз с булев резултат Булеви променливи, константи и литерали Сравнения Логически операции
  15. 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);
  16. 16. Условия • Логически операции – – – – Отрицание (логическо „не“) Конюнкция (логическо „и“) Дизюнкция (логическо „или“) Изключваща дизюнкция (изключващо „или“) // отрицание ("не") bool b7 = !b2; // конюнкция ("и") bool b8 = (b3 && b5); // дизюнкция ("или") bool b9 = (b4 || b6); // изключваща дизюнкция // (изключващо "или") bool b10 = (b8 ^ b9);
  17. 17. Условия • Закони на Де Морган – Двойно отрицание – Отрицание на конюнкцията – Отрицание на дизюнкцията • „Мързеливо“ пресмятане на условията // закон за двойното отрицание !(!b1) == b1 // закон за отрицание на конюнкцията !(b3 && b5) == (!b3 || !b5) // закон за отрицание на дизюнкцията !(b4 || b6) == (!b4 && !b6) // "мързеливо" пресмятане (false && b3 /* && ... */) == false (true || b4 /* || ... */) == true
  18. 18. Условия - демо // Демонстрация
  19. 19. Условни преходи • Какво е „условен преход“? – Конструкция на езика за програмиране – Позволява изпълнението или неизпълнението на операции в зависимост от условие – Необходими за реално приложими програми
  20. 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!"); }
  21. 21. Конструкция за условен преход if - демо // Демонстрация
  22. 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."); }
  23. 23. Конструкция за условен преход if…else - демо // Демонстрация
  24. 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. 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.");
  26. 26. Вложени конструкции за условен преход - демо // Демонстрация
  27. 27. Условни преходи • Конструкция switch-case – Сравнение на израз с няколко различни константи – Прави кода по-четим и по-лесен за поддръжка
  28. 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; }
  29. 29. Конструкция switch-case - демо // Демонстрация
  30. 30. Условни преходи • Условен тернарен оператор – Резултат: една от две възможни стойности според това дали е изпълнено условие – Прави кода по-кратък, четим и лесен за поддръжка
  31. 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);
  32. 32. Условен тернарен оператор - демо // Демонстрация
  33. 33. Цикли • Какво е „цикъл“? – Конструкция на езика за програмиране – Позволява многократното изпълнение на една и съща поредица от операции – Итерация – еднократно изпълнение на операциите в цикъла – Условие за преустановяване на цикъла – Необходими за реално приложими програми
  34. 34. Цикли • Видове цикли – – – – Цикли с предусловие Цикли с постусловие Крайни цикли Безкрайни цикли
  35. 35. Цикли • Цикъл с предусловие while – Условие – Блок от операции – Условието се проверява преди изпълнението на итерацията – Нула или повече итерации // цикъл с предусловие while Console.WriteLine( "Commencing countdown."); int counter = 10; while (counter > 0) { Console.WriteLine( "{0}!", counter); counter--; } Console.WriteLine("Launch!");
  36. 36. Цикъл с предусловие while - демо // Демонстрация
  37. 37. Цикли • Цикъл с постусловие do…while – Блок от операции – Условие – Условието се проверява след изпълнението на итерацията – Една или повече итерации // цикъл с постусловие do...while int age; do { Console.WriteLine( "How old are you?"); age = int.Parse( Console.ReadLine()); } while (age <= 0);
  38. 38. Цикъл с постусловие do…while - демо // Демонстрация
  39. 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); }
  40. 40. Цикъл for - демо // Демонстрация
  41. 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); }
  42. 42. Цикъл foreach - демо // Демонстрация
  43. 43. Цикли • Управление на циклите – Прекратяване на текущата итерация – continue – Прекратяване на цикъла – break // управление на циклите for (int i = 0; i < 100; i++) { if (i % 3 == 0) continue; Console.WriteLine(i); if (i == 10) break; }
  44. 44. Управление на циклите - демо // Демонстрация
  45. 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; }
  46. 46. Безкрайни цикли - демо // Демонстрация
  47. 47. Цикли • Вложени цикли // вложени цикли for (int i = 1; i < 10; i++) – Блокът с операции на цикъл може да { съдържа друг цикъл for (int j = i; j < 10; j++) – Във всяка итерация на външния цикъл се { изпълнява целият вътрешен цикъл Console.Write("{0,2}", j); } Console.WriteLine(); }
  48. 48. Вложени цикли - демо // Демонстрация
  49. 49. Задачи за упражнение • Създайте програма, в която се въвежда година (цяло положително число) и се извежда съобщение дали тя е високосна или не. • Създайте програма, в която се въвежда дробно число и след това то се извежда с избран от потребителя брой знаци след десетичната запетая. • Създайте програма, в която въвежда се цяло положително число и се извежда съобщение дали то е просто или не. • Създайте програма, в която се въвежда цяло положително число и се извеждат всички прости числа, по-малки или равни на него.
  50. 50. Задачи за упражнение • Създайте програма, в която се въвежда цяло неотрицателно число n и се извежда факториелът му (n!). • Създайте програма, в която се въвежда цяло положително число n и се извежда n-тото по ред число от редицата на Фибоначи. • Създайте програма, в която се въвеждат коефициентите на квадратно уравнение и се намират неговите решения, като се разгледат всички случаи. • Създайте програма, в която се въвежда поредица от оценки (дробни числа между 2 и 6) на ученици и се извежда средният успех на класа.
  51. 51. Задачи за упражнение • Създайте конзолно приложение-калкулатор, в което потребителят избира аритметична операция (събиране, изваждане, умножение, деление), въвежда двата операнда (дробни числа) и получава резултата; изпълнението да продължи до избиране на опция за изход вместо аритметична операция. • Създайте проста текстово-базирана приключенска игра, в която потребителят въвежда текстови команди и след всяка команда получава описание на резултата от нея.
  52. 52. Въпроси?
  53. 53. Благодаря! • Александър Далемски – sasho@david.bg – Skype: musasho – https://facebook.com/adalemski • ДАВИД академия – – – – acad@david.bg http://acad.david.bg/ @david_academy https://facebook.com/DavidAcademy

×