ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.10.2023
Просмотров: 95
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Алгоритм и программа. Способы записи алгоритмов.
Общая характеристика языков программирования и их классификация
Основные конструкции языка програмирования.
Язык программирования Си-Шарп (C#). Структура программы в C#
Понятие величины. Оператор присваивания. Объявление переменной.
Линейные программы. Ввод и вывод данных
Арифметические и логические операции в Си-Шарп. Приоритет операций
Типы данных C#. Объявление и инициализация.
Типы данных C#. Объявление и инициализация.
Как и во многих языках программирования, в C# есть своя система типов данных, которая используется для создания переменных. Тип данных определяет внутреннее представление данных, множество значений, которые может принимать объект, а также допустимые действия, которые можно применять над объектом.
В языке C# есть следующие базовые типы данных:
bool: хранит значение true или false (логические литералы). Представлен системным типом System.Boolean
1 2 | bool alive = true; bool isDead = false; |
byte: хранит целое число от 0 до 255 и занимает 1 байт. Представлен системным типом System.Byte
1 2 | byte bit1 = 1; byte bit2 = 102; |
sbyte: хранит целое число от -128 до 127 и занимает 1 байт. Представлен системным типом System.SByte
1 2 | sbyte bit1 = -101; sbyte bit2 = 102; |
short: хранит целое число от -32768 до 32767 и занимает 2 байта. Представлен системным типом System.Int16
1 2 | short n1 = 1; short n2 = 102; |
ushort: хранит целое число от 0 до 65535 и занимает 2 байта. Представлен системным типом System.UInt16
1 2 | ushort n1 = 1; ushort n2 = 102; |
int: хранит целое число от -2147483648 до 2147483647 и занимает 4 байта. Представлен системным типом System.Int32. Все целочисленные литералы по умолчанию представляют значения типа int:
1 2 3 | int a = 10; int b = 0b101; // бинарная форма b =5 int c = 0xFF; // шестнадцатеричная форма c = 255 |
uint: хранит целое число от 0 до 4294967295 и занимает 4 байта. Представлен системным типом System.UInt32
1 2 3 | uint a = 10; uint b = 0b101; uint c = 0xFF; |
long: хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт. Представлен системным типом System.Int64
1 2 3 | long a = -10; long b = 0b101; long c = 0xFF; |
ulong: хранит целое число от 0 до 18 446 744 073 709 551 615 и занимает 8 байт. Представлен системным типом System.UInt64
1 2 3 | ulong a = 10; ulong b = 0b101; ulong c = 0xFF; |
float: хранит число с плавающей точкой от -3.4*1038 до 3.4*1038 и занимает 4 байта. Представлен системным типом System.Single
double: хранит число с плавающей точкой от ±5.0*10-324 до ±1.7*10308 и занимает 8 байта. Представлен системным типом System.Double
decimal: хранит десятичное дробное число. Если употребляется без десятичной запятой, имеет значение от ±1.0*10-28 до ±7.9228*1028, может хранить 28 знаков после запятой и занимает 16 байт. Представлен системным типом System.Decimal
char: хранит одиночный символ в кодировке Unicode и занимает 2 байта. Представлен системным типом System.Char. Этому типу соответствуют символьные литералы:
1 2 3 | char a = 'A'; char b = '\x5A'; char c = '\u0420'; |
string: хранит набор символов Unicode. Представлен системным типом System.String. Этому типу соответствуют строковые литералы.
1 2 | string hello = "Hello"; string word = "world"; |
object: может хранить значение любого типа данных и занимает 4 байта на 32-разрядной платформе и 8 байт на 64-разрядной платформе. Представлен системным типом System.Object, который является базовым для всех других типов и классов .NET.
1 2 3 | object a = 22; object b = 3.14; object c = "hello code"; |
Например, определим несколько переменных разных типов и выведем их значения на консоль:
1 2 3 4 5 6 7 8 9 | string name = "Tom"; int age = 33; bool isEmployed = false; double weight = 78.65; Console.WriteLine($"Имя: {name}"); Console.WriteLine($"Возраст: {age}"); Console.WriteLine($"Вес: {weight}"); Console.WriteLine($"Работает: {isEmployed}"); |
Для вывода данных на консоль здесь применяется интерполяция: перед строкой ставится знак $ и после этого мы можем вводить в строку в фигурных скобках значения переменных. Консольный вывод программы:
Имя: Tom
Возраст: 33
Вес: 78,65
Работает: False
Использование суффиксов
При присвоении значений надо иметь в виду следующую тонкость: все вещественные литералы (дробные числа) рассматриваются как значения типа double. И чтобы указать, что дробное число представляет тип float или тип decimal, необходимо к литералу добавлять суффикс: F/f - для float и M/m - для decimal.
1 2 3 4 5 | float a = 3.14F; float b = 30.6f; decimal c = 1005.8M; decimal d = 334.8m; |
Подобным образом все целочисленные литералы рассматриваются как значения типа int. Чтобы явным образом указать, что целочисленный литерал представляет значение типа uint, надо использовать суффикс U/u, для типа long - суффикс L/l, а для типа ulong - суффикс UL/ul:
1 2 3 | uint a = 10U; long b = 20L; ulong c = 30UL; |
Использование системных типов
Выше при перечислении всех базовых типов данных для каждого упоминался системный тип. Потому что название встроенного типа по сути представляет собой сокращенное обозначение системного типа. Например, следующие переменные будут эквивалентны по типу:
1 2 | int a = 4; System.Int32 b = 4; |
Неявная типизация
Ранее мы явным образом указывали тип переменных, например, int x;. И компилятор при запуске уже знал, что x хранит целочисленное значение.
Однако мы можем использовать и модель неявной типизации:
1 2 | var hello = "Hell to World"; var c = 20; |
Для неявной типизации вместо названия типа данных используется ключевое слово var. Затем уже при компиляции компилятор сам выводит тип данных исходя из присвоенного значения. Так как по умолчанию все целочисленные значения рассматриваются как значения типа int, то поэтому в итоге переменная c будет иметь тип int. Аналогично переменной hello присваивается строка, поэтому эта переменная будет иметь тип string
Эти переменные подобны обычным, однако они имеют некоторые ограничения.
Во-первых, мы не можем сначала объявить неявно типизируемую переменную, а затем инициализировать:
1 2 3 4 5 6 7 | // этот код работает int a; a = 20; // этот код не работает var c; c= 20; |
Во-вторых, мы не можем указать в качестве значения неявно типизируемой переменной null:
1 2 | // этот код не работает var c=null; |
Так как значение null, то компилятор не сможет вывести тип данных.
Понятие локальных и глобальных переменных.
Локальная переменная - переменная, объявленная внутри какой-либо функции. Областью видимости локальных переменных является тело функции, в которой эта переменная объявлена. Локальная переменная может быть проинициализирована константой или выражением, соответствующими ее типу. Глобальная переменная - переменная, объявленная за пределами всех функций.
Определение алгоритма. Понятность3._Детерминированность4._Массовость5._РезультативностьДискретность'>Свойства алгоритма. Формы записи алгоритма.
Алгоритм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. Некоторые инструкции должны выполняться строго после завершения работы инструкций, от которых они зависят.
Свойства алгоритма.
1. Дискретность.
2. Понятность
3. Детерминированность
4. Массовость
5. Результативность
Дискретность - это свойство алгоритма, когда алгоритм разбивается на конечное число элементарных действий (шагов).
Понятность - свойство алгоритма, при котором каждое из этих элементарных действий (шагов) являются законченными и понятными.
Детерминированность - свойство, когда каждое действие (операция, указание, шаг, требование) должно пониматься в строго определённом смысле, чтобы не оставалась места произвольному толкованию, чтобы каждый прочитавший указание, понимал его однозначно.
Массовость - свойство, когда по данному алгоритму должна решаться не одна, а целый класс подобных задач.
Результативность– свойство, при котором любой алгоритм в процессе выполнения должен приводить к определённому результату. Отрицательный результат также является результатом.
Алгоритм может быть записан различными способами: на естественном языке в виде описания; в виде графических блок-схем; на специальном алгоритмическом языке
Способы описания алгоритмов
Основные способы записи алгоритмов:
• словесный (родном языке);
• с помощью схем (графический);
• языком псевдокоде;
• языком программирования.
Словесный способ описания алгоритмов (описание на родном языке) - наиболее распространенная и доступная форма представления алгоритма, ориентированного на выполнение независимо от его подготовки. Взять два натуральных числа и сравнить их: если они равны, то всякое из них является самым общим делителем. Если же нет, то другой из них заменим разницей большего и меньшего и начнем все сначала. (Например: натуральные числа 12, 18 – общий делитель 6).
Язык блок-схем
Алгоритм можно описать разными способами: словами, на языке программирования, а также с помощью блок-схем.
На языке блок-схем каждый шаг алгоритма описывается с помощью соответствующей фигуры, а последовательность выполнения шагов определяется линиями-связями. Блок схемы читаются сверху вниз и слева направо.
Язык блок-схем прост (хотя существуют его расширенные варианты):
· Прямоугольник – выполнение действия (например, c = a + b)
· Ромб – проверка условия (например, a > b). Если условие выполняется, то алгоритм идет по линии «да», если не выполняется – то по линии «нет».
· Скругленный прямоугольник – начало и конец алгоритма
· Скошенный прямоугольник – ввод-вывод данных (например, получение значения переменной, вывод результата на экран монитора).
Это не полное описание языка блок-схем.
Схе́ма — графическое представление определения, анализа или метода решения задачи, в котором