3568

Основи мови С#

Лекция

Информатика, кибернетика и программирование

Основи мови С# Створення мови C# Не зважаючи на те, що курс Алгоритмізації та програмування , як одним із своїх компонентів, передбачає реалізацію розроблених алгоритмів на існуючих мовах програмування. Я хотів би зупинитися на деяких особливостях м...

Украинкский

2012-11-03

302 KB

55 чел.

Основи мови С#

Створення мови C#

Не зважаючи на те, що курс Алгоритмізації та програмування , як одним із своїх компонентів, передбачає реалізацію розроблених алгоритмів на існуючих мовах програмування. Я хотів би зупинитися на деяких особливостях мови програмування С#. В подальшому в цьому курсі ми будемо використовувати С# для реалізації розроблених алгоритмів. Чому С#? По перше, кафедра Інформаційних технологій проектування Хмельницького національного університету володіє MSDN підпискою компанії Microsoft, яка дає право легально використовувати досить значний перелік програмних продуктів в навчальному процесі, включаючи Visual Studio .Net. Це право також надається всім студентам і викладачам факультету прикладної математики та комп’ютерних технологій. По друге, завдяки своїм можливостям, мова С# стала найбільш популярною серед професійних програмістів. В цій лекції розглядаються загальні відомості про мову С# та середовище програмування Visual Studio .Net. Ознайомившись з матеріалом, Ви зрозумієте, який потужний інструмент розробки програмних додатків Ви маєте в своїх руках.

Мова С#. є найбільш відомою новинкою в області створення мов програмування. На відміну від 60-х років XX століття - періоду бурхливого мовотворення - у нинішній час мови створюються вкрай рідко. Щоб нова мова одержала визнання, вона повинна дійсно мати принципово нові якості. З'явившись на світло в надрах Microsoft, будучи спадкоємцем C++, вона з перших своїх кроків одержала потужну підтримку. Однак цього явно недостатньо для дійсного визнання переваг мови. Спробуємо розібратися, чи має вона велике майбутнє?

Творцем мови є співробітник Microsoft Андреас Хейлсберг. Він став відомим у світі програмістів задовго до того, як прийшов в Microsoft. Хейлсберг входив до числа провідних розроблювачів однієї із самих популярних середовищ розробки - Delphi. В Microsoft він брав участь у створенні версії Java - J++, так що досвіду в написанні мов і середовищ програмування йому не займати. Як відзначав сам Андреас Хейлсберг, C# створювалася як мова компонентного програмування, і в цьому одне з головних переваг мови, спрямоване на можливість повторного використання створених компонентів. З інших об'єктивних факторів відзначимо наступні:

  •  C# створювався паралельно з каркасом Framework .Net і повною мірою враховує всі його можливості - як FCL, так й CLR;
  •  C# є повністю об'єктно-орієнтованою мовою, де навіть типи, вбудовані в мову, представлені класами;
  •  C# є потужною об'єктною мовою з можливостями спадкування й універсалізації;
  •  C# є спадкоємцем мов C/C++, зберігаючи кращі риси цих популярних мов програмування;
  •  завдяки каркасу Framework .Net, що стали надбудовою над операційною системою, програмісти C# одержують ті ж переваги роботи з віртуальною машиною, що й програмісти Java. Ефективність коду навіть підвищується, оскільки виконавче середовище CLR являє собою компілятор проміжної мови, у той час як віртуальна Java-машина є інтерпретатором байта-коду;
  •  потужна бібліотека каркасів підтримує зручність побудови різних типів додатків на C#, дозволяючи легко будувати Web-служби, інші види компонентів, досить просто зберігати й одержувати інформацію з бази даних й інших сховищ даних;
  •  реалізація, що сполучає побудову надійного й ефективного коду, є немаловажним чинником, що сприяє успіху C#.

Ім'я .Net. Імена нинішнього покоління продуктів від Microsoft супроводжуються закінченням .Net (читається Dot Net), що відбиває бачення Microsoft сучасного комунікативного світу. Комп'ютерні мережі поєднують людей і техніку. Людина, що працює з комп’ютером або використовує мобільний телефон, природно стає частиною локальної або глобальної мережі. У цій мережі використаються різні спеціальні пристрої, починаючи від космічних станцій і кінчаючи датчиками, розташованими, наприклад, у готелях і що посилають інформації про об'єкт всім мобільним пристроям у їхній околиці. У глобальному інформаційному світі комунікативна складова будь-яких програмних продуктів починає відігравати визначальну роль.

