Самоучитель по C# для начинающих. 01. Основы языка, переменные, логика, циклы.

1.1 Начальные понятия

Данный самоучитель рассчитан на людей, совершенно не знакомых с программированием, но способных скачать, установить и запустить программу - в данном случае Visual Studio 2010 (2008,2012). В первой части я кратко расскажу о основах языка C#. Формат самоучителя подразумевает краткое и упрощенное изложение - за подробностями касательно отдельных функций и классов обращайтесь в гугл и msdn, за продвинутыми методиками программирования в продвинутые книги. В принципе почти всю информацию можно найти в интернете, надо лишь знать что искать, так что в отличие от классических книг на несколько сотен страниц я буду давать ту основу, зная которую вы уже сможете сформулировать поисковый запрос - ни в одном разделе я сознательно не даю полной и исчерпывающей информации, ее место в документации. Крайне желательно знать английский язык хотя бы на уровне чтения со словарем - в англоязычном интернете информации на порядок больше, невероятно полезные сайты вроде StackOverflow не имеют русских аналогов, а русскоязычные форумы и обсуждения чаще всего напоминают знаменитый анекдот (под американским форумом можно смело понимать англоязычный с немцами, индусами и бразильцами):

Чем отличаются русский, американский и еврейский форумы?
- на американском форуме вы задаете вопрос и вам дают ответ
- на еврейском форуме вы задаете вопрос и вам задают встречный вопрос
- на русском форуме вы задаете вопрос и вам долго объясняют почему вы такой мудак.


Современные языки программирования вообще и C# в частности скрывают многие низкоуровневые особенности работы компьютеров, так что детально разбираться в особенностях работы регистров процессора и тому подобной зауми новичку не надо (99% программистов тоже). Но некоторые вещи стоит держать в уме.

Что такое язык программирования? Это язык, который понимает компьютер. (ваш Капитан Очевидность) Но на самом деле компьютер понимает только нули и единицы. Так что любой современный язык программирования на самом деле промежуточен - после того как вы напишете программу, он переводится на настоящий язык компьютера - компилируется. Таким образом сначала мы пишем программу на языке программирования в обычном текстовом файле, потом компиллируем в двоичный язык компьютера.

С# в этом плане еще сложней - сначала ваша программа на C# переводится в специальный промежуточный язык - байт-код, после чего уже этот промежуточный язык переводится в двоичный код. Промежуточный язык рассчитан на специальный набор промежуточных программ, которые надо установить на компьютер перед запуском программы на C# - .Net Framework.

Схема работы .Net и C#

Схема работы .Net и C#

Таким образом мы:

1. Пишем код на языке C# в обычный текстовый файл

2. Компилируем программу в байт-код с помощью компилятора C# (1 и 2 можно делать без Visual Studio, например набрать исходный текст в Блокноте и скомпилировать через командную строку)

3. Запускаем полученную программу на компьютере, где уже установлен .Net Framework соответствующей версии), который переводит программу в двоичный код и собственно запускает, давая доступ к компьютеру. (соответственно на компьютере без Net Framework программа не запустится вообще).

1.2 Привет мир

Перейдем к практике, для создания самой простой программы мы запустим Visual Studio и выполним следующее:

1. Пойдем в меню File-New Project (Файл - Новый проект) или сразу кликнем на Create New Project

Создание нового проекта в Visual Studio

2. Выберем шаблон Console Application (Консольное приложение)

Консольное приложение

3. Выберем каталог на диске, где будет расположен наш проект

4. Добавим две строчки в текст программы, чтобы он выглядел вот так

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

namespace TestConsoleApplication
{
	class Program
	{
		static void Main(string[] args)
		{
			System.Console.WriteLine("Привет мир!");
			System.Console.ReadLine();
		}
	}
}

4. Нажмем F5 (можно выбрать в меню Debug - Start Debugging ) и увидим черное окошко с нашим Привет мир, которое закроется после нажатия Enter.

Консольный Привет мир

Что это и зачем оно надо? В теории это программа без кнопок и меню, которой можно управлять через командную строку. В наше время такие программы используются редко, в основном очень продвинутыми сисадминами или в мире Linux (что в принципе одно и то же), но знать об их существовании полезно - программисту может довестись с такой работать или даже писать. Нам она нужна по одной-единственной причине - такая программа меньше всего будет отвлекать от изучения универсальных особенностей языка C#.

В самом простом случае (это про нас) компьютер последовательно выполняет команды программиста - одну за другой:

System.Console.WriteLine("Привет мир!"); - выводит в консоль (то самое черное окно) строку "Привет мир""

System.Console.ReadLine(); - читает строку, которую мы вводим (ввод завершается нажатием Enter) и переходит к следующей команде.

Так как следующей команды нет, программа завершает работу и закрывает окно.

1.3 Простые переменные

Обычно программы используются для хранения и обработки какой-то информации. Например списока покупателей магазина, сотрудников фирмы или героев и монстров в компьютерной игре. При работе программы все ее данные хранятся в переменных. Переменные и сама программа хранятся в оперативной памяти.

Переменную можно рассматривать как ящик или сумку для данных. Однажды сделав такой ящик мы можем класть в него разные вещи. Само собой на нижнем уровне абсолютно все данные хранятся в виде нулей и единиц, но языки высокого уровня скрывают от нас ненужные сложности. Под каждый тип данных - строку, число, картинку - нужен ящик соответствующего типа, вы ведь не будете складывать деньги, спички, бензин и котят в одну и ту же коробку. Так что у каждой переменной есть тип, который надо указать при ее создании. Тип одновременно описывает и размер переменной - сколько данных в нее можно сложить.

Есть языки программирования, в которых переменные не делятся на типы. Что происходит с котятами в таком случае вы узнаете чуть позже, в разделе про обработку ошибок.

Некоторые из простых типов данных в C#

- 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, но это было менее наглядно и приводило к ошибкам.

И многие другие типы.

Как уже говорилось выше очень часто программы обрабатывают данные о людях. Попробуем это сделать и мы.

static void Main(string[] args)
{
	string stringToShow1, stringToShow2;   

	string surname = "Шульженко";
	string name = "Олег";
	string otchestvo = "Васильевич";

	int age = 40;
	double weight = 88.73;

	stringToShow1 = surname + " " + name + " " + otchestvo + ", возраст " + age + ", вес " + weight;

	surname = "Чугунов";
	name = "Александр";
	otchestvo = "Игоревич";

	age = 23;
	weight = 66;

	stringToShow2 = surname + " " + name + " " + otchestvo + ", возраст " + age +  ", вес " + weight;

	System.Console.WriteLine(stringToShow1);
	System.Console.WriteLine(stringToShow2);

	System.Console.ReadLine();
}

Не забудьте запустить по F5 и посмотреть результаты.

Здесь мы объявляем две переменные-строки, оставляем их пока пустыми, объявляем набор переменных с данными о людях, склеиваем из них одну большую строку и заносим в первую переменную-строку, заносим в тот же самый набор переменных другие данные, склеиваем все вместе и заносим в другую строку и только после этого выводим две финальные строки на экран.

Стоит обратить внимание на склеивание нескольких строк в одну с помощью +. Больше информации можно найти здесь, подробное описание всевозможных издевательств над строками - здесь.

1.4 Арифметические операции

Компьютеры почти всегда что-то считают. Собственно само слово computer означает вычислитель. В этой области даже самый слабенький процессор намного превосходит человеческий мозг.

        static void Main(string[] args)
        {
            int a = 5;
            int b = 2;
            System.Console.WriteLine("a =  " + a + ", b = " + b);

            int result = a + b;
            System.Console.WriteLine("Сложение, a + b =  " + result);

            result = a * b;
            System.Console.WriteLine("Умножение, a * b =  " + result);

            result = a / b;
            System.Console.WriteLine("Деление, a / b =  " + result + " a и  b - целые числа, деление только нацело");

            double resultDouble = a / b;
            System.Console.WriteLine("Деление, a / b =  " + resultDouble + " все равно что-то не так...");

            double aDouble = 5;
            resultDouble = aDouble / b;
            System.Console.WriteLine("Деление, a / b =  " + resultDouble);

            System.Console.ReadLine();
        }

