Основы программирования. Базовые понятия для новичков

Иосиф Дзеранов, 2023

Автор этой книги – Иосиф Дзеранов, инженер-разработчик со стажем более 10 лет, сооснователь и преподаватель онлайн-школы BeeGeek, четвертьфиналист чемпионата мира по олимпиадному программированию ACM ICPC.Эта книга – увлекательное путешествие в мир программирования. Вы начнете с базовых понятий и основных конструкций, перейдете к интересным задачам и кейсам, а к концу книги сможете создать свой собственный мини-проект. Книга подходит для любого уровня подготовки.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Основы программирования. Базовые понятия для новичков предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

2.

Типы данных. Переменные

2.1

Ввод-вывод информации. Типы данных

Console.WriteLine

Мы уже знаем, что выводить строки можно с помощью команды Console.Write(). Есть еще похожая команда Console.WriteLine(). Она не только выводит строку,

но и переводит после этого курсор в консоли на новую строку.

Для лучшего понимания рассмотрим два примера.

static void Main(string[] args)

{

Console.Write("Hello"); // вывод

Console.Write("World!"); // вывод

}

Получим строку:

HelloWorld!

Дело в том, что после команды

Console.Write("Hello");

курсор в консоли остается на той же строке. Туда же вторая команда дописывает строку"World!". Таким образом и получается склеенная строка.

Запомните:

// — это комментарий. Это текст, который

не воспринимается и не выполняется программа. Это нужно нам, чтобы отметить дополнительную информацию о происходящем в коде.

А если используем Console.WriteLine():

static void Main(string[] args)

{

Console.WriteLine("Hello"); // вывод и перенос на новую строку

Console.WriteLine("World!"); // вывод и перенос на новую строку

}

Вывод будет следующим:

Hello

World!

Дело в том, что после команды

Console.WriteLine("Hello");

курсор передвинулся на следующую строку. И уже на новой строке выводится"World!".

Вывод информации

С помощью этих команд можно выводить числа или результат вычисления выражений. Например:

static void Main(string[] args)

{

Console.WriteLine(26);

Console.WriteLine(1024 + 48); // 1072

Console.WriteLine(5 + 8 * 2); // 21

Console.Write((5 + 8) * 2); // 26

}

Через // указано то, что будет после исполнения команды. То есть вывод будет следующим:

26

1072

21

26

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

Форматированный вывод

Довольно часто есть необходимость выводить числа и строки вместе. Просто вывод чисел для пользователя ничего не означает. Иногда надо бывает перед или после числа добавить объяснения.

Для этого строку нужно обозначить в кавычках (чтоб компилятор ее"узнал"как строку), а между числом и строкой нужно поставить знак плюс (+), который тут просто приклеивает строку и число, а не считает математически. Результатом такой склейки получается СТРОКА.

Для лучшего понимания рассмотрим код:

static void Main(string[] args)

{

Console.WriteLine("5 + 7 ="+ 12); // 5 + 7 = 12

Console.WriteLine(5 +"+"+ 7 +"="+ 12); // 5 + 7 = 12

Console.WriteLine(3 +""+ 6); // вывод двух чисел через пробел, то есть 3 6

}

Заметьте, что пробел ("") — это тоже строка, причем не пустая. Пример показывает, что один и тот же результат вывода можно достичь разными способами.

Заметьте, что как при сложении числа и строки, так и при сложении строки и числа, результатом будет строка.

Примечания:

1. То, что мы пишем в круглых скобках у команд Console.Write() и Console.WriteLine(),называется аргументами или параметрами команды.

2. Все команды, которые мы уже рассмотрели и которые в будущем рассмотрим, записываются в приведенном в лекциях формате, другое написание недопустимо, так как в C# строчные и заглавные буквы различны.

3. Заметьте, что в конце строки пишется точка с запятой (;). Это обязательно. Такой синтаксис языка C#.

4. Команда Console.WriteLine() с пустым списком аргументов (пустые круглые скобки) просто вставляет новую пустую строку. Например:

Console.WriteLine("Строка 1");

Console.WriteLine();

Console.WriteLine("Строка 3");

выведет на экран три строки, одна из которых пустая:

Строка 1

Строка 3

Здравствуй, Иосиф!

А теперь пришло время поздороваться со мной.

Напишите программу, выводящую следующий текст:

Здравствуй,

Иосиф!

Заметьте, что выводятся две строки.

Примечание:

1. Обратите внимание, что каждая последующая команда Console.WriteLine() выводит указанный текст, начиная с новой строки.