У програмних продуктах .Net за цим ім'ям стоїть цілком конкретний зміст, що припускає, зокрема, наявність відкритих стандартів комунікації, перехід від створення автономних додатків до створення компонентів, що допускають повторне використання в різних середовищах і додатках. Можливість повторного використання вже створених компонентів і легкість розширення їхньої функціональності - все це неодмінні атрибути нових технологій. Важливу роль у цих технологіях грає мова XML, що стала стандартом обміну повідомленнями в мережі.

Не намагаючись охопити все різноманіття мережної взаємодії, розглянемо реалізацію нових ідей на прикладі Visual Studio .Net. .

Visual Studio .Net - відкрите середовище розробки

Середовище розробки Visual Studio .Net - це вже перевірений часом програмний продукт, що є сьомою версією Студії. Але новинки цієї версії, пов'язані з ідеєю .Net, дозволяють вважати її принципово новою розробкою, що визначає новий етап у створенні програмних продуктів. Виділю дві найважливіші, на мій погляд, ідеї:

  •  відкритість для мов програмування; 
  •  принципово новий підхід до побудови каркасу середовища - Framework .Net.

Відкритість

Середовище розробки тепер є відкритим мовним середовищем. Це означає, що поряд з мовами програмування, включеними в середовище фірмою Microsoft - Visual C++ .Net (з керованими розширеннями), Visual C# .Net, J# .Net, Visual Basic .Net, - у середовище можуть додаватися будь-які мови програмування, компілятори яких створюються іншими фірмами-виробниками. Таких розширень середовища Visual Studio зроблено вже досить багато, практично вони існують для всіх відомих мов - Fortran й Cobol, RPG й Component Pascal, Oberon й SmallTalk.

Відкритість середовища не означає повної волі. Всі розроблювачі компіляторів, при включенні нової мови в середовище розробки, повинні додержуватися певних обмежень. Головне обмеження, яке можна вважати й головним досягненням, полягає в тому, що всі мови, що включають у середовище розробки Visual Studio .Net, повинні використати єдиний каркас - Framework .Net. Завдяки цьому досягаються багато бажаних властивостей: легкість використання компонентів, розроблених на різних мовах; можливість розробки декількох частин одного додатка на різних мовах; можливість написати клас на одній мові, а його нащадків - на інших мовах. Єдиний каркас приводить до зближення мов програмування, дозволяючи разом з тим зберігати їх індивідуальність і наявні в них переваги. Завдяки єдиному каркасу, Visual Studio .Net у певній мірі вирішує це завдання у світі програмістів.

Framework .Net - єдиний каркас середовища розробки

У каркасі Framework .Net можна виділити два основних компоненти:

  •  статичний - FCL (Framework Class Library) - бібліотеку класів каркаса;
  •  динамічний - CLR (Common Language Runtime) – загальномовне виконавче середовище.

Бібліотека класів FCL - статичний компонент каркаса

Поняття каркаса додатків - Framework Applications - з'явилося досить давно. Незважаючи на те, що каркас був представлений тільки статичним компонентом, уже тоді була очевидна його роль у побудові додатків. Уже в той час найважливіше значення в бібліотеці класів MFC мали класи, що задають архітектуру споруджуваних додатків. Коли розроблювач вибирав один з можливих типів додатка, наприклад, архітектуру Document-View, те в його додаток автоматично вбудовувалися клас Document, що задає структуру документа, і клас View, що задає його візуальне подання. Клас Form і класи, що задають елементи керування, забезпечували єдиний інтерфейс додатків. Вибираючи тип додатка, розроблювач одержував потрібну йому функціональність, підтримувану класами каркаса. Бібліотека класів підтримувала й більше традиційні для програмістів класи, що задають розширену систему типів даних, зокрема, динамічні типи даних - списки, дерева, колекції, шаблони.

За минулі 10 років роль каркаса в побудові додатків істотно зросла - насамперед, за рахунок появи його динамічного компонента, про яке трохи пізніше поговоримо докладніше. Що ж стосується статичного компонента - бібліотеки класів, те й тут за десять років з'явився ряд важливих нововведень.

Єдність каркасу

Каркас став єдиним для всіх мов середовища. Тому, на якій би мові програмування не велася розробка, вона використає класи однієї й тієї ж бібліотеки. Багато класів бібліотеки, що становлять загальне ядро, використовуються всіма мовами. Звідси єдність інтерфейсу додатка, на якій би мові воно не розроблялося, єдність роботи з колекціями й іншими контейнерами даних, єдність зв'язування з різними сховищами даних й інша універсальність.

Убудовані примітивні типи

Важливою частиною бібліотеки FCL стали класи, що задають примітивні типи - ті типи, які вважаються убудованими в мову програмування. Типи мови програмування проектуються на відповідні типи каркаса. Тип, названий у мові Visual Basic - Integer, а в мові C# - int, проектується на той самий тип каркаса System.Int32. У кожній мові програмування, поряд з "рідними" для мови назвами типів, дозволяється користуватися іменами типів, прийнятими в каркасі. Тому, по суті, всі мови середовища розробки можуть користуватися єдиною системою убудованих типів, що, звичайно, сприяє полегшенню взаємодії компонентів, написаних на різних мовах.

Структурні типи

Частиною бібліотеки стали не тільки прості вбудовані типи, але й структурні типи, що задають організацію даних - рядка, масиви, перерахування, структури (запису). Це також сприяє уніфікації й реальному зближенню мов програмування.

Архітектура додатків

Істотно розширився набір можливих архітектурних типів побудови додатків. Крім традиційних Windows- і консольних додатків, з'явилася можливість побудови Web-додатків. Велика увага приділяється можливості створення повторно використовуваних компонентів - дозволяється будувати бібліотеки класів, бібліотеки елементів керування й бібліотеки Web-елементів керування. Популярним архітектурним типом є Web-служби, що стали сьогодні завдяки відкритому стандарту одним з основних видів повторно використовуваних компонентів. Для мов C#, J#, Visual Basic, підтримуваних Microsoft, пропонується однаковий набір з 12 архітектурних типів додатків.

Модульність

Число класів бібліотеки FCL кілька тисяч. Тому знадобився спосіб їхньої структуризації. Логічно класи із близькою функціональністю поєднуються в групи, названі простором імен (Namespace). Для динамічного компонента CLR фізичною одиницею, що поєднує класи й інші ресурси, є зборка (assembly).

Основним простором імен бібліотеки FCL є простір System, що містить як класи, так й інші вкладені простори імен. Так, уже згадуваний примітивний тип Int32 безпосередньо вкладений у простір імен System і його повне ім'я, що включає ім'я простору - System.Int32.

У простір System вкладений цілий ряд інших просторів імен. Наприклад, у просторі System.Collections перебувають класи й інтерфейси, що підтримують роботу з колекціями об'єктів - списками, чергами, словниками. У простір System.Collections, у свою чергу, вкладений простір імен Specialized, що містять класи зі спеціалізацією, наприклад, колекції, елементами яких є тільки рядки. Простір System.Windows.Forms містить класи, використовувані при створенні Windows-додатків. Клас Form із цього простору задає форму - вікно, заповнюване елементами керування, графікою, що забезпечує інтерактивна взаємодія з користувачем.

Загально мовне виконавче середовище CLR - динамічний компонент каркаса

Найбільш революційним винаходом Framework .Net з'явилося створення виконавчого середовища CLR. З її появою процес написання й виконання додатків стає принципово іншим.

Двох етапна компіляція. Керований модуль і керований код

Компілятори мов програмування, включені в Visual Studio .Net, створюють модулі проміжною мовою MSIL (Microsoft Intermediate Language), названому далі просто - IL. Фактично компілятори створюють так званий керований модуль (Portable Executable або PE-файл). Цей файл містить код на IL і мета дані - всю необхідну інформацію як для CLR, так і кінцевих користувачів, що працюють із додатком. Залежно від обраного типу проекту, PE-файл може мати розширення exe, dll, mod або mdl.

PE-файл, що має розширення exe, хоча і є exe-файлом, але це не зовсім звичайний що виконує Windows файл. При його запуску він розпізнається як спеціальний PE-файл і передається CLR для обробки. Виконавче середовище починає працювати з кодом, у якому специфіка вихідної мови програмування зникли. Код на IL починає виконуватися під керуванням CLR (із цієї причини код називається керованим). Виконавче середовище можна розглядати як своєрідну віртуальну IL-машину. Ця машина транслює "на лету" необхідні для виконання ділянки коду в команди реального процесора, що у дійсності й виконує код.

Віртуальна машина

Відділення каркаса від студії з'явилося природним кроком. Каркас Framework .Net перестав бути частиною студії, а став надбудовою над операційною системою. Тепер компіляція й створення PE-модулів на IL відділене від виконання, і ці процеси можуть бути реалізовані на різних платформах. До складу CLR входять транслятори JIT (Just In Time Compiler), які й виконують трансляцію IL у командний код тієї машини, де встановлена й функціонує виконавче середовище CLR. Звичайно, у першу чергу Microsoft реалізувала CLR й FCL для різних версій Windows, включаючи Windows 98/Me/NT 4/2000, 32 й 64-розрядні версії Windows XP і сімейство .Net Server. Для операційних систем Windows CE й Palm розроблена полегшена версія Framework .Net.

В 2001 році ECMA (Європейська асоціація виробників комп'ютерів) прийняла мову програмування C#, CLR й FCL як стандарт, так що Framework .Net уже функціонує на багатьох платформах, відмінних від Windows. Він стає вільно розповсюджуваною віртуальною машиною. Це істотно розширює сферу його застосування. Виробники різних компіляторів і середовищ розробки програмних продуктів стараються тепер також транслювати свій код в IL, створюючи модулі у відповідності зі специфікаціями CLR. Це забезпечує можливість виконання їхнього коду на різних платформах.

Microsoft використовуючи досвід, що одержав широке визнання, віртуальної машини Java, поліпшивши процес за рахунок того, що, на відміну від Java, проміжний код не інтерпретується виконавчим середовищем, а компілюється з урахуванням всіх особливостей поточної платформи. Завдяки цьому створюються високопродуктивні додатки.

Слід зазначити, що CLR, працюючи з IL-кодом, виконує досить ефективну оптимізацію й, що не менш важливо, захист коду. Найчастіше недоцільно виконувати оптимізацію на рівні створення IL-коду - вона іноді може не поліпшити, а погіршити ситуацію, не даючи CLR провести оптимізацію на нижньому рівні, де можна врахувати навіть особливості процесора.

Збирач сміття - Garbage Collector - і керування пам'яттю

Ще однією важливою особливістю побудови CLR є те, що виконавче середовище бере на себе частина функцій, що традиційно входять у ведення розроблювачів трансляторів, і полегшує тим самим їхню роботу. Один з таких найбільш значимих компонентів CLR - збирач сміття (Garbage Collector). Під зборкою сміття розуміється звільнення пам'яті, зайнятий об'єктами, які стали марними й не використаються в подальшій роботі додатка. У ряді мов програмування (класичним прикладом є мова C/C++) пам'ять звільняє сам програміст, у явній формі віддаючи команди як на створення, так і на видалення об'єкта. У цьому є своя логіка - "я тебе породив, я тебе й уб'ю". Однак можна й потрібно звільнити людину від цієї роботи. Неминучі помилки програміста при роботі з пам'яттю важкі по наслідках, і їх украй важко виявити. Як правило, об'єкт віддаляється в одному модулі, а необхідність у ньому виявляється в іншому, далекому модулі. Обґрунтування того, що програміст не повинен займатися видаленням об'єктів, а зборка сміття повинна стати частиною виконавчого середовища, дано досить давно. Найбільше повно воно обґрунтовано в роботах Бертрана Мейера й у його книзі "Object-Oriented Construction Software", перше видання якої з'явилося ще в 1988 році.

В CLR ця ідея реалізована повною мірою. Завдання зборки сміття зняті не тільки із програмістів, але й з розроблювачів трансляторів, вона вирішується в потрібний час й у потрібнім місці - виконавчим середовищем, відповідальної за виконання обчислень. Тут же вирішуються й багато інших питань, пов'язані з використанням пам'яті, зокрема, перевіряються можливі порушення використання "чужої" пам'яті й інших порушень, наприклад, з використанням нетипізованих покажчиків. Дані, що задовольняють вимогам CLR і допускають зборку сміття, називаються керованими даними.

Виняткові ситуації

Що відбувається, коли при виклику деякої функції (процедури) виявляється, що вона не може нормальним чином виконати свою роботу? Можливі різні варіанти обробки такої ситуації. Функція може повертати код помилки або спеціальне значення типу HResult, може викидати виключення, тип якого характеризує виниклу помилку. В CLR прийнято у всіх таких ситуаціях викидати виключення. Побічно це впливає й на мову програмування. Викидання виключень щонайкраще погодиться з виконавчим середовищем. У мові C# викидання виключень, їхнє подальше перехоплення й обробка - основний рекомендований спосіб обробки виняткових ситуацій.

Події

В CLR є своє бачення того, що являє собою тип. Є формальний опис загальної системи типів CTS - Common Type System. Відповідно до цього опису, кожен тип, крім полів, методів і властивостей, може містити й події. При виникненні подій у процесі роботи з тим або іншим об'єктом даного типу посилають повідомлення, які можуть одержувати інші об'єкти. Механізм обміну повідомленнями заснований на делегатах - функціональному типі. Чи треба говорити, що в мову C# вбудований механізм подій, повністю погоджений з можливостями CLR.

Виконавче середовище CLR має потужні динамічні механізми - зборки сміття, динамічного зв'язування, обробки виняткових ситуацій і подій. Всі ці механізми і їхня реалізація в CLR створені на підставі практики існуючих мов програмування. Але вже створене виконавче середовище, у свою чергу, впливає на мови, орієнтовані на використання CLR. Оскільки мова C# створювалася одночасно зі створенням CLR, то, природно, він стала мовою, найбільш погодженою з виконавчим середовищем, і засоби мови прямо відображаються в засоби виконавчого середовища.

Загальні специфікації й сумісні модулі

Уже говорилося, що каркас Framework .Net полегшує міжмовні взаємодії. Для того щоб класи, розроблені на різних мовах, мирно уживались у рамках одного додатку, для їхнього безшовного налагодження й можливості побудови різномовних нащадків вони повинні задовольняти деяким обмеженням. Ці обмеження задаються набором загально мовних специфікацій - CLS (Common Language Specification). Клас, що задовольняє специфікаціям CLS, називається CLS-сумісним. Він доступний для використання в інших мовах, класи яких можуть бути клієнтами або спадкоємцями сумісного класу.

Специфікації CLS точно визначають, яким набором вбудованих типів можна користуватися в сумісних модулях. Зрозуміло, що ці типи повинні бути загальнодоступними для всіх мов, що використають Framework .Net. У сумісних модулях повинні використатися керовані дані й виконуватися деякі інші обмеження. Помітьте, обмеження стосуються тільки інтерфейсної частини класу, його відкритих властивостей і методів. Закрита частина класу може й не задовольняти CLS. Класи, від яких не потрібна сумісність, можуть використати специфічні особливості мови програмування.

Однієї із кращих книг, що докладно висвітлюють цю тему, є книга Джеффри Ріхтера, переведена на російську мову: "Програмування на платформі .Net Framework". Украй цікаво, що для Ріхтера мови є лише надбудовою над каркасом, тому він говорить про програмування, що використає можливості виконавчого середовища CLR і бібліотеки FCL.

Види проектів

Як ми вже відзначали, Visual Studio .Net для мов C#, Visual Basic й J# пропонує 12 можливих видів проектів. Давайте розберемося, як створюються проекти й що вони безпосередньо собою представляють. Поговоримо також про сполучені поняття: рішення (solution), проект (project), простір імен (namespace), зборка (assembly). Розглянемо результати роботи компілятора Visual Studio з позицій програміста, що працює над проектом, і з позицій CLR, що компілює PE-файл у вихідний код процесора.

З погляду програміста, компілятор створює рішення, з погляду CLR - зборку, що містить PE-файл. Програміст працює з рішенням, CLR - зі зборкою.

Рішення містить один або кілька проектів, ресурси, необхідні цим проектам, можливо, додаткові файли, що не входять у проекти. Один із проектів рішення повинен бути виділений і призначений стартовим проектом. Виконання рішення починається зі стартового проекту. Проекти одного рішення можуть бути залежними або незалежними. Наприклад, всі проекти однієї лекції даної книги можуть бути для зручності зібрані в одному рішенні й мати загальні властивості . Змінюючи стартовий проект, одержуємо можливість переходу до потрібного прикладу. Помітьте, стартовий проект повинен мати крапку входу - клас, що містить статичну процедуру з ім'ям Main, що автоматично передається керування в момент запуску рішення на виконання. У вже наявне рішення можна додавати як нові, так й існуючі проекти. Той самий проект може входити в кілька рішень.

Проект складається із класів, зібраних в одному або декількох просторах імен. Простору імен дозволяють структурувати проекти, що містять велику кількість класів, поєднуючи в одну групу близькі класи. Якщо над проектом працює кілька виконавців, то, як правило, кожний з них створює свій простір імен. Крім структуризації, це дає можливість привласнювати класам імена, не замислюючись про їхню унікальність. У різних просторах імен можуть існувати однойменні класи. Проект - це основна одиниця, з якої працює програміст. Він вибирає тип проекту , а Visual Studio створює кістяк проекту відповідно до обраного типу.

Консольний проект

У себе на комп'ютері відкрий встановлену ліцензійну версію Visual Studio .Net 2008, вибери із запропонованого меню - створення нового проекту на C#, установи вид проекту - консольний додаток, дав ім'я проектуProect1, вказав, де буде зберігатися проект. Як виглядає завдання цих установок, показане на рисунках 5.1-3.

Рис. 5.1. Вікно створення нового проекту

Рис. 5.2. Вікно вибору типу проекту

Якщо прийняти ці установки, то компілятор створить рішення, ім'я якого збігається з ім'ям проекту.

Рис. 5. 3 Середовище розробки й консольний додаток, побудований за замовчуванням

Побудоване рішення містить, природно, єдиний заданий нами проектProect1. Наш проект містить у собі папку з посиланнями на системні простори імен з бібліотеки FCL, файл зі значком додатка й два файли з уточненням cs. Файл AssemblyInfo містить інформацію, використовувану в зборці, а файл зі стандартним ім'ям Class1 є побудованим за замовчуванням класом, що задає крапку входу - процедурі Main, що містить для даного типу проекту тільки коментар.

Помітьте, клас проекту занурений у простір імен, що має за замовчуванням те ж ім'я, що й рішення, і проект. Отже, при створенні нового проекту автоматично створюється досить складна вкладена структура - рішення, що містить проект, що містить простір імен, що містить клас, що містить крапку входу. Для простих рішень така структурованість представляється надлишкової, але для складних - вона осмислена й корисна.

Крім розуміння структури рішення, варто також розібратися в трьох важливих елементах, включених у початковий проект - пропозиція using, теги документації в коментарях й атрибути.

Простору імен може передувати одне або кілька пропозицій using, де після ключового слова потрібна назва простору імен - з бібліотеки FCL або із проектів, пов'язаних з поточним проектом. У цьому випадку задається простір імен System - основний простір імен бібліотеки FCL. Пропозиція using Name полегшує запис при використанні класів, що входять у простір Name, оскільки в цьому випадку не потрібно щораз задавати повне ім'я класу із вказівкою імені простору, що містить цей клас. Трохи пізніше ми побачимо це на прикладі роботи із класом Console простору System. Помітьте, повне ім'я може знадобитися, якщо в декількох використовуваних просторах імен є класи з однаковими іменами.

Всі мови допускають коментарі. В C# допускаються однорядкові й багаторядкові коментарі. Перші починаються із двох символів косої риски. Весь текст до кінця рядка, що випливає за цією парою символів, (наприклад, "//будь-який текст") сприймається як коментар, що не впливає на виконання програмного коду. Початком багаторядкового коментарю є пара символів /*, а кінцем - */.

Скажемо ще кілька слів про крапку входу - процедурі Main. Її заголовок можна безболісно спростити, видаливши аргументи, які, як правило, не задаються. Вони мають сенс, коли проект викликається з командного рядка, дозволяючи за допомогою параметрів задати потрібну стратегію виконання проекту.

Такий консольний проект, побудований за замовчуванням. Функціональності в нього небагато. Його можна скомпілювати, вибравши відповідний пункт із меню build. Якщо компіляція пройшла без помилок, то в результаті буде зроблена зборка й з'явиться ЕХE-файл у відповідній папці Debug нашого проектa. Додаток можна запустити натисканням відповідних клавіш (наприклад, CTRL+F5) або вибором відповідного пункту з меню Debug. Додаток буде виконано під керуванням CLR. У результаті виконання з'явиться консольне вікно із пропозицією нажати будь-яку клавішу для закриття вікна.

Злегка змінимо проект, побудований за замовчуванням, додамо в нього свій код і перетворимо його в класичний проект вітання. Нам знадобляться засоби для роботи з консоллю - читання з консолі (клавіатури) і виводу на консоль (дисплей) рядка тексту. Бібліотека FCL надає для цих цілей клас Console, серед численних методів якого є методи ReadLine й WriteLine з очевидною семантикою. Код проекту, отриманий у результаті:

Лістинг 5.1.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Proect2

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Уведіть Ваше ім'я");

string name;

name = Console.ReadLine();

if (name == "")

Console.WriteLine("Добрий день, світ!");

else

Console.WriteLine("Добрий день, " + name + "!");

}

}

}