Почему произошло столь странное недоразумение с дробным числом во второй раз? Все дело в том, что внутри одной строки мы выполнили сразу несколько операций. А в каком порядке они выполняются? В порядке приоритета. И у оператора присваивания =, который записывает данные в переменную, этот приоритет один из самых низких

Сначала выполнилось деление двух целочисленных переменных a и b и только после этого целый результат деления записался в дробную переменную doubleResult.

Вот здесь можно найти официальный список всех операторов (не только арифметических) языка C#, сгруппированных в порядке убывания приоритета - верхняя группа выполняется первой. Более простую и наглядную табличку легко находит гугл.

Небольшое отступление:
В дальнейших примерах кода подразумевается, что вы самостоятельно вставите их внутрь

static void Main(string[] args)
{

}

1.5 Управление и логика

На данный момент наша программа не отличается умом - Скайнет из нее не получится, уничтожение человечеству не грозит. Мы просто выполняем команды по очереди, одну за другой, а хотелось бы принимать решения в зависимости от внешних условий - например "если есть возможность, уничтожить всех людей, иначе работать над созданием такой возможности". Делается это с с помощью специальной конструкции если-иначе, или, на родном для C# английском if-else и специальных операторов сравнения:

  • < - величина слева меньше
  • > - величина слева больше
  • <= и >= - меньше либо равно и больше либо равно
  • == - просто равно, обратите внимание, что равенство очень похоже на оператор присваивания, который записывает значение в переменную = - не путайте их, равенство - это двойное "равно"
  • != - не равно
  • и другие

Компьютерная логика проста - высказывание или результат сравнения может быть либо истиной либо ложью, либо true либо flase, либо уничтожать человечество либо нет. Третьего компьютеру не дано. Для хранения таких данных существует специальный тип данных - логический - bool - который может принимать только два значения (догадываетесь какие?). Если вы хотите чего-то посложней и похардкорней - то все вместе это булева алгебра, изучайте и просвещайтесь.

Нам важно понять, что любая операция сравнения, на пример 2 < 4 на самом деле вычисляет логическое значение типа bool, которое может принимать только два значения. И уже им будет руководствоваться компьютер, выполняя нашу программ.

bool boolVariable = true;

if (boolVariable)
{
	System.Console.WriteLine("boolVariable = true; --- Истина!");
}
else
{
	System.Console.WriteLine("boolVariable = false; Ложь!");
}

System.Console.WriteLine();

boolVariable = false;

if (boolVariable)
{
	System.Console.WriteLine("boolVariable = false; Истина!");
}
else
{
	System.Console.WriteLine("boolVariable = false; Ложь!");
}

boolVariable = 2 < 4;

if (boolVariable)
{
	System.Console.WriteLine("boolVariable = 2 < 4; Истина!");
}
else
{
	System.Console.WriteLine("boolVariable = 2 < 4; Ложь!");
}

if (10 != 100)
{
	System.Console.WriteLine("10 != 100! Ваш капитан очевидность!");
}

System.Console.WriteLine();

System.Console.ReadLine();

Сделать поведение программы еще более сложным нам помогут специальные логические операторы, которые сравнивают две логические величины (каждая из которых может быть либо истиной либо ложью)

- логическое И - оператор && - вовращает истину только в том случае, если и справа и слева от него будет истина, во всех остальных случаях будет ложь

- логическое ИЛИ - оператор || - возвращает истину если хоть одна из двух величин истинна. Ложь он вернет только если обе логические величины ложны

Ну например - если есть армия И есть энергия - напасть на человечество. При использовании оператора && нападения не произойдет если нет энергии или нет армии. А вот при использовании || глупая железяка попытается напасть даже если у нее нету армии, или эта армия лежит мертвой грудой без топлива и электричества.

bool boolVar1 = true;
bool boolVar2 = true;

if (boolVar1 && boolVar2)
{
	System.Console.WriteLine("Вернуло  true логическое И для true и true");  
}
if (boolVar1 || boolVar2)
{
	System.Console.WriteLine("Вернуло true логическое ИЛИ для true и true");
}