2. Для решения задачи обязательно нужно выбрать язык программирования. Я показываю все на C#. Если нет окна с перечнем языков программирования, то перезагрузите страницу/программу.

3. Комментарий, который автоматически пишется при выборе языка C#, можно убрать ради чистоты кода:

4. Язык C# регистрозависимый. Нужно писать команды точно такие, какие были в лекции.

5. Не забудьте в конце каждой строки поставить точку с запятой (;).

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

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

Совет: лучше всего его скопировать.

2.2

Переменная

Определение

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

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

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

Запомните:

Переменная — это ячейка памяти

определенного типа данных,

имеющая имя.

Работа с переменной

Для создания или объявления переменной нужно воспользоваться следующей схемой:

тип_данных название переменной;

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

int a;

Это мы объявили переменную с названием a и указали, что там будут хранится целые числа. Теперь в созданную переменную можем записывать только целые числа.

Чтобы записать в переменную целое число, нужно воспользоваться следующим правилом:

куда = что

где

• куда: в какую переменную записать данные

• =: оператор присвоения

• что: какие данные записать

Воспользуемся данным правилом. Например, запишем в ранее созданную переменную a число 7:

a = 7;

Операции производятся справа налево — взять число 7 и записать в переменную a.

Эти два шага можно объединить, то есть можно сразу объявить переменную и записать в нее значение (инициализировать), иначе говоря — присвоить начальное значение:

int a = 7;

Мы объявили переменную a и сразу записали значение 7.

Чаще всего так и делают: сразу объявляют переменную и присваивают начальное значение!

Чтобы узнать содержимое переменной, нужно обратиться к ней по имени. Например:

int b = a * 5;

В переменную b запишется значение 35, так как вместо переменной a подставится ее значение, то есть 7. Напомню, что сначала выполняется выражение справа от равно (a * 5), а потом результат вычисления записывается в новую переменную b.

Также мы можем поменять значение уже существующей переменной a:

a = a + 8;

Так как действия выполняются справа налево от знака =, следовательно, мы берем значение переменной а, которое равно 7, к нему добавляем 8 и снова записываем в переменную а. Таким образом, значение переменной увеличили на 8.

Запомните:

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

Для лучшего понимания разберем пример с ошибкой:

int a = 6; // создали переменную a

int b = a * 8; // 48

int a = b — 8; // ошибка. Переменная a уже существует.

int c = b + a;

Console.WriteLine(c);

А вот исправленная программа:

int a = 6;

int b = a * 8; // 48

a = b — 8; // 40. Заметьте, что тип данных

мы не написали

int c = b + a; // 88

Console.WriteLine(c); // вывод 88

Типы данных

Итак, мы уже посмотрели и поработали с целочисленным типом данных int. Но существуют еще и другие типы данных. Давайте рассмотрим основные часто используемые типы данных:

• int — целое число от — 2147483648 до 2147483647;

• long — целое число от — 9 223 372 036 854 775 808

до 9 223 372 036 854 775 807;

• string — строка;

• double — число с дробной частью (вещественные числа);

• char — символ;

• bool — специальный тип, принимает только два значения: true или false.

Рассмотрим пример:

• Создадим переменную строкового типа name и запишем в нее строку"Олег". Напомню, что строку нужно обрамлять двойными кавычками:

string name ="Олег";

• Создадим еще одну переменную целочисленного типа age и запишем в нее значение 2525:

• string name ="Олег";

int age = 25;

• Создадим еще одну переменную вещественного типа weight и запишем в нее значение 80.5:

• string name ="Олег";

• int age = 25;

• double weight = 80.5;

Стоит отметить, что при инициализации вещественных чисел дробная часть отделяется от целой точкой.

• Теперь мы можем обращаться к переменным по имени и вместо них подставятся их значения:

• string name ="Олег";

• int age = 25;

• double weight = 80.5;

• string stringToShow = name +", возраст"+ age +", вес"+ weight;

Console.WriteLine(stringToShow);

Запятые я поставил просто для красоты отображения. Они стоит внутри строки. Все что стоит внутри строки выводится в таком же виде. То есть программа выведет:

Олег, возраст 25, вес 80,5

Запомните:

C# строго типизированный язык

программирования. От типа данных

зависит, какая информация будет

храниться в переменной.

Рассмотрим подробнее. В переменную целого типа можно записывать только целое число:

int a = 10;

Нельзя записать в нее строку или любой другой тип данных:

int a ="10"; // ошибка!

То же самое, например, с переменной строкового типа. В нее можно записать только строку:

string s ="test"; // верно

string t = 10; // ошибка!

Запомните:

От типа данных переменной

зависит поведение операций

над ним.

Например, для строк знак плюс (+) означает склеивание между собой,

а для целых и вещественных чисел плюс складывает их математически:

int a = 5;

int b = 10;

Console.WriteLine(a + b); // 15

string s1 ="5";

string s2 ="10";

Console.WriteLine(s1 + s2); // 510

Имя переменной

1. В имени переменной используйте только латинские буквы a-z, A-Z, цифры и символ нижнего подчеркивания (_);

2. Имя переменной не может начинаться с цифры;

3. Имя переменной по возможности должно отражать её назначение. Это нужно только нам, программистам, чтобы наш код читался. Программе все равно, какое название будет у переменной.

Запомните:

С# — регистрочувствительный язык.

Переменная name и Name — две совершенно разные

переменные. Принято название переменных начинать

с маленькой буквы.

Примечания:

1. Переменные можно вводить в любой момент (не только в самом начале программы).

2. Названия переменных должны быть уникальными. Если у двух переменных будут одинаковые имена, то непонятно будет, какое значение вернется при обращении к переменной.

3. Значение перезаписывается. Новое значение переменной вытесняет старое. Важно понимать, чему равно значение переменной в каждый момент времени:

int a = 6; // здесь a равен 6

int b = a * 8;

a = b — 8; // 40. Здесь уже a равен 40

int c = b + a;

Console.WriteLine(c);

1. Можно сразу записывать в объявляемую переменную формулу:

int a = 22 * 4 + 1; // 89

int b = a — 15 * 3; // 44

2. Напомню, что мы все написанные программы пишем внутри Main.

2.3

Ввод данных

Ввод информации

Проблема

Все предыдущие программы выводили на экран текст, известный в момент написания программного кода. То есть при каждом запуске программы, вывод был один и тот же.

Например:

Console.WriteLine("Привет! Как тебя зовут?");

string name ="Иосиф";

Console.WriteLine("Привет,"+ name);

Данная программа всегда будет выводить одно и тоже:

Привет! Как тебя зовут?

Привет, Иосиф

Это статические программы, которые никому не интересны. Всех интересует программы, которые на основе введенных данных пользователем выдают результат. То есть, программы могут работать с данными, которые станут известны только во время выполнения программы. Другими словами, программы могут считывать данные от пользователя, а затем их использовать.

Решение

Для считывания данных в языке C# используется команда Console.ReadLine(). Рассмотрим пример:

Console.WriteLine("Привет! Как тебя зовут?");

string name = Console.ReadLine(); // пользователь вводит свое имя. Сохраняем в переменную"name"

Console.WriteLine("Привет,"+ name); // приветствуем пользователя. Вместо переменной подставиться его значение, то есть то что ввел пользователь.

Сначала программа распечатает текст на экран «Привет! Как тебя зовут?». Далее программа будет ждать от пользователя ввода данных. Ввод данных реализуется с помощью команды Console.ReadLine().

Она работает так: когда программа доходит до места, где есть Console.ReadLine(), она ждет, пока пользователь введёт текст с клавиатуры (ввод завершается нажатием клавиши Enter). Введенная пользователем строка подставляется на место Console.ReadLine().

То есть, если вы ввели строку «Иосиф», программа дальше будет работать так, как будто на месте Console.ReadLine() было написано «Иосиф». Если вы ввели строку «Вася», программа дальше будет работать так, как будто на месте Console.ReadLine() было написано «Вася». То есть все зависит от того, что введет пользователь.

Запомните:

Console.ReadLine() получает от пользователя какие-то данные в виде строки (string) и записывает в строковую переменную name.

Обратите внимание, что просто команды Console.ReadLine() недостаточно, чтобы считать строку с консоли. Нужно ее сохранить в переменную, чтобы в дальнейшем ее использовать. Например: Console.WriteLine("Привет! Как тебя зовут?");

Console.ReadLine();

На второй строке мы просим пользователя ввести строку. Но после этого никуда ее не сохранили. Спрашивается, а зачем тогда просили? Это бессмысленная операция.

Надо обязательно сохранить в переменную строкового типа: Console.WriteLine("Привет! Как тебя зовут?");

string name = Console.ReadLine();

А дальше мы можем обращаться к этой строке в программе по названию переменной name.

Если мы хотим, чтобы пользователь ввел n строк, то команд Console.ReadLine() в программе должно быть n штук.

Например, если пользователь вводит 3 строки, то для этого нужно написать:

string row1 = Console.ReadLine();

string row2 = Console.ReadLine();

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Основы программирования. Базовые понятия для новичков предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я