Преимущества от использования типизирования
Содержание
1) Введение.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 3
2) Структурная схема алгоритма.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 6
3) Комментарии к схеме алгоритма.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. …7
4) Текст программы.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..8
5) Комментарии к программе.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .9
6) Заключение.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..10
7) Список литературы.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..11
Введение
Запись. Структура данных, состоящая из нескольких компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа.
Тип «запись» объявляется следующим образом:
TYPE <Имя типа > = RECORD
<имя поля1>:<тип поля1>;
<имя поля2>:<тип поля2>;
…
<имя поляN>:<тип поляN>
End;
Если тип нескольких полей совпадает, то имена полей можно перечислять через запятую.
Доступ к отдельному компоненту записи производится указанием составного
имени: имени переменной и через точку имени поля.
Для того, чтобы не повторять часто одну и ту же общую часть составного имени, ее, указав один раз, можно далее умалчивать, используя оператор присоединения.
Структура. Конструкция большинства языков программирования, позволяющая содержать в себе набор переменных различных типов. В языках семейства Pascal структуры традиционно называют записями.
С внедрением концепции объектно-ориентированного программирования понятие структуры было расширено, в частности была добавлена возможность включения в структуру функций-методов, появились ключевые слова для ограничения доступа к элементам структуры. В результате структура стала очень похожа на классы и интерфейсы, однако в большинстве языков сохранила некоторые отличия от них.
Отличия для языка С#:
· Размещение: в области стека.
· Копирование: создаётся отдельная копия объекта, которая после копирования живёт «своей жизнью» (классы — создаётся ссылка на тот же класс.
· Наследование: не разрешается дополнение своими свойствами; от него нельзя наследовать (класс — позволяет, кроме случаев когда класс создавался с ключевым словом sealed, не разрешающим наследование)
· Передача параметров: как локальные копии переменных (в классах — как ссылки)
· Конструктор: да, кроме конструктора по умолчанию, который не требует параметров (в классах — да, без ограничений)
· Освобождение переменной: при выходе за пределы видимости.
Типизированные файлы. Единицы хранящихся данных являются данные любого типа Турбо Паскаля, кроме файлов. В этом случае файловые переменные определяются следующим образом:
var <имя файловой переменной> = FILE OF <тип>;
В теле программы вывод данных в такой файл (или ввод из него) осуществляется через переменные соответствующего типа процедурами Read(), Write().
Преимущества от использования типизирования
1. Некорректное присваивание. Пусть переменная объявлена как имеющая числовой тип. Тогда попытка присвоить ей символьное или какое-либо другое значение в случае статической типизации приведёт к ошибке компиляции и не даст такой программе запуститься. В случае динамической типизации интерпретатор программы перед выполнением потенциально опасного действия сравнит типы данных переменной и значения и также выдаст ошибку. Всё это позволяет избежать неправильной работы и «падения» программы.
2. Некорректная операция. Позволяет избежать попыток применения выражений. Все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была выполнима. С использованием типизирования такие ошибки отсекаются опять же на этапе компиляции.
3. Некорректная передача параметров. Если функция «синус» ожидает, что ей будет передан числовой аргумент, то передача ей в качестве параметра строки» может иметь непредсказуемые последствия. При помощи контроля типизирования такие ошибки также отсекаются на этапе компиляции.
· Стандартизация. Благодаря соглашениям о типах, поддерживаемых большинством систем программирования, сложилась ситуация, когда программисты могут быстро менять свои рабочие инструменты, а программы не требуют больших переделок при переносе исходных текстов в другую среду. Стандартизации по универсальным типам данных ещё есть куда развиваться.