Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Герои Войны - микс стратегии и РПГ. Собери лучшую армию и победи всех врагов. В игре 7 различных режимов - как для любителей PvE, так и PvP.

Герои Войны

Стратегии, Мидкорные, Экшены

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Введение

С этим тегом используют

Основы Программирование Учебные курсы Все
61 пост сначала свежее
2
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

Операции над строковым значением с помощью цикла. Синтаксис C#⁠⁠

Самой распространенной операцией над строковым значением является поиск. Поиск может осуществляется как одного элемента, так и цепочки из элементов. К примеру, зная, что инструкция в программном коде заканчивается на знак «;», можно подсчитать количество инструкций даже если некоторые из них написаны в одну строку. Поиск, цепочек из элементов, позволяют определить стратегию продажи товара. Для этого, в отзывах ищут цепочки из символов «хорошо» или «плохо».

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

Давайте вспомним, что для доступа к элементу значения строкового типа используется конструкция — имя переменной [индекс элемента], где индекс элемента — целое число, изменяя который, можно получить доступ к любому элементу значения.

Изменение номера индекса — повторяющаяся задача, поэтому применим для этой операции операцию повторения.

Для написания цикла, нам необходимо знать начальное, конечное значение цикла, а также изменение начального значения.

  1. Так как нумерация индексов начинается с нуля, то и начальное значение будет начинаться с нуля.

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

static void Main(string[] args)

{

string text = "Hello!";

int sizeText =  text.Length;

Console.WriteLine($"Размер значения: {sizeText} символов");

}

  1. Изменение значения будем осуществлять по нижеприведенному алгоритму:

  • Представим индекс элемента в виде переменной

  • В цикле будем изменять значение переменной. Изменяя значение переменной, каждую итерацию, в конструкции — имя переменной [индекс элемента], вместо индекса элемента будет подставляться новое значение.

    Напишем программу вывода элементов через пробел переменной text.

    static void Main(string[] args)

    {

    string text = "Hello!";

    for(int i=0; i < text.Length; i++)

    {

    Console.Write(text[i] + " ");

    }

    }

    Здесь,

    1. Внесено изменение в конструкцию — имя переменной [индекс элемента] и представляет собой следующий вид  — text[i].

    2. Изменяясь каждую итерацию, переменная «i» будет принимать значение от нуля до пяти. При первой итерации, конструкция text [i], получит от переменной « i » значение в виде числа « 0 » и метод вывода примет следующий вид Console.Write(text[0] + " "); а при последней — Console.Write(text[5] + ","). 


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


    static void Main(string[] args)

    {

    string text = "Hello!";

    for (int i = text.Length; i > 0; i--)

    {

    Console.Write(text[i] + " ");

    }

    }

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

Операции над строковым значением с помощью цикла. Синтаксис C# Введение, Основы, Учебные курсы, Длиннопост

Все дело в свойстве Length. Вернее, в том, что, нумерация индексов начинается с нуля и последний индекс значения будет — пять, а нумерация в свойстве Length, начинается с единицы и заканчивается числом шесть. Так как, начальным значением счетчика установлено значение от свойства Length, то произошло обращение к несуществующему индексу с номером шесть, что и привело к ошибке.

Исправить ошибку достаточно легко. Достаточно уменьшить значение свойства Length на единицу. Еще одной ошибкой в данном коде является конечное значение счетчика определенное операцией «i > 0». Здесь «i» не достигнет числа « 0 » и элемент с таким индексом не будет задействован в цикле.

Исправим обе ошибки

static void Main(string[] args)

{

string text = "Hello!";

for (int i = text.Length - 1; i >= 0; i--)

{

Console.Write(text[i] + " ");

}

}

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

Практический пример для подсчета предложений

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

static void Main(string[] args)

{

string text = "Эрнест Хемингуэй! Старик и море. Жанр. Роман?";

int count = 0;

int i = 0;

while (i < text.Length)

{

if ((text[i] == '.') || (text[i] == '!') || (text[i] == '?'))

{

count++;

}

i++;

}

Console.WriteLine("Количество предложений: " + count);

}

Здесь переменная «i» не только считает количество итераций, но и изменяет каждую итерацию индекс массива символов. Таким образом в цикле просматриваются все символы от первого до последнего. В случае совпадения символа значения с символом сравнения, информация об этом записывается в переменную count.

