Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
26.03.2016
Размер:
1.4 Mб
Скачать

Операційні системи і системне програмування

Лекція 3. Базові типи даних, змінні

3.1. Змінні

3.2. Тип цілочисельних даних

3.3. Тип даних з плаваючою точкою

3.4. Десятковий тип даних

3.5. Перші програми

3.6. Логічний тип даних

3.7. Оператор for

3.8. Символьні типи даних

3.8.1. Тип char

3.8.2. Тип string

Створимо додаток app1.cs. Вигляд його приведений в лістингу 3.1.

Лістинг 3.1

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace App1

{

class Program

public static void Main(string[] args)

{

Console.WriteLine("Hello World!");

decimal a;

decimal b = a;

// TODO: Implement Funcionality Here

Console.Write("Для продовження натисніть будь-яку клавішу");

Console.ReadKey(true);

}

}

}

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

Перші декілька рядків згори, початок яких помічений символами /*, а кінець - символами */ - це коментар до програми. При компіляції цієї програми компілятор коментарі не розглядає. Якщо коментар займає більше одного рядка, то користуються відміченими вище парами символів, поміщаючи текст коментаря в ці "дужки". Якщо ж коментар поміщається в один рядок, то можна застосовувати іншу його форму: поміщати в початок тексту коментаря символи //. Але можна і для одного рядка застосовувати пару /*...*/. Коментар потрібний не лише для пояснення тексту програми. Їм широко користуються при налаштуванні програми, виключаючи з його допомогою окремі фрагменти програми, щоб потім, видаливши символи коментаря, відновити відключений коментарем текст програми. Зрозуміло, що замість автоматично сформованого коментаря програміст може вставляти свої пояснення.

Нижче коментаря йде рядок (а їх насправді може бути багато) using System;. Це говорить про те, що середовище програмування обов'язково підключає до створюваного застосування набір системних програмних засобів, частина з яких може знадобитися програмісту при створенні додатка. Наприклад, можуть знадобитися засоби вводу-виводу даних, роботи з базами даних, графічні засоби і т. п. Простір System містить повний набір таких засобів а програміст потім вже в ході створення своєї програми буде виділяти із System потрібні йому підпростори і брати з них потрібні йому засоби. Наприклад, підпростір Console, який містить в собі засоби консольного вводу-виводу, т. т. вводу-виводу без графічного інтерфейсу, а тільки використовуючи консольне вікно.

Далі в шаблоні нашого застосування присутній рядок namespace app1, який є заголовком створюваного додатка (програми). Фактично це заголовок блоку рядків, поміщених між відкриваючою і закриваючою фігурними дужками (першою і останньою).

Чому перед найменуванням додатка стоїть слово namespace, поки не станемо уточнювати. Запам'ятаємо тільки, що створюване застосування завжди поміщається в простір імен (так переводиться це слово), якому автоматично присвоюється ім'я самого застосування. Можна це самостійно змінити на інше.

У блок, з іменем namespace app1, входить блок (обмежений своєю парою фігурних дужок), названий class Program. У C# застосування оформляється не як попало, а у вигляді спеціальної структури - класу, а сама, власне програма, задається як член цієї структури зі своїм заголовком (в даному випадку - це public static void Main(string[] args) ) і своїм блоком рядків, поміщених у фігурні дужки. Тобто, вже розглядаючи простий шаблон додатка, ми бачимо його чітку структуру: множина вкладених одну в одну підструктур (як у матрьошки).

У справжньому додатку, а не іграшковому, який ми розглядаємо, буває багато структур типу класу, і компілятору потрібно буде відрізняти при компіляції додатка, що відноситься до власне програми, а що - до "не програми".

Подивімося на заголовок програми. Нас цікавить ключове слово Main. Будь-яка програма повинна розпочинатися з цього слова. Main означає "головний". Це - точка входження в програму, місце, з якого розпочне виконуватися програма. Компілятор по цьому ключовому слову якраз і задасть адресу в пам'яті, починаючи з якої програма запуститься на виконання. Конструкція Main оформлена у вигляді елемента мови, званого функцією. Ми цей елемент розглядатимемо пізніше. Відмітимо, що ознакою функції, за якою компілятор її відрізняє від інших елементів програми, є, відкриваюча і закриваюча круглі дужки, усередині яких задаються (а можуть і не задаватися) параметри функції. Взагалі уся програма - це набір функцій, вкладених у Main, тому загальна, така, що містить усі інші функції програма і дістала назву головної. У нашому випадку в заголовку програми Main() - далі вже писатимемо, як годиться для позначення функції - є набір параметрів. Параметри служать для взаємодії цієї програми з іншими (які теж починаються з Main()) шляхом обміну даними через ці параметри. Цей процес ми розглядати не станемо. Тому, кому заважає вигляд заголовка програми із зазначенням параметрів, може їх видалити, залишивши заголовок тільки з Main():

public static void Main()

Компілятор "лаятися" не буде.

Якщо тепер подивитися на тіло самої функції Main(), те в ньому відображено наступне (вказано у вигляді коментаря):

Console.WriteLine("Hello World"!); // Виведення рядка "Hello World"! у консольне вікно

// TODO: Implement Functionality Here - тут мають бути оператори застосування, які задають

// функціональність самого додатка, т. т. що додаток повинен робити

Console.Write("Press any key to continue ..."); /* Виводиться в консольне вікно повідомлення "Press any key to continue ... " (натисніть будь-яку клавішу для продовження) */

Console.ReadKey(true); // Затримка зображення на екрані

Пояснимо. Коли відбувається виведення в консольне вікно, рядки пробігають по екрану, і після останнього виведеного рядка екран зникає т. т. виводити більше нічого, і програма завершується. Тому ви не побачите нічого, окрім як чорну смужку, що промайнула. Отже, екран потрібно затримати перед закриттям, щоб можна було подивитися результати виведення. Для цього штучно примушують програму чекати введення будь-якого символу з клавіатури. Щойно такий символ буде введений, екран закриється. А до цього розглядайте екран скільки захочете. Тому перед затримкою екрану виводиться повідомлення, щоб користувачеві було зрозуміло, що далі робити, коли він хоче продовжити роботу програми. І ще. У консольне вікно повідомлення можна виводити як латинським шрифтом, так і кирилицею.

При розгляді наступних прикладів нам доведеться користуватися консольними засобами вводу-виводу. Тому відразу уточнимо, як вони працюють. Відмітимо, по-перше, що усі ці засоби - це функції (пишуться у вигляді імені з параметрами в круглих дужках). По-друге усі ці засоби знаходяться в спеціальній структурі під назвою Console, яка входить в загальну систему System. Щоб відмітити (для компілятора), куди входять засоби вводу-виводу, їх імена пишуться через точку від імені їх предка Console. І ще. Весь ввід-вивід для консолі представляється у вигляді потоку символів (т. т. символи передаються на пристрої вводу-виводу по одному один за одним. З врахуванням цього:

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

  • Write(параметр - рядок тексту). Робить те ж, що і WriteLine(), але не формує символа переведення рядка і повернення каретки. Якщо застосовувати декілька разів підряд цей засіб виведення, то рядки, що виводяться на екран поміщатимуться один за одним без переходу на новий рядок. Іноді це буває корисно.

  • ReadLine(). Забезпечує введення рядків з клавіатури (говорять: видає дані з вхідного потоку, поки не буде натиснута клавіша <Enter>). Введений рядок поміщає у визначену користувачем змінну (про це див. далі).

  • Read(). Вводить один символ з клавіатури. Введений символ поміщає у визначену користувачем змінну (про це див. далі).