boolVar1 = true;
boolVar2 = false;

if (boolVar1 && boolVar2)
{
	System.Console.WriteLine("Вернуло  true логическое И для true и false");
}
if (boolVar1 || boolVar2)
{
	System.Console.WriteLine("Вернуло true логическое ИЛИ для true и false");
}

System.Console.WriteLine();
System.Console.ReadLine();

1.6 Комментарии

До этого момента наши тестовые программки были просты до идиотизма. Теперь они начнут усложняться. Настоящие программы бывают сложными. Очень сложным. На самом деле самая трудная часть работы программиста - это не написать новую программу, а понять уже написанную, найти в ней ошибки, исправить их или что-то поменять, не сделав новых (!). Понимание программы очень облегчают комментарии - заметки прямо в коде, которые игнорирует компьютер. Они только для высшего разума - людей. Кроме того их часто используют для того, чтобы временно отключить часть программы не удаляя уже написанного кода - так и говорят, закомментировать.

bool boolVar1 = true;

/*
многострочный коментарий
сейчас используется редко из-за встроенных функций Visual Studio
*/

bool boolVar2 = true;

//однострочный комментарий

На практике многострочные комментарии в Visual Studio чаще всего ставятся с использованием специальной функции - у нее есть и кнопка и собственная горячая клавиша

комментирование в Visual Studio

Получаем вот такой код, который можно раскомментировать с помощью соседней кнопки

//if (boolVar1 && boolVar2)
//{
//    System.Console.WriteLine("Вернуло  true логическое И для true и true");  
//}
//if (boolVar1 || boolVar2)
//{
//    System.Console.WriteLine("Вернуло true логическое ИЛИ для true и true");
//}

1.7 Циклы

Наша программа уже может что-то решать... но как-то убого она это делает, каждый чих надо прописывать вручную. А ведь настоящие роботы славятся своей способностью повторять любые действия неограниченное количество раз не зная усталости и сомнений! Делают они это с помощью циклов - специальных конструкций для программирования повторяющихся действий.

Самый простой цикл просто заставляет компьютер повторять какое-то действие, пока не выполнится какое-то логическое (см. выше!) условие. В C# такой цикл называется while

//считаем до семи
int counter = 1;
while (counter <= 7)
{
	System.Console.WriteLine("Значение счетчика: " + counter);
	counter++;
}
System.Console.ReadLine();

Обратите внимание: если условие не выполнится никогда, компьютер будет выполнять заданное действие вечно - это называется зацикливанием.

Можете проверить это утверждение закомментировав строку counter++; - программа будет работать бесконечно, так как counter никогда не будет равен 7. Придется прекратить ее работу вручную, закрыв окно.

Делать что-то заданное количество раз приходится так часто, что для этого случая придумали специальный цикл, ведь лень - это двигатель прогресса. Я имею в виду цикл for.

С его помощью даже самый простой цикл из предыдущего примера станет еще проще

            //считаем до семи
            for (int counter = 1; counter <= 7; counter++)
            {
                System.Console.WriteLine("Значение счетчика: " + counter);
            }
            System.Console.ReadLine();

В знаменитой статье Почему программисты не умеют программировать автор приводит следующие данные - большинство выпускников программистских вузов не могут написать очень простую программу - которая выведет на на экран числа от 1 до 100, вместо кратных 3 выведет Fizz, вместо кратных 5 выведет Buzz, вместо кратных и трем и пяти FizzBuzz (это в Америке такая обучающая игра для детей). На самом деле единственная сложность в такой задаче - вспомнить школьное определение кратности. Число кратно 3 если остаток от целочисленного (без учета дробной части) деления этого числа на 3 равен нулю. Осталось выяснить, как вычислить остаток от целочисленного деления. Это делает оператор %.

