середа, 28 лютого 2018 р.

Починаємо вивчати C#. Змінні, оператор присвоювання та арифметичні операції.

Комп'ютерну програму можна розглядати як послідовність команд. Ми пишемо програму на мові програмування C#. Почнемо вивчати команди і конструкції цієї мови.
Для цього напишемо програму, яка розв'язує рівняння виду
ax =  b
де a і  b - деякі задані числа, а x - число, яке необхідно знайти.
Як відомо (із шкільної математики), розв'язок такого рівняння знаходиться за формулою
x = b/a
Напишемо програму, яка рахує x за цією формулою.
Запускаємо Студію і відкриваємо наше "app" рішення. (Меню File -> Open -> Project/Solution... в відкрившомуся діалозі вибираємо наш файл app.sln і нажимаємо Open.)

Якщо необхідно створити нове рішення, то вибираємо меню File->New->Project. Відкриється вікно New project. В цьому вікні зліва вибираємо Installed->Visual C#->Windows Classic Desktop, далі вибираємо із списку Console App (.NET Framework). Далі задаємо ім'я проекту (App), робочу папку (в цій папці будуть створені  файли рішення і проекту) і ім'я рішення (solution).
Якщо не відкрилося вікно Solution Explorer, вибираємо меню View -> Solution Explorer, вікно Solution Explorer стане видимим. В цьому вікні в проекті app вибираємо файл Program.cs - цей файл відкриється в редакторі.
Файл, який автоматично створила для нас Студія, виглядає так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }


Наша програма починає виконуватись з першої стрічки, яка йде за
 static void Main(string[] args)
{
З цього місця почнемо писати наш код (послідовність команд).

Перша конструкція, яка нам необхідна - це змінна.

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

Змінна в C#:

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

Змінна в C# декларується наступним чином: пишемо тип змінної а потім ім'я змінної. В кінці ставимо ";".
Наприклад, запис
     double a; 
декларує змінну "a" типу "double"
"double" зберігає числа з плаваючою  точкою. Зараз ми можемо вважати такі числа звичайними числами виду 5.23, 123.456 і так далі.

Наступна конструкція, яку ми будемо використовувати для розв'язку рівняння - це оператор присвоювання.

Оператор присвоювання наказує компілятору побудувати код, який запише в певну змінну певні дані.
Виглядає це так:
  a = 123.45;
Ця команда записує в змінну a число 123.45. Таким чином, після виконання цієї команди в пам'яті, яка відповідає змінній a, будуть зберігатися данні, які представляють число 123.45

Зверніть увагу, що оператор присвоювання в C# має зовсім інший зміст, ніж знак "=" в математиці.
В математиці "=" означає твердження, що дві сутності (наприклад, два числа) рівні.
На мові C# оператор (команда) "=" - це команда записати певні дані в певне місце в пам'яті комп'ютера.

Далі нам потрібно буде виконати обчислення.
Для обчислень ми будемо використовувати арифметичні оператори.
Як видно з формули для знаходження кореня рівняння ax = b,
x = b/a
нам  треба виконати операцію ділення. В C# для операції ділення використовується символ "/".
Також існують операції множення ("*"), додавання ("+"), віднімання ("-") та інші. Символи, які використовуються для арифметичних операцій, підібрані так, щоб, з одного боку, вони були схожі на відповідні математичні символи, а з іншого боку, ці символи присутні на клавіатурі і  вираз можна записати в один рядок  Пізніше я більш детально розповім про вирази в C#.

Зараз нам потрібно виконати операцію ділення.
Виглядає це так:

  double a;
  double b;
  double с;
  a = 10;
  b = 2;
  c = a/b;
Для останнього рядка компілятор побудує код, який прочитає число із змінної "a" (точніше, прочитає число із того місця в пам'яті, яке відповідає змінній "a"), прочитає число із змінної "b", відніме від першого числа друге і запише результат в змінну "c".

Коментарі.

Часто буває зручно прямо в тексті програми написать коментар, який буде пояснювати код.
В C# любий текст після "//" і до кінця рядка є коментарем. Коментар може містити любий текст і не впливає на роботу програми.
Наприклад:

  double a; // тут можна писать все, що нам треба.
  // це теж коментар, який не впливає на роботу програми
  double b;

Тепер у нас є все необхідне, щоб написати нашу програму.
Наш код буде виглядати так:
 static void Main(string[] args)
{
  double a; // резервуємо місце в пам'яті
  a = 2;    // записуємо в це місце число "2"
  double b;
  b = 10;   // Записуємо в змінну "b" число "10"
  

  double x;
  x = b / a;
  
  Console.WriteLine(x);  // виводимо результат
  Console.ReadLine();    // чекаємо на "Enter"
}

 
Запускаємо програму (меню Debug -> Start Debugging)
Відкриється консоль, в якій ми побачимо результат, число 5.




А так виглядає наша програма в Студії:



Звичайно, ця програма дуже далека від програм, які використовуються на практиці.
В цій програмі безліч недоліків. Вона розв'язує цілком конкретне рівняння. Для того, щоб розв'язати інше рівняння (інші значення "a" і "b"), необхідно змінити програму. Наш код виглядає громіздким. Якщо b буде рівним нулю, то наша програма аварійно завершиться.
По мірі вивчення можливостей C# наші програми ставатимуть кращими.

середа, 19 жовтня 2016 р.

Рішення і проекти.

Давайте подивимось на структуру файлів, які створила Студія для нашої програми.
Запустимо Провідник (File Explorer) і перейдемо в нашу робочу папку "app". В цій папці Студія створила файл "app.sln" і іншу папку "app".
Відкриємо цю папку "app". В ній знаходиться декілька папок і декілька файлів. Перш за все звернемо увагу на файл "Program.cs". Це текстовий файл який можна відкрити любим редактором текстів, наприклад, Блокнотом. Відкривши цей файл Блокнотом, ми бачимо, що він містить текст нашої програми, цей текст ми вже редагували в Студії.
Також в папці "app" є файл "app.csproj". Це файл проекту нашої програми. Це теж тектовий файл, але спеціального виду, написаний за спеціальними правилами. Подібний формат файлу називається "XML". Файл проекту містить всю інформацію, яка необхідна Студіі для того, щоб з набору файлів створити програму.
Крім всього іншого, файл проекту містить  перелік файлів, з яких Студія будує програму. Це можна побачити, відкривши файл "app.csproj" блокнотом і пошукавши там "Program.cs": це буде щось подібне на
<Compile Include="Program.cs" />
Але не пробуйте щось змінити в файлі проекту, використовуючи Блокнот або інший текстовий редактор: фай проекту має певну структуру, і якщо його неправильно відредагувати, Студія не зможе з ним працювать.


Також, якщо наша програма вже запускалась із Студії, в папці "app" буде знаходитись папка "bin". В цій папці Студія створює нашу програму, яку можна скопіювати на інший компьютер (з установленою .NET) і там її використовувати.
Відкриемо папку "bin". В ній буде папка "Debug", а в павці "Debug" буде наша програма "app.exe", яку можна запустити прямо з Провідника.

Вернемось назад в папку "app", в якій знаходиться файл "app.sln". Файл "app.sln" - це теж текстовий файл спеціальної структури, який мастить список проектів і деяку додаткову інформацію. Цей файл називається "solution" файл. Термін "solution" можна перекласти з англійської мови як "рішення" - вирішення якогось завдання.
Тобто, структура файлів, які використовує Студія, приблизно така:
  • Файл "solution", має розширення "sln" - це текстовий файл спеціальної структури, який містить список проектів, з якого складається "рішення" і деяку додаткову інформацію.
  • Проекти. Як правило, проекти створюються в окремих папках. Проект складається з набору файлів, всі ці файли перераховані в файлі проекту. В нашому випадку є тільки один ароект, файли якого містяться в папці "app", а вся інформація про те, як з файлів проекту побудувати програму, міститься в файлі "app.csproj".
Для того, щоб продовжити працювати над нашою програмою, запустимо Студію і відкриемо в Студії файл, який описує наше рішення - app.sln. Запускаємо Студію, в меню "File" вибираємо "Open -> Project/Solution...", в відкрившомуся вікні знаходимо і вибираємо наш файл "app.sln" і нажимаємо "Open" (Відкрити). Студія прочитає цей файл і загрузить дані для всіх проектів в цьому рішенні (у нас є лише один проект "app.csproj").

Якщо в меню View вибрати Solution Explorer, Студія відкриє вікно, в якому можна побачити, з чого складається наше рішення і проекти, які в нього входять.



Якщо вибрати файл Program.cs, то Студія відкриє цей файл і можна буде його редагувати.

пʼятниця, 19 серпня 2016 р.

Трохи теорії

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

  1. Записати перше число з оперативної пам'яті в певне місце в пам'яті процесора.
  2. Записати друге число з оперативної пам'яті в певне (інше) місце в пам'яті процесора.
  3. Виконати команду "додати два числа".
  4. Записати результат з певного місця в пам'яті процесора в оперативну пам'ять.
Як видно, сама проста операція вимагає виконати декілька кроків.

Тому роблять по-іншому: спочатку пишуть програму на спеціальній мові програмування. Потім запускають спеціальну програму (компілятор), яка опрацьовує файл з тектом програми, написаним на цій мові програмування, і створює програму (послідовність чисел), яку вже може виконувати комп'ютер.

Тепер повернемося до того, що ми зробили, коли написали нашу програму.
Ми дали команду Студії створити по шаблону текст програми на мові C#. Файл з цим текстом записаний на диску в нашій робочій папці. Щоб побачити цей файл, можна запустити провідник, перейти в нашу робочу папку (в мене це папка "CS" в корені диску "D:"), там перейти в папку "app" (це назва нашого solution), там перейти в папку "app" (це ім'я нашої програми) і там буде файл "Program.cs". Це звичайний текстовий файл. Якщо відкрити цей файл блокнотом, то ми побачимо текст нашої програми, такий самий, який ми бачили в Студії.

Коли ми запускали нашу програму (в меню Debug -> Start Debugging), Студія спочатку запустила прогаму-компілятор, яка з нашого тексту створила програму, яку може виконувати комп'ютер, а потім Студія запустила цю створену програму.
Цю програму можна запустити без Студії. Якщо перейти в папку "bin", потім в папку "debug", ми там побачимо файл "app.exe". Цей файл можна запустити прямо з Провідника, виділивши його і нажавши "Enter".

Насправді, все дещо складніще, але для розуміння суті поки що досить такого спрощеного пояснення.

середа, 10 серпня 2016 р.

Перша програма

Напишемо нашу першу програму.
Студія містить набір шаблонів, які дозволяють швидко створити програму. Зараз я опишу кроки, які треба виконати, щоб створити нашу програму. Потім я поясню, що в нас вийшло.
  1. Запускаємо Студію.
  2. Вибираємо меню "File" -> "New" -> "Project"
  3.  Відкриється вікно "New Project". В цьому вікні із списку шаблонів вибираємо "Console Application". Цей шаблон знаходиться в папці Installed/Templates/Visual C#/Windows
    В поле Name (Ім'я) пишемо ім'я нашої програми. Нехай це буде "app".
    В поле Location пишемо нашу робочу папку. В цій папці будуть створені файли, які необхідні для нашої програми. Я використовую папку "CS" в корені диску "D:". Ви можете використовувати будь-яку іншу папку.
    В поле Solution Name пишемо назву для нашого Solution, Я пізніше поясню, що це таке, зараз можна просто написати таке саме ім'я, як і для програми, "app"
  4. Нажимаємо "OK". Студія по вибраному шаблону створить програму і відкриє файл з кодом цієї програми.
Зараз ця створена за шаблоном програма майже нічого не робить. Якщо її запустити, то відкриеться консольне вікно, яке зразу ж закриється і програма завершиться.

Змінимо нашу програму так, щоб вона виводила якийсь текст в консольне вікно і чекала, поки не буде натиснута клавіша "Enter".
Після фігурної дужки, яка йде після
static void Main(string[] args)
добавимо наступні команди:

Console.WriteLine("Some text");
Console.ReadLine();

Тепер текст програми має виглядати так:

Запустимо цю програму.
Для цього виберемо меню Debug -> Start Debugging:

Відкриється консольне вікно, в це вікно буде виведений текст "Some text" і програма буде очікувати на ввод даних. Якщо нажати "Enter", програма завершиться.

Далі я розповім, що саме ми зробили і як це працює.

пʼятниця, 24 квітня 2015 р.

З чого почати

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

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

Нам буде потрібний комп'ютер з Windows і Visual Studio.  Visual Studio - це інструмент для написання програм. Офісні документи можна створювати в Microsoft Word, малюнки можна робити в Adobe Photoshop, для бухгалтерії можна використовувати 1С. А для створення програм можна використовувати Microsoft Visual Studio.
Microsoft Visual Studio - це професійний інструмент, який коштує досить дорого. На щастя, Microsoft створив спеціальну версію Visual Studio, яка безкоштовна і яку можна використовувати для навчання (і не тільки для навчання).

Цю версію можна загрузити з сайту Microsoft Visual Studio.
Адреса сайту:
www.visualstudio.com
Там знаходимо Visual Studio Community і нажимаємо кнопку "Download" ("Скачать") і зберігаємо файл в якусь папку на диску (краще створити якусь нову папку, в якій ми будемо працювати).
Коли файл буде загружений, запускаємо "Провідник" (Explorer), ідемо в цю папку і запускаємозагружений файл.
Далі виконуємо вказівки програми.
Через деякий час (який залежить від швидкості з'єднання з Internet) Visual Studio буде встановлена.