На цьому ми закінчимо перше знайомство із проектом на C# й у наступних лекціях приступимо до систематичного вивчення можливостей мови.


 

А также другие работы, которые могут Вас заинтересовать

57897. Додавання натуральних чисел 1.78 MB
  Мета навчальна: удосконалення вміння виконувати додавання натуральних чисел, формувати вміння застосовувати переставну та сполучну властивості додавання, розв’язувати задачі на додавання натуральних чисел.
57898. Геометричні перетворення: паралельне перенесення, осьова симетрія, центральна симетрія 984.5 KB
  Навчити учнів виконувати перетворення фігур на площині застосовувати властивості геометричних перетворень до розв’язування задач. Перетворення допомагають художникам правильно будувати композиції картин а хімікам – досліджувати структуру кристалів.
57899. РОЗВ’ЯЗУВАННЯ РАЦІОНАЛЬНИХ РІВНЯНЬ 170 KB
  Мета: вдосконалити знання і вміння учнів розв’язувати раціональні рівняння; розвивати різні види мислення самостійність творчість екологічну культуру; виховувати активність увагу наполегливість винахідливість; прищеплювати любов до рідного краю.
57900. Решение систем уравнений второй степени 185.5 KB
  Задание: При каких значениях параметра а система уравнений имеет три решения Решение: парабола y= x2 будет иметь с окружностью x2 y2 = 4 три общие точки только в случае а = 2. Теоретический опрос по вопросам: Что называется системой...
57901. Систематизація та узагальнення знань, вмінь і навичок 183.5 KB
  Мета уроку: навчальна складова: систематизувати та узагальнити знання учнів з вивченого навчального матеріалу вміння та навички учнів застосовувати вивчене до розв’язування задач передбачених програмою...
57902. ПЛОЩІ + ІСТОРІЯ + ДИЗАЙН = КРАСА 312.5 KB
  Сьогодні на уроці ми познайомимося з професіями паркетник та дизайнер інтер’єру Паркетник-фахівець з укладання паркету в приміщеннях. План уроку Знайомство з історичними фактами: а історія паркету; б історія візерунків Росія...
57903. Тригонометричні функції будь-якого кута 878 KB
  Повторити властивості тригонометричних функцій закріпити навички співвідносити градусну та радіанну міру кута та знаходити значення тригонометричних функцій будьякого кута при обчислюванні значень виразів що містять тригонометричні функції з урахуванням їх властивостей.
57904. Функції. Узагальнення і систематизація вивченого матеріалу 539 KB
  Мета: узагальнити і систематизувати знання учнів з теми Квадратична функція; закріпити вміння і навички учнів використовувати набуті під час вивчення теми знання для розв’язування вправ і задач розвивати увагу учнів логічне мислення творчу активність...
57905. Показательная функция. Показательные уравнения и неравенства 854.5 KB
  Цели: Обобщить, расширить и углубить знания учащихся по изученной теме Развивать творческие способности, умения самостоятельно добывать знания, активизировать познавательную деятельность, формировать навыки коллективной работы.