1.1 Початкові поняття
Чим відрізняються російський, американський і єврейський форуми?
- на американському форумі ви задаєте питання і вам дають відповідь
- на єврейському форумі ви задаєте питання і вам задають зустрічне запитання
- російською форумі ви задаєте питання і вам довго пояснюють чому ви такий мудак.
Сучасні мови програмування взагалі і C # зокрема приховують багато низькорівневі особливості роботи комп'ютерів, так що детально розбиратися в особливостях роботи регістрів процесора і тому подібної зауми новачкові не треба (99% програмістів теж). Але деякі речі варто тримати в голові.
Що таке мова програмування? Це мова, яку розуміє комп'ютер. (Ваш Капітан Очевидність) Але насправді комп'ютер розуміє тільки нулі і одиниці. Так що будь-який сучасний мову програмування насправді проміжний - після того як ви напишете програму, він переводиться на справжню мову комп'ютера - компілюється. Таким чином спочатку ми пишемо програму на мові програмування в звичайному текстовому файлі, потім компілліруем в подвійна мова комп'ютера.
С # в цьому плані ще складніше - спочатку ваша програма на C # перекладається в спеціальний проміжний мову - байт-код. після чого вже цей проміжний мову перекладається в двійковий код. Проміжний мова розрахований на спеціальний набір проміжних програм, які треба встановити на комп'ютер перед запуском програми на C # - .Net Framework.
Схема роботи .Net і C #
Таким чином, ми:
1. Пишемо код на мові C # в звичайний текстовий файл
2. Компілюємо програму в байт-код за допомогою компілятора C # (1 і 2 можна робити без Visual Studio, наприклад набрати вихідний текст в Блокноті і скомпілювати через командний рядок)
3. Запускаємо отриману програму на комп'ютері, де вже встановлено .Net Framework відповідної версії), який переводить програму в двійковий код і власне запускає, даючи доступ до комп'ютера. (Відповідно на комп'ютері без Net Framework програма не запуститься взагалі).
Перейдемо до практики, для створення найпростішої програми ми запустимо Visual Studio і виконаємо наступне:
1. Підемо в меню File-New Project (Файл - Новий проект) або відразу кликнемо на Create New Project
2. Виберемо шаблон Console Application (Консольне додаток)
3. Виберемо каталог на диску, де буде розташований наш проект
4. Додамо дві строчки в текст програми, щоб він виглядав ось так
4. Натиснемо F5 (можна вибрати в меню Debug - Start Debugging) і побачимо чорне віконце з нашим Привіт світ, яке закриється після натискання Enter.
Що це і навіщо воно треба? У теорії це програма без кнопок і меню, якою можна керувати за допомогою командного рядка. У наш час такі програми використовуються рідко, в основному дуже просунутими сисадмінами або в світі Linux (що в принципі одне й те саме), але знати про їхнє існування корисно - програмісту може довести з такою працювати або навіть писати. Нам вона потрібна по одній-єдиній причині - така програма найменше буде відволікати від вивчення універсальних особливостей мови C #.
У найпростішому випадку (це про нас) комп'ютер послідовно виконує команди програміста - одну за одною:
System.Console.WriteLine ( "Привіт світ!"); - виводить в консоль (те саме чорне вікно) рядок "Привіт світ" "
System.Console.ReadLine (); - читає рядок, яку ми вводимо (введення завершується натисканням Enter) і переходить до наступної команди.
Так як такої команди немає, програма завершує роботу і закриває вікно.
1.3 Прості змінні
Зазвичай програми використовуються для зберігання і обробки якоїсь інформації. Наприклад Список покупців магазину, співробітників фірми або героїв і монстрів в комп'ютерній грі. При роботі програми все її дані зберігаються в змінних. Змінні і сама програма зберігаються в оперативній пам'яті.
Змінну можна розглядати як ящик або сумку для даних. Одного разу зробивши такий ящик ми можемо класти в нього різні речі. Само собою на нижньому рівні абсолютно всі дані зберігаються у вигляді нулів і одиниць, але мови високого рівня приховують від нас непотрібні складності. Під кожен тип даних - рядок, число, картинку - потрібен ящик відповідного типу, ви ж не будете складати гроші, сірники, бензин і кошенят в одну і ту ж коробку. Так що у кожної змінної є тип, який треба вказати при її створенні. Тип одночасно описує і розмір змінної - скільки даних в неї можна скласти.
Є мови програмування, в яких змінні не діляться на типи. Що відбувається з кошенятами в такому випадку ви дізнаєтеся трохи пізніше, в розділі про обробку помилок.
- int. ціле число від -2,147,483,648 до 2,147,483,647
- string. рядок
- double. число з дробової частиною і змінним кількістю знаків після коми, наприклад 1.38 приймає значення від -1,79769313486232 в 308 ступеня до +1,79769313486232 в 308 ступеня. Простіше кажучи дуже великі.
- decimal. число з дробової частиною і підвищеною точністю розрахунків, спеціально для фінансових операцій - в мільйонних і більш дрібних частках float можуть накопичуватися дрібні помилки, банки це не люблять
- bool - спеціальний тип для передачі даних про істинність або хибність, приймає тільки два значення - true або false. У старих мовами замість нього використовували int з значеннями 1 і 0, але це було менш наочно і призводило до помилок.
Як вже говорилося вище дуже часто програми обробляють дані про людей. Спробуємо це зробити і ми.
Не забудьте запустити по F5 і подивитися результати.
Тут ми оголошуємо дві змінні-рядки, залишаємо їх поки порожніми, оголошуємо набір змінних з даними про людей, склеюємо з них одну велику рядок і заносимо в першу змінну-рядок, заносимо в той же самий набір змінних інші дані, склеюємо все разом і заносимо в інший рядок і тільки після цього виводимо дві фінальні рядки на екран.
Варто звернути увагу на склеювання декількох рядків в одну за допомогою +. Більше інформації можна знайти тут. докладний опис всіляких знущань над рядками - тут.
1.4 Арифметичні операції
Комп'ютери майже завжди щось вважають. Власне саме слово computer означає обчислювач. У цій області навіть найслабший процесор набагато перевершує людський мозок.
Чому сталося таке дивне непорозуміння з дробовим числом вдруге? Вся справа в тому, що всередині одного рядка ми виконали відразу кілька операцій. А в якому порядку вони виконуються? В порядку пріоритету. І у оператора присвоювання =, який записує дані в змінну, цей пріоритет один з найнижчих
Спочатку виповнилося розподіл двох цілочисельних змінних a і b і тільки після цього цілий результат ділення записався в дробову змінну doubleResult.
Невеликий відступ:
У подальших прикладах коду мається на увазі, що ви самостійно вставите їх всередину
1.5 Управління та логіка
На даний момент наша програма не відрізняється розумом - Скайнет з неї не вийде, знищення людству не загрожує. Ми просто виконуємо команди по черзі, одну за одною, а хотілося б приймати рішення в залежності від зовнішніх умов - наприклад "якщо є можливість, знищити всіх людей, інакше працювати над створенням такої можливості". Робиться це з за допомогою спеціальної конструкції якщо-інакше, або, на рідному для C # англійською if-else і спеціальних операторів порівняння:
- - величина зліва більше
- = - менше або дорівнює і більше або дорівнює
- == - просто одно, зверніть увагу, що рівність дуже схоже на оператор присвоювання, який записує значення в змінну = - не плутайте їх, рівність - це подвійне "дорівнює"
- != - не дорівнює
- та інші
Комп'ютерна логіка проста - висловлювання або результат порівняння може бути або істиною або брехнею, або true або flase, або знищувати людство чи ні. Третього комп'ютера не дано. Для зберігання таких даних існує спеціальний тип даних - логічний - bool - який може приймати тільки два значення (здогадуєтеся які?). Якщо ви хочете чогось складніша і похардкорней - то все разом це булева алгебра. вивчайте і просвіщати.
Нам важливо зрозуміти, що будь-яка операція порівняння, на приклад 2
Навігація по публікаціям
Швидше за все у вас або проблеми з середовищем розробки або ви неточно скопіювали текст. Якщо ви повідомите точні дані - середовище розробки, точний текст помилки, можливо зможемо вам чимось допомогти.
Так само хочу висловити Вам вдячність за Ваші труди. Працюю менеджером проекту (web-розробка), хочу освоїти ази сучасного програмування, щоб бути в "темі" при спілкуванні з розробниками-підрядниками. Для цих цілей, ваші уроки - саме те. Хоча зізнаюся, мені за 30 і ООП дається нелегко (до цього останній раз коділ на Паскалі ще 10 років тому в інституті).
Пишіть ще!
static void Main (string [] args)?
System.Console.WriteLine ( "New Project")
System.Console.ReadLine ();
>
static void Main (string [] args)?
там де я поставила питання, там знайшло помилку якусь. пише:
очікувався клас, делегат, перерахування, інтерфейс або структура.
писала в MonoDevelop.
Ретельно перевірте код до і після, таке враження що загублена фігурна дужка або щось в цьому роді. Про всяк випадок на всякий випадок додав до статті повний код Program.cs.
Якщо не допоможе, то треба враховувати, що цей код (static void Main (string [] args)) генерітся Visual Studio при створенні нового консольного проекту. Можу тільки порадити створити новий консольний проект в MonoDevelop, можливо там є якісь відмінності в настройках проекту і вже в нього вставляти власне код прикладу виводить текст в консоль - я в цьому середовищі приклади не тестував.
ні; після виведення тексту на консоль.
Thank's! Дуже допомогло, для початківців саме те!
Ось мій корявий код, не розумію, чому програма пише помилку The name 'abee' does not exist in the current context?
for (int abee = 1; abee <= 100; abee++);
int a3 = abee% 3;
int a5 = abee% 5;
if (a3 == 0 a5! = 0)
System.Console.WriteLine ( "Fizz");
>
if (a5 == 0 a3! = 0)
System.Console.WriteLine ( "Buzz");
>
if (a3 == 0 a5 == 0)
System.Console.WriteLine ( "FizzBuzz");
>
if (a3! = 0 a5! = 0)
int result = abee.ToString ();
System.Console.WriteLine (abee);
>
>
System.Console.ReadLine ();
Вирішив освоїти С #, відмінний сайт.
Мій варіант коду передбачає одноразову перевірку кратності
for (int counter = 1; counter <= 100; counter++)
int reminder3 = counter% 3;
int reminder5 = counter% 5;
if (reminder3 == 0)
if (reminder5 == 0)
System.Console.WriteLine (counter + "FizzBuzz");
>
else
System.Console.WriteLine (counter + "Fizz");
>
>
else
if (reminder5 == 0)
System.Console.WriteLine (counter + "Buzz");
>
else
System.Console.WriteLine (counter);
>
>
Я може щось не розумію, але:
У тексті є запис: логічне І - оператор - вовращает істину тільки в тому випадку, якщо і праворуч і ліворуч від нього буде істина, у всіх інших випадках буде брехня.
далі:
якщо є армія І є енергія - напасти на людство. При використанні оператора нападу не відбудеться якщо немає енергії чи ні армії.
Так ось незрозуміло чому в такому випадку в коді:
boolVar1 = true;
boolVar2 = false;
if (boolVar1 boolVar2)
System.Console.WriteLine ( "повернувся true логічне І для true і false");
При - true false - повертає true?
Прошу вибачення)) Все зрозумів)