В заключении.

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

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью 1
[моё] Введение Основы Учебные курсы Длиннопост
0
2
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

О string и char. Синтаксис C#⁠⁠

Из этой лекции вы узнаете о ссылочном типе данных — string и примитивном — char.

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

Объявление и инициализация переменной с типом данных string ничем ни отличается от тех же операций с другими типами данных.

Так выглядит инициализация переменной с строковым значением

static void Main(string[] args)

{

string text = "Bill";

}

В отличии от числовых значений, строковое значение, не является набором цифр, и поэтому не может хранится как числовое значение.

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

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

Ссылка приведена для визуального оформления

О string и char. Синтаксис C# Введение, Основы, Программирование, Учебные курсы, Длиннопост

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

Строковое значение «Bill», в памяти компьютера будет представлено следующим набором числовых значений — 66 105 108 108.

О string и char. Синтаксис C# Введение, Основы, Программирование, Учебные курсы, Длиннопост

Для доступа к отдельному элементу указывается имя значения и соответствующий индекс, в формате записи — имя переменной [индекс элемента]

static void Main(string[] args)

{

string text = "Bill";

Console.WriteLine($"Имя строка - {text[0]},{text[1]},{text[2]},{text[3]}");

}

Здесь, для вывода строки применена интерполяции.

Элемент строкового значения хранится в виде значения с символьным типом данных — char. Таким образом, значение с типом данных string — это массив элементов с типом данных char.

static void Main(string[] args)

{

string text = "Bill";

Console.WriteLine("Тип данных: " + text[0].GetTypeCode());

}

Здесь, метод GetTypeCode(), указывает на тип данных значения, хранимого в элементе с индексом 0.

Символьный тип —char, является очень интересным типом данных. Значения этого типа данных хранится как числовое значение, но на экран выводится — его графическое представление. Другими словами, для компьютера значение типа данных —char, является числом, но пользователь на экране видит символ.  Это некий мостик, между строковыми и числовыми значениями.

Значения с типом данных char относятся к примитивным типам данных и хранятся в стеке. Формат записи —  единственный символ, обрамленный одинарными кавычками. Размер выделяемой памяти составляет один или два байта.

Инициализация переменной

static void Main(string[] args)

{

char symbolA = 'A';

}

О string и char. Синтаксис C# Введение, Основы, Программирование, Учебные курсы, Длиннопост

Соответствие символа и его числового значения

static void Main(string[] args)

{

char symbolA = 'A';

Console.WriteLine("Переменная символа 'A' = " + symbolA);

int number = symbolA;

Console.WriteLine("Числовое значение переменной symbolA = " + number);

}

При изменении числового значение меняется символ.

static void Main(string[] args)

{

char symbolA = 'A';

Console.WriteLine("Переменная символа 'A' = " + symbolA);

int number = symbolA + 1;

char value = (char)number;

Console.WriteLine("Символ 'A' + 1 = " + value);

}

Здесь, переменная number инициализирована числом, соответствующим символу 'A' — 65, добавим к этому значению единицу. Результатом такой операции станет число 66, которое соответствует символу 'B'. Для преобразования числового значения в значение с типом данных char используется явное привидение типов

Для обработки строкового значения зачастую необходимо знать количество содержащихся в нем элементов, размер значения. Для этого используется свойство — Length.

static void Main(string[] args)

{

string text = "Bill";

Console.WriteLine($"Размер значения - {text.Length}");

}

Зная, что строковое значение — массив значений символьного типа, а также размер массива, можно производить некоторые действия над строковым значением. В C# такие действия ограничены, но, к примеру в языке С++, можно заменять один символ другим. Возможности обработка строки, на различных языках программирования существенно отличается, иначе зачем столько языков программирования.

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

Примем, что строковое значение состоит из одного предложение, заканчивающееся на один из вышеперечисленных знаков.

Последний символ предложения хранится в последнем элементе значения. Для получения доступа к этому элементу нам необходимо знать его индекс. В этом нам поможет свойство Length, в виде конструкции «Length-1». Дело в том, что нумерация в Length начинается не с нуля, как у индексов элементов, а с единицы. Дабы привести в соответствие числовые ряды, Length уменьшается на единицу.