В итоге получаем совсем простую программу, то ли в Америке так плохо учат, то ли автор статьи преувеличивает, то ли большинству программистов никогда не понадобилось знание того, что такое остаток от целочисленного деления.

            for (int counter = 1; counter <= 100; counter++)
            {
                int reminder3 = counter % 3;
                int reminder5 = counter % 5;

                if (reminder3 == 0 && reminder5 == 0)
                {
                    System.Console.WriteLine("FizzBuzz");
                }
                else if (reminder3 == 0)
                {
                    System.Console.WriteLine("Fizz");
                }
                else if (reminder5 == 0)
                {
                    System.Console.WriteLine("Buzz");
                }
                else
                {
                    System.Console.WriteLine(counter);
                }
            }
            System.Console.ReadLine();

Опытный программист может заметить, что одно из условий if лишнее и код можно сделать более коротким с использованием простого трюка - если число делится и на 3 и на 5, то можно просто выводить сначала Fizz потом Buzz, автоматически склеивая их в одну строку и не проверяя отдельно на предмет кратности и 3 и 5. Так как все в этом мире имеет свою цену, то более короткий код также будет менее понятным. В данном примере различие невелико, но в промышленном программировании со сложными и большими программами в большинстве случаев важна именно понятность кода.

            for (int counter = 1; counter <= 100; counter++)
            {
                int reminder3 = counter % 3;
                int reminder5 = counter % 5;
                string  result = "";

                if (reminder3 == 0)
                {
                    result += "Fizz";
                }
                if (reminder5 == 0)
                {
                    result += "Buzz";
                }
                if (reminder3 != 0 && reminder5 != 0)
                {
                    result = counter.ToString();
                }
                System.Console.WriteLine(result);
            }
            System.Console.ReadLine();

consoleTest-02


Комментарии

Самоучитель по C# для начинающих. 01. Основы языка, переменные, логика, циклы. — Комментарии (75)

  1. Ведомир: Уточните, какой именно код и в каких именно условиях.

    предпоследний код пишет нельзя использовать else

    • Прямо сейчас создал в Visual Studio 2010 новое консольное приложение, вставил туда код из предпоследнего примера и все прекрасно скомпилировалось и заработало.

      Скорее всего у вас либо проблемы со средой разработки либо вы неточно скопировали текст. Если вы сообщите точные данные - среда разработки, точный текст ошибки, возможно сможем вам чем-то помочь.

      • Visual Studio 2017 вообще нет графы консольное приложение. Где его искать???

        • У меня тоже было такое. Но проблема ушла то ли после установки какого-то дополнения, то-ли после обновления .NET Framework до 4.6.1. Сам толком не понял.
          При создании нового проекта в левой верхней части окна, в разделе Установленные/Visual S#/Классический рабочий стол Windows, появится консольное приложение.

  2. Делал все примеры, которые тут указаны, все прекрасно работает. Использую MonoDevelop. Было пару тормозов, но они связаны с моей невнимательностью. Чертова точка с запятой(;) =)
    ----------------
    P.S. Это первый ресурс Интернета, который реально помогает освоиться в языке C#, ну по крайней мере для меня. Пересмотрел кучу разных сайтов, учебников, статей, но так и не находил для себя доступную информацию простым языком, где для вас разжуют и положат в ротик. Формально на этом сайте это и происходит. Я благодарю автора, за столь понятный и усваиваемый материал.

    • Спасибо. Такие комментарии придают сил для написания новых статей и развития сайта, так как пока он держится на чистом энтузиазме и трупе жестоко убитой лени.

    • Материал совершенно бессмысленный! Совершенно не сходится с реалиями Visual Studio.

  3. Согласен с Владом. Збс блог, автор молодец. Пиши ещё. Буду учить ЯП по твоим изложениям. Доступней материал пока не находил.

  4. Спасибо автору,учу язык используя справочник Шилдта, но именно после прочтения этого блога ,многие детали стали действительно понятны.

  5. Спасибо за простое изложение!Для новичка-это,то что доктор прописал!)))

  6. Учусь на программиста, очень туго всё дается, с Вами все так просто и легко, спасибо Вам большое! Сайт в закладки!

  7. Спасибо! Все очень просто и понятно! Особенно аналогии с армией и энергией)
    Очень понравились примеры и комментарии)

  8. Великолепно, щикарная подача материала!

    Если б еще эту страничку месяца на три пораньше нашел... =/

    Спасибо большое!

  9. Огромное спасибо Ведомир, за Ваш сайт. Второй день начал изучать программирование, случайно попал на Ваш сайт. Он дает надежду людям в освоении этой профессии!

  10. Ребятки спасибо за материал, очень хорошо объясняете!
    Кстати, среда Visual у меня на рабочем компе недоступна для компилирования, только текстовый редактор. Но Net.Framework установлен, и в нем же присутствует копилятор C#.
    Вообщем, тренируюсь так (может кому пригодится):
    В одной папочке лежит файлик с кодом C#, и в этой же папке bat-файл, который натравливает компилятор на файлик с кодом.
    Так выглядит бат-файл (без кавычек):
    "c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe d:\C_Sharp_trainings\test.cs
    pause"
    Здесь же появляются скопилированные exe'шники.
    Всем счастья!)

  11. Прекрасный сайт!! Все доступно и понятно! Весь интернет перерыл, но такого замечательного ресурса. Автору спасибо большое!!

  12. Так же хочу выразить Вам благодарность за Ваши труды. Работаю менеджером проекта (web-разработка), хочу освоить азы современного программирования, чтобы быть в "теме" при общении с разработчиками-подрядчиками. Для этих целей, ваши уроки - самое то. Хотя признаюсь, мне за 30 и ООП даётся не легко (до этого последний раз кодил на паскале еще 10 лет назад в институте).
    Пишите еще!

  13. 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, возможно там есть какие-то отличия в настройках проекта и уже в него вставлять собственно код примера выводящий текст в консоль - я в этой среде примеры не тестировал.

  14. Вот мой корявый код, не понимаю, почему программа пишет ошибку 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 abee = 1; abee <= 100; abee++); которая разделяет код на два блока for (int abee = 1; abee <= 100; abee++); // после точки с запятой это уже отдельный блок не связанный с if { // код внутри скобок }

  15. Решил освоить С#, отличный сайт.
    Мой вариант кода предполагает одноразовую проверку кратностей

    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);
    }
    }

  16. Спасибо автору, правда. Все разжевал, и предоставил информацию в развернутом виде. Четко и понятно)

  17. Я может что-то не понимаю, но:
    В тексте есть запись: логическое И - оператор && - вовращает истину только в том случае, если и справа и слева от него будет истина, во всех остальных случаях будет ложь.

    Далее:
    если есть армия И есть энергия - напасть на человечество. При использовании оператора && нападения не произойдет если нет энергии или нет армии.

    Так вот непонятно почему в таком случае в коде:
    boolVar1 = true;
    boolVar2 = false;

    if (boolVar1 && boolVar2)
    {
    System.Console.WriteLine("Вернуло true логическое И для true и false");
    При - true && false - возвращает true?

  18. Хорошее изложение материала, все описано доступно и понятно. Большое спасибо автору за труд. Хочу предложить автору в конце каждой "главы" делать легкие закрепляющие материал задачки наподобие fizzbuzz. Во всяком случае, после статьи я занялся поиском и решением подобных вещиц.

  19. Добрый день! У меня 2 ошибки на втором задании. Куда можно отправить скрин? Это мое первое знакомство с программированием.!

  20. Привет. Спасибо за сайт. Нужна помощь.
    В Visual Studio при компиляции(?) вся кириллица типа " Шульженко Олег Васильевич" заменяется знаками вопроса ?????????? ???? ????????.
    Спасибо.

    • C++ , существует специальная команда (подключаешь include ) , наверняка в C# такое же/

  21. :-)))) про форумы ну просто в точку !!!!
    Чем отличаются русский, американский и еврейский форумы?
    - на американском форуме вы задаете вопрос и вам дают ответ
    - на еврейском форуме вы задаете вопрос и вам задают встречный вопрос
    - на русском форуме вы задаете вопрос и вам долго объясняют почему вы такой мудак.
    на русских форумах даже спрашивать ничего поэтому не хочеться.

  22. Отличный ресурс!!! Но после первого урока остается смутная тревога: все ли в порядке будет с котятами?

    • Переделаешь с VB>NET в C#, это не сложно

      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim N As Integer
      Dim Rezultat As Double = -1
      Dim Deystvie As Boolean = True ' true +, false -
      Dim Znak_deystviya As String

      TextBox1.Text = "-1 "

      For N = 2 To 10 'вместо 10 любое число

      'это для вывода в текстовое поле
      If Deystvie Then Znak_deystviya = "+" Else Znak_deystviya = "-"
      TextBox1.Text &= Znak_deystviya & " 1/" & N & " "
      Deystvie = Not Deystvie

      'цикл, который тебе нужен (Mod - остаток от деления, в C# - %)
      If N Mod 2 = 0 Then ' если делится на 2 без остатка, то сложить
      Rezultat += 1 / N
      Else ' иначе отнимаем
      Rezultat -= 1 / N
      End If

      Next

      'опять для вывода в текстовое поле
      TextBox1.Text &= "= " & -1 + 1 / 2 - 1 / 3 + 1 / 4 - 1 / 5 + 1 / 6 - 1 / 7 + 1 / 8 - 1 / 9 + 1 / 10

      'ответ
      MsgBox(Rezultat)

      End Sub

  23. Большое спасибо - у Вас прямо педагогический талант, либо огромная практика по обучению. Все ясно и понятно.

  24. Если автор не педагог - он сделал большую ошибку, не пойдя в преподаватели.

  25. ГОСПОДИ! ПРОСТО СПАСИБО ВАМ!
    Один из немногих сайтов, который понятно объясняет С#
    После вашего урока, я уже умею делать очень простенькие коды, хотя после изучения кода, например в программе "SoloLearn", я нефига не понимал.

  26. Не могу войти в Start Page Microsoft VisualStudio!Cразу перебрасывает где надо создавать проекты!

  27. В примере обработка данных о людях у кого выходит ошибка необходимо исправить код:
    using System;
    class program {
    static void Main ()
    {
    string stringToShow1, stringToShow2;

    string surname = "Шульженко";
    string name = "Олег";
    string otchestvo = "Васильевич";

    int age = 40;
    double weight = 88.73;

    stringToShow1 = surname + " " + name + " " + otchestvo + ", возраст " + age + ", вес " + weight;

    surname = "Чугунов";
    name = "Александр";
    otchestvo = "Игоревич";

    age = 23;
    weight = 66;

    stringToShow2 = surname + " " + name + " " + otchestvo + ", возраст " + age + ", вес " + weight;

    System.Console.WriteLine(stringToShow1);
    System.Console.WriteLine(stringToShow2);

    System.Console.ReadLine();
    }
    }

  28. На счет 'даже самый слабенький процессор привосходит человечиский мозг' вы ошиблись, человечиский мозг обрабатывает в сотни-тысячи раз больше информации чем любой самый мощный процессор

  29. Поделюсь, может пригодится кому :) Школа Русаковой проводит интенсив по английскому, 3 дня всего 500 рублей - http://marinarus.autoweboffice.ru/?r=ac&id=3619. Цена реально низкая, обычно программы у них дорого стоят. Участвовал в одной, платил 20 000 тыс.

  30. Здравствуйте!
    Вам необходимы новые заказы?
    Привлекаем клиентов в Ваш бизнес, с помощью рассылки в формы обратной связи.

    Несколько преимуществ при сотрудничестве с нами:

    - Приятные цены - нам выгодно, чтобы клиент получал прибыль, значительно превышающую цену рассылки и заказывал опять

    - Все максимально прозрачно:
    Предоставим скриншоты из программы, с подробными отчетами о результатах рассылки, подтверждающие выполнение обязательств с нашей стороны.

    - В отличии от большинства наших конкурентов, оплата ТОЛЬКО за УСПЕШНО доставленные сообщения.

    Напишите нам сейчас и получите бонус, в виде бесплатного составления оффера для Вашей рассылки
    Наш E-mail: nenbupojar1977@mail.ru

    P.S. Извините за беспокойство, если мы с Вами уже сотрудничаем.

Добавить комментарий для Виктор Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>