Полученный индекс последнего элемента запишем в отдельную переменную «int idx = text.Length-1;». Таким образом в операции отношения сравнивается последний элемент строкового значения с символами окончания предложения.

static void Main(string[] args)

{

string text = "Hello, world!";

int idx = text.Length - 1;

if (text[idx] == '.')

{

Console.WriteLine("Предложение повествовательное");

}

if (text[idx] == '!')

{

Console.WriteLine("Предложение побудительное");

}

if (text[idx] == '?')

{

Console.WriteLine("Предложение вопросительное");

}

}

В заключении.

Строковое значение — набор отдельных элементов. Каждый элемент строкового значения имеет свой порядковый номер —индекс, по которому можно получить доступ к содержимому элемента. Нумерация начинается с нуля. Формат записи значения — любые символы заключенные в двойные кавычки. Количество элементов равно размер значения.

Значения с типом данных char, представляет собой значение в графическом виде, отображающее символ, но хранимое как число. Символы и соответствующие им числовые значения приведены в таблице ASCII. Формат записи — единственный символ, заключенный в одинарные кавычки.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью 3
[моё] Введение Основы Программирование Учебные курсы Длиннопост
8
2
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

Конструкции повторения. Синтаксис C#⁠⁠

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

Следование и ветвление вам уже известны. Переходим к рассмотрению алгоритмической структуры — повторение.

Алгоритмическая структура повторение, применяется для многократного повторения одной и той же операции, называемой циклом. Цикл состоит из итераций. Итерация однократное выполнение операции цикла.

При выполнении операций повторения используются управляющие конструкции с операторами — while, do…while и for.

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

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

Конструкция повторения состоит из

  • Оператор цикла, с логическим выражением выполнения условия итераций

  • Тело цикла

  • Счетчик количества итераций или оператор — break.

Счетчик итераций применяется, когда количество итераций известно, оператор break, в случаях, когда количество итераций неизвестно.

Счетчик итераций имеет обязательные параметры.

  • Начальное значение. Целое число.

  • Операция изменения начального значения. Выбор, с определенным шагом, значения из числового ряда в диапазоне ограниченным начальным и конечным значением.

  • Конечное значение. Логическая операция. В основном, операция отношения с числом или переменной с примитивным типом данных.

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

Унарная операция — операция с одним операндом, имеет конструкцию вида « х++ »  и заменяет запись « х = х + 1». Приращение на единицу называется операцией инкремент — « х++ »  , уменьшение« х-- »  — декремент. Унарные операции делятся на префиксную и постфиксную.

Префиксная запись: ++x — сначала значение переменной x увеличивается на 1, а потом ее значение возвращается в качестве результата операции.

Постфиксная запись: x++ — сначала значение переменной x возвращается в качестве результата операции, а затем к нему прибавляется 1.

Отличие результатов применения префиксной и постфиксной записи инкремента.

static void Main(string[] args)

{

int x = 3;

Console.WriteLine(x);  // Результат: 3

Console.WriteLine(x++); // Результат: 3

Console.WriteLine(x);  // Результат: 4

Console.WriteLine();

int y = 3;

Console.WriteLine(y);  // Результат: 3

Console.WriteLine(++y); // Результат: 4

Console.WriteLine(y);  // Результат: 4

}

Вернемся к операциям повторения и рассмотрим конструкцию с оператором — for, вида:

static void Main(string[] args)

{

for (int variable = 0; variable < 3; variable++)

{

Console.WriteLine("Итерация ");

}

}

Где, for (int variable = 0; variable < 3; variable++) — конструкция с оператором «for » с счетчиком.

  • Выражение int variable = 0 — начальное значение счетчика

  • Выражение variable < 3 — логическое выражение. В случае истинности выполняется итерация цикла, результат — false, заканчивает цикл.

  • Унарная операция variable++ — операция по изменению счетчика.

Здесь, каждую итерацию, значение переменной variable изменяется на единицу, в диапазоне от нуля до трех.

При достижении числа три, логической выражение вернет в программный код результат «false», итерация не будет выполнена и  цикл будет завершен. Начальным значением может быть любое число, но диапазон чисел должен соответствовать необходимому количеству итераций. К примеру, 1 <= 3 или 5  <  8

Эту же задачу можно решить с помощью конструкции повторения с операторам « while »

static void Main(string[] args)

{

int i = 0;

while(i<3)

{

Console.WriteLine("Итерация ");

i++;

}

}

Отличие конструкции с операторам « while » от конструкции с оператором « for » в расположении элементов счетчика. Начальное значение инициализируется перед циклом, а операция по изменению начального значения происходит каждую итерацию в теле цикла.

Счетчик может как приращиваться, так и уменьшаться.

Выведем числа от десяти до нуля в одну строку через запятую. Изменяя начальное или логическое выражение на экран, можно выводить любой числовой ряд. Выражение в виде Console.WriteLine(i);  часто используют для вывода нумерации строк.

static void Main(string[] args)

{

int i = 10;

while (i > 0)

{

Console.Write(i + ", ");

i--;

}

}

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

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

Для этого, оператору while в качестве параметра передается значение true, а для выхода из цикла применяется операция ветвления, которая может принять либо true либо false. Один из блоков операции ветвления содержит оператор — break.

Напишем программу проверки ввода логина. Логин — строчное значение 123.

static void Main(string[] args)

{

Console.WriteLine("Введите логин. Для отказа нажмите пробел");

while (true)

{

string value = Console.ReadLine();

if(value == " ")

{

break;

}

if (value != "123")

{

Console.WriteLine("Неверно. Введите логин");

}

else

{

Console.WriteLine("Логин принят");

Console.ReadKey();

break;

}

}

Заключение.

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

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью
[моё] Введение Основы Программирование Учебные курсы Текст Длиннопост
0
2
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

Конструкция с оператором множественного выбора. Синтаксис C#⁠⁠

Из этой лекции вы узнаете о конструкции с оператором множественного выбора switch…case.

Помимо широко используемой конструкции с оператором условного перехода «if», в ветвлении применяется конструкция с оператором множественного выбора switch…case. По своему функционалу, Switch…case, похож на расширенную форму конструкции с условным оператором «if», if…else if…else, но в отличии от оператора «if», оператор switch не производит вычисления логического выражения, а сравнивает полученное значение с константой в операторе «case».

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

Тип данных константы, определяется неявно, по формату записи. Целочисленные — тип данных int, с плавающей точкой — double, набор символов заключенных в двойные кавычки — string, true или false — bool.

Получив на вход значение, оператор switch сравнивает его с константами оператора case. Найдя совпадения, переходит к выполнению программного кода в соответствующем блоке. После того как программный код выполнен, оператор — break прекращает работу оператора switch и выполнение возвращается следованию. Для случаев, когда не найдено ни одно соответствие константы сравниваемому значению, применяется блок— default. Если такой блок отсутствует, выполнение возвращается следованию.

Конструкция Switch…case имеет следующий вид

switch(variable) — Сравниваемая с константами переменная

{

case 1:  — Оператор case с константой 1

Блок кода, выполняемый в случае, если переменная равна 1

break;

case 2: — Оператор case с константой 2

Блок кода, в случае если переменная равна 2

break; 

default:

Блок кода, выполняемый если переменная отлична от всех констант

break;

}

Как видите конструкция множественного выбора switch…case достаточна проста и в отличие от if…else if…else нет необходимости строить конструкцию с множеством ветвлений, что сокращает количество ошибок и повышает удобочитаемость текста.

Напишем программу, производящую арифметические действия над двумя числами

static void Main(string[] args)

{

int a = 5;

int b = 3;

Console.WriteLine("Для операции сложения нажмите +, для вычитания -");

string variable = Console.ReadLine();

switch (variable)

{

case "+":

Console.WriteLine("Сумма чисел: " + (a + b));

break;

case "-":

Console.WriteLine("Разница чисел: " + (a - b));

break;

default:

Console.WriteLine("Операция указана не верно");

break;

}

}

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

В таких случаях, применяется подмена значения неоднозначной трактовки, числовым значением.

К примеру, программа, показывающая блюда меню на завтрак, обед, ужин

static void Main(string[] args)

{

Console.Write("Посмотреть блюда на завтрак — нажмите 1,");

Console.Write(" на обед — нажмите 2,");

Console.WriteLine(" на ужин — нажмите 3");

int variable = int.Parse(Console.ReadLine());

switch (variable)

{

case 1:

Console.WriteLine("Омлет");

break;

case 2:

Console.WriteLine("Курица");

break;

case 3:

Console.WriteLine("Рыба");

break;

default:

Console.WriteLine("Операция указана не верно");

break;

}

}

В блоках конструкции swith…case, так же как и в блоках конструкции с оператором if, можно размещать блоки программного кода.

Программа переводящая значение температуры по Цельсию в значение по Фаренгейту и Кельвину.

static void Main(string[] args)

{

double c = 25;

Console.Write("Температура по Фаренгейту — нажмите 1,");

Console.WriteLine(" по Кельвину — нажмите 2");

int variable = int.Parse(Console.ReadLine());

switch (variable)

{

case 1:

double f=c * 9 / 5 + 32;

Console.WriteLine("Температура по Фаренгейту — " + f);

break;

case 2:

double k = c  + 273.15;

Console.WriteLine("Температура по Кельвину — " + k);

break;

default:

Console.WriteLine("Операция указана не верно");

break;

}

}

В заключении.

Конструкция ветвления swith…case удобна своей простотой и удобочитаемостью, поэтому нашла применения в виде различных меню консольных программ или при выборе значения из некоторого списка. Во избежание ввода неверного значения сравниваемой переменной, рекомендуется приводить неоднозначно трактуемые значение к более упрощенной форме. К примеру, подмену строкового значения числовым.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью
[моё] Введение Основы Программирование Учебные курсы Текст Длиннопост
0
5
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

Расширенная форма и вложения оператора if. Синтаксис C#⁠⁠

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

Но мир задач намного разнообразней и зачастую одному условию соответствует выбор из множества путей.

Но мир задач намного разнообразней и зачастую одному условию соответствует выбор из множества путей. Для решения таких задач используется расширенная форма конструкции с оператором условного перехода «if» вида — if…else if…else.

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

static void Main(string[] args)

{

int a = 2;

int b = 2;

if (a < b)

{

Console.WriteLine("A меньше B");

}

else if (a > b)

{

Console.WriteLine("A больше B");

}

else

{

Console.WriteLine("Значения переменных равны");

}

}

В противовес «одно условие, множество путей» существуют задачи, где один путь зависит от выполнения нескольких взаимосвязанных условий. Для решения таких задач используются, вложенные друг в друга, конструкции с классической  формой if…else.

Напишем код проверяющий логин и пароль, где доступ разрешен только после проверки пароля. Пароль в свою очередь проверяется, только после получения результата «истинность» проверки логина.

Допустим, что логин состоит из символов— 123, а пароль —456.

static void Main(string[] args)

{

string login = "123";

string password = "456";

Console.WriteLine("Введите логин");

string loginIn = Console.ReadLine();

if (loginIn == login)

{

Console.WriteLine("Введите пароль");

string passwordIn = Console.ReadLine();

if(passwordIn == password)

{

Console.WriteLine("Доступ разрешен");

}

else

{

Console.WriteLine("Пароль не верен");

}

}

else

{

Console.WriteLine("Логин не верен");

}

}

Здесь, в строке if (loginIn == login) происходит вычисление операции отношения между оригиналом и введенным значением пароля. В случае результата true, управление программой переходит конструкции ветвления с проверкой пароля, в случае false, блок else выводит сообщение «Логин не верен».

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

Расширенная форма и вложения оператора if. Синтаксис C# Введение, Основы, Программирование, Учебные курсы, Длиннопост

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

Напишем программу проверки, будет ли гражданин призван на срочную службу. Оценим это по следующим признакам. Возраст от 18 до 30 лет. Количество детей менее двух.

static void Main(string[] args)

{


string message = "Гражданин не будет призван на срочную службу";

Console.WriteLine("Введите возраст гражданина");

byte age = byte.Parse(Console.ReadLine());

if (age >= 18)

{

if (age < 30)

{

Console.WriteLine("Введите количество детей");

byte children = byte.Parse(Console.ReadLine());

if (children < 2)

{

Console.WriteLine("Гражданин будет призван на срочную службу");

}

else

{

Console.WriteLine(message + ". Дети");

}

}

else

{

Console.WriteLine(message + ". Старше 30");

}

}

else

{

Console.WriteLine(message + ". Моложе 18");

}

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

В заключении.

Для решения задач с независящими друг от друга условиями, применяйте расширенную форму if … else if … else, которую можно представить, как нумерованный список.

вложенные друг в друга, конструкции с классической формой if…else.

Для решения задач с зависящими условиями, применяйте вложенные друг в друга, конструкции с классической формой if…else. Можно представить, как нумерованный список с подпунктами.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью 1
[моё] Введение Основы Программирование Учебные курсы Длиннопост
0
2
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

ВЕТВЛЕНИЕ и bool. Синтаксис C#⁠⁠

Из этой лекции вы узнаете о базовой структуре структурного программирования — ветвлении и логическом типе данных bool.

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

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

В операциях ветвления используются операции отношения, содержащие операторы сравнения и равенства.

Операторы сравнения

>  строго больше

<=  меньше или равно

<  строго меньше

>= больше или равно

Операторы равенства

= =  равно

!=  не равно

Все операторы интуитивно понятны. Из-за того, что оператор « = » является оператором присваивания, то для операции « равно » используется оператор « = = ».

Тут нужно указать, что операция равенства делится на две операции — равенство и строгое равенство. В C#, операция строго равенства выполняется с помощью метода Equals(). О ней мы расскажем позже.

Операция ветвления состоит из двух этапов. Вычисление условия и переход на выбранную ветку программного кода.

Вычисление условия — это логическая операция, состоящая из операции отношения. Результатом операции отношения является одно из двух логических значений либо true, либо false — ответ на вопрос, либо да, либо нет. Для хранения результата используется тип данных — bool.

Тип данных bool относится к примитивным типам данных, хранится в стеке и имеет размер 8 бит. В отличие от других типов данных, хранимые значения определены заранее — это либо true, истинность, либо false, ложь.

static void Main(string[] args)

{

bool a = true;

bool b = false;

}

Обычно переменные логического типа инициализируются операциями отношения между двумя значениями, переменными или их вариациями. Результатом такой операции будет все те же true и false.

static void Main(string[] args)

{

int x = 1;

bool a = x < 2;

bool b = 1 > 2;

Console.WriteLine("A = " + a + " B = " + b);

}

Для выбора блока исполняемого кода используется конструкция с оператором — if. Эта конструкция имеет множество форм, классической из которых является форма if … else (если…иначе).

Оператор if выполняет вычисление логического выражения и в случае результата «true», выполняет программный код своего блока. В случае результате «false», выполняется программный в блоке оператора — else.

Напишем программу проверки на положительное число.

static void Main(string[] args)

{

int number = 2;

bool compare;

compare = 0 < number;

if (compare)

{

Console.WriteLine("Число положительное");

}

else

{

Console.WriteLine("Число отрицательное");

}

}

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

Программа для извлечения квадратного корня. Так как корень нельзя извлекать из отрицательного числа, производится проверка числа на положительное.

static void Main(string[] args)

{

int number = -2;

if (0 < number)

{

double sqr = Math.Sqrt(number);

sqr = Math.Round(sqr, 2);

Console.WriteLine("Корень числа: " + number + " = " + sqr);

}

else

{

Console.WriteLine("Число не является положительным");

}

}

Забежим вперед и используя генератор случайных чисел напишем игру «Угадай число»

static void Main(string[] args)

{

Random rnd = new Random();

int value = rnd.Next(1, 3);

Console.WriteLine("Введите число от одного до трех");

int number = int.Parse(Console.ReadLine());

if (value == number)

{

Console.WriteLine("Вы выиграли");

}

else

{

Console.WriteLine("Вы проиграли");

}

}

Здесь, в строке int value = rnd.Next(1, 3);, генерируется случайное число в диапазоне от одного до трех, которое затем сравнивается с введенным числом

В заключении.

Для решения задач с неопределенными условиями, используются операции отношения. Результат вычисления операции отношения, принимает два значения — true и false и хранятся в переменных с типом данных —bool. Операции отношения используются в программах с базовыми структурами структурного программирования — ветвление и повторение.

Одной из конструкций ветвления является конструкция if…else. Оператор if выполняет операцию по вычислению операции отношения и в зависимости от полученного результата, выполняется либо блок программного кода относящегося к оператору « if», либо блок кода оператора «else»

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью
[моё] Введение Основы Программирование Учебные курсы Текст Длиннопост
0
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

Проверка знаний о значениях. Синтаксис C#⁠⁠

Напишите программу расчета кредитной ставки для заемщика.

Программа должна запрашивать с клавиатуры следующие данные

  • Фамилию и имя заемщика

  • Возраст заемщика

  • Заработная плата заемщика

  • Трудовой стаж заемщика

  • Требуемая сумма кредита

  • Коммунальные расходы в месяц

  • Другие расходы

  • Первоначальная ставка по кредиту. К примеру, ставка ЦБ РФ.

Пример ввода:

  • Фамилия и имя заемщика — Иванов Иван

  • Возраст заемщика — 45

  • Заработная плата заемщика — 150000

  • Трудовой стаж заемщика—30

  • Требуемая сумма кредита—1000000

  • Коммунальные расходы в месяц—5000

  • Другие расходы—10000

  • Первоначальная ставка по кредиту—16

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

  • Рассчитайте коэффициент возраста. Для этого —Трудовой стаж /Возраст. Округлите результат до второго знака после запятой.

  • Рассчитайте коэффициент заработной платы по следующей формуле — 1000*(Базовая ставка – ((Заработная плата * Базовая ставка)/ (Заработная плата + Базовая ставка))). Округлите результат до второго знака после запятой.

  • Вычислите конечную ставку кредита по формуле— (Базовая ставка – коэффициент возраста заемщика – коэффициент заработной платы). Преобразуйте полученный результат в целое число с наилучшим типом данных.

  • Рассчитайте по формуле период погашения кредита в полных месяцах — (Сумма кредита * конечную ставку)/ (Заработная плата – коммунальные расходы – другие расходы).

Вывод должен содержать следующую информацию

  • Фамилия, имя заемщика в одну строку

  • Сумма кредита

  • Ставка по кредиту конечная

  • Период погашения в полных месяцах

Пример вывода

  • Фамилия, имя заемщика— Иванов Иван

  • Сумма кредита—1000000 руб.

  • Ставка по кредиту конечная—14%

  • Период погашения в полных месяцах—104 мес.

Для получения возможного решения отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью
[моё] Введение Основы Программирование Учебные курсы Текст
2
4
user10429306
user10429306
2 месяца назад
Серия Введение в основы программирования.

Преобразование типов⁠⁠

Из этой лекции вы узнаете, об особенностях применения неявного типа var и о преобразовании типов данных.

Начнем эту лекцию с написания программы подсчета населения двух стран Индии и Китая. Для инициализации переменных будем использовать неявный тип данных — var, который не рекомендуется применять на начальном этапе обучения.

Неявный тип данных var — это операция, при которой тип данных переменной назначается по формату записи значения. Это свойство не позволяет объявить переменную, поэтому переменная с типом данных var инициализируется.

Напомним соответствие формата записи и типа данных. Значения, состоящего из цифр —тип данных int, для чисел с точкой— double, набор любых символов заключенных в двойные кавычки — string.

static void Main(string[] args)

{

var text = "Высота Эйфелевой башни ";

var number = 328;

Console.WriteLine(text + number + " метров");

}

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

Для определения типа данных у переменной применяется метод GetType(), который  выводит на экран тип данных с классом которому принадлежит этот тип, и его аналог GetTypeCode(), который показывает тип данных без принадлежности к классу. Для просмотра типа данных достаточно поставить точку после переменной и написать имя метода, точечная нотация. Не забываем формат метода — две круглые скобки в конце названия.

static void Main(string[] args)

{

var text = "Высота Эйфелевой башни ";

var number = 328;

Console.WriteLine(text + number + " метров");

Console.WriteLine("Тип данных text- " + text.GetTypeCode());

Console.WriteLine("Тип данных number- " + number.GetTypeCode());

}

В этой программе есть один недостаток, а именно переменной number, которой VS автоматически назначила тип данных int, что создает не нужную нагрузку на аппаратную часть. Здесь больше подойдет тип данных ushort.

Так как тип данных var определяет назначаемый тип по присваиваемому значению, то достаточно явно изменить тип этого значения.

static void Main(string[] args)

{

var text = "Высота Эйфелевой башни ";

var number = (ushort)328;

Console.WriteLine(text + number + " метров");

Console.WriteLine("Тип данных text- " + text.GetTypeCode());

Console.WriteLine("Тип данных number- " + number.GetTypeCode());

}

Операция по явному изменению типа данных называется — явное привидение типов или преобразование типов.

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

static void Main(string[] args)

{

var day1 = -3.1;

var day2 = 1.2;

var day3 = 5.5;

var result = (int) ((day1 + day2 + day3) / 3);

Console.WriteLine("Средняя температура: " + result);

}

Или снизить разрядность переменной с 32 ячеек до 8.

static void Main(string[] args)

{

var day1 = -3.1;

var day2 = 1.2;

var day3 = 5.5;

var result = (byte)((day1 + day2 + day3) / 3);

Console.WriteLine("Средняя температура: " + result);

Console.WriteLine("Тип данных: " + result.GetTypeCode());

}

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

static void Main(string[] args)

{

double day1 = -3.1;

double day2 = 1.2;

double day3 = 5.5;

byte result = (byte)((day1 + day2 + day3) / 3);

Console.WriteLine("Средняя температура: " + result);

Console.WriteLine("Тип данных: " + result.GetTypeCode());

}

Еще одно применение преобразование нашло в учебном вводе с клавиатуры. Почему в учебном расскажем ниже

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

static void Main(string[] args)

{

Console.WriteLine("Введите Ваш текст. По окончанию нажмите enter");

string text = Console.ReadLine();

Console.Clear();

Console.WriteLine("Вы ввели следующий текст: " + text);

}

Поздравляем! Вы создали первую диалоговую программу, а Пользователь получил в свое распоряжение программный интерфейс для управления ходом вычислений.

Перезапустим программу и сделаем немыслимое — введем числовое значение, которым будет инициализирована переменная с типом данных string. Но ошибки не последовало, и программа вывела на экран число.

Возникает вопрос, как числовое значение поместилось в область памяти, предназначенное для строковых значений. Ответ - никак. Метод Console.ReadLine(); принимает на вход набор символов. Введённое нами число было принято, как строка и передано в строковую переменную как строка, и на экране мы видим не число, но слово (строку) в виде числа.

Для инициализации переменной типом данных отличным от типа данных string требуется явное преобразование типа данных.

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

Попробуйте инициализировать переменную с типом данных int, значением, содержащим символ отличным от цифры, а метод Console.ReadLine() именно инициализирует строку вводимым значением. К ошибке приведет даже неверный выбор точки или запятой в значении переменной с типом данных double.

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

Преобразуем строку состоящую из цифр в полноценное числовое значение

static void Main(string[] args)

{

Console.WriteLine("Введите число");

int number = int.Parse(Console.ReadLine());

Console.Clear();

Console.WriteLine("Вы ввели число: " + number);

}

Для преобразования типа данных используется следующая конструкция преобразования типа данных string в тип данных int— int.Parse(Console.ReadLine()). Для byte, соответственно это будет byte.Parse(), для short — short.Parse() и т.д.  

Пример программы с различными типами данных

static void Main(string[] args)

{

Console.WriteLine("Введите ваше имя. Нажмите enter");

string text = Console.ReadLine();

Console.WriteLine("Введите ваш возраст. Нажмите enter");

int numberInt = int.Parse(Console.ReadLine());

Console.WriteLine("Введите число Pi до 5 знака после запятой. Нажмите enter");

double numberDouble = double.Parse(Console.ReadLine());

Console.Clear();

Console.WriteLine("Ваше имя: " + text);

Console.WriteLine("Ваш возраст: " + numberInt);

Console.WriteLine("Число Pi: " + numberDouble);

}

В заключении.

Неявное преобразование(приведение) типов данных может приводить к непредсказуемым результатам. Примите за правило, в процессе обучения, явно указывать типы данных у переменных.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

Показать полностью
[моё] Введение Основы Учебные курсы Текст Длиннопост
2
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии