Лекция 2. Технология разработки программ (часть 1) (1152905), страница 2
Текст из файла (страница 2)
«Информатика. Язык Питон» переменное – эта характеристика может изменяться во времяработы программы (обычно называется «переменная»); постоянное – полученное значение не изменяется на всем протяжении работы программы (обычно называется «константа»).Что касается имени переменной (или константы), можно дать основныерекомендации верные для любого языка:− не экономьте на именах, старайтесь давать имена, которые указывают о назначении переменной, например, Count – для счетчика,Num – для номера, Sum – для суммы. Можно давать длинные имена, например, Name_Client_Node3 – для строковой переменной,хранящей «имя клиента телефонного узла №3».
Придумывать имена бывает довольно сложно, но надо запомнить правило – если сэкономишь время на именовании переменных, потеряешь гораздобольше и времени, и сил, когда придется вернуться к программечерез некоторый период (в целях ее доработки, модификации). Ещесложнее, если придется иметь дело с подобными «экономнымипрограммистами» при совместной разработке программных продуктов в команде.− допустимо использовать краткие обозначения, принятые в математике: A, B, C – для массивов и матриц; x, y, z – для координат плоскости или аргументов функций; n, m – для обозначения размерности массивов;− языки программирования по разному относятся к регистрам, например Паскаль не различает регистров в именах (sUm и SUM вПаскале – это одно и то же), а Питон чувствителен к регистру.
Такжечувствительны к регистру и такие языки, как С, Java, Perl, поэтомулучше сразу приучать себя к соблюдению единообразия в именах.Основные базовые типы данных, которые будут определеныпрактически в любом языке:числовые типы (целые, вещественные, комплексные, со знаком илибез знака);символьные типы (строки или отдельные символы);логические типы (имеют только два значения «истина» и «ложь»).Тип переменной определяет диапазон допустимых значений, принимаемыхвеличинами этого типа; набор операций, допустимых над даннойвеличиной и объем памяти, отводимой под эту переменную.9Воробьева И.А. «Информатика.
Язык Питон»Помимо рассмотренных выше, данные обладают еще одной важнойхарактеристикой – структурой. По своей структуре, данные делятся на:простые переменные (обычно, базовые встроенные типы);однородные, например, массивы простых типов (обычно, встроенныетипы, хотя их может быть довольно большое разнообразие);неоднородные – как правило, это пользовательские типы, которыесредства языка позволяют создавать программисту, типы – удобныедля программиста для решения конкретных задач.Последнее разделение, о котором стоит упомянуть применительно ккомпьютерной технике – это разделение на статические типы идинамические типы данных.
Подобное разделение характеризует:способ размещения данных в памяти и доступа к ним;время жизни (правила, когда переменная гарантированно сохраняетсвое значение);возможности изменения размера данных;влияет на правила копирования объектов данного типа.3.2.2. Данные. Диапазоны данныхЦелых, вещественных, а на текущий момент даже строковых исимвольных типов в языках программирования, на самом деле гораздобольше. Также в языках могут различаться принципиально способытипизации, взятые за основу. Под базовый тип «целое» может бытьвыделено ограниченное число байтов и тогда будет указан диапазонпринимаемых значений (например С++, Паскаль или «Питон 2»), а может и«неограниченное», как в «Питон 3».
Но так как компьютер это все-такиустройство с физическим ограничением, то даже в версии языка «Питон 3»длина целого ограничена размерами свободного места в оперативнойпамяти машины. Представление вещественных чисел в машине также имеетфизические ограничения, связанные с разрядностью машины, мы об этомуже говорили.
В качестве примера многообразия типов и ограниченияпринимаемых значений, с которыми можно столкнуться, приведем таблицу10Воробьева И.А. «Информатика. Язык Питон»диапазонов и типов данных (только их части) в языке Паскаль4:Таблица 3.1. Диапазоны базовых типов в PascalДлина,байтЦЕЛЫЕ ТИПЫДиапазон значенийsmallint2–32768..32767bytewordshortintlongint=integer1210..2550..65535–128..1274–2147483648..2147483647–9223372036854775808..9223372036854775807ВЕЩЕСТВЕННЫЕ ТИПЫsingle41,5*10–45 — 3,481038, (7-8 знач.цифр)double=85*10–324 — 1,7*10308 , (15-16 знач.цифр)realextended103,4*10–4932 — 1,1*104932, (19-20 знач.цифр)ЛОГИЧЕСКИЙ ТИПboolean1true, falseСИМВОЛЬНЫЙ ТИПAnsiChar=все символы кодировки ASCII5, которым1charсоответствуют числа от 0 до 255СТРОКОВЫЙ ТИПот 0 до массив символов типа char, где в нулевомstring255байте хранится реальная длина строкиInt648Определение диапазонов для входных данных и вычисление длявыходных – еще один важный пункт спецификации, который нельзяигнорировать.
В задаче 3.1. уже был затронут вопрос выбора типов идиапазонов. Из таблицы также видно, что выбор типа данных может бытьобоснован не только смысловой нагрузкой задачи, но и предельнымидиапазонами исходных параметров.4Поддерживаемые типы, их обозначение и диапазоны нужно сверять в справочной системе той среды разработки программ, в которой вы работаете; также есть зависимость количества выделяемых байт под переменную от разрядности операционной системы, например, 32-разряда или 64-разряда.5https://ru.wikipedia.org/wiki/ASCII11Воробьева И.А.
«Информатика. Язык Питон»В практических задачах на исходные данные накладываютсяестественные ограничения. Например, в задаче: составить графикотпусков работников сети магазинов «Иваныч», все параметры (числомагазинов сети, число работников для каждого магазина, число отпускныхдней, количество месяцев в году) заведомо конечны и имеют как верхнюю,так и нижнюю границу.
Нижняя граница определяется по смыслу – всевеличины будут 0 или. Верхняя граница определяется даннымиконкретной сети «Иваныч», но даже для решения задачи для произвольнойсети магазинов, сложно представить сеть, у которой «число магазинов»стремится к.В лабораторных работах обычно формулируются задачи, направленныена изучение определенного механизма программирования или известногометода (методы сортировки, поиска корня уравнения), т.е. они являются непрактическими задачами, а теоретическими. Но и в таких задачахигнорирование анализа диапазонов данных может приводить к критическимошибкам программы. Рассмотрим два примера.Пример.3.2.Если задан «радиус окружности» или «длина сторонытреугольника», ясно, что они точно не могут быть отрицательны, а равенствонулю допустимо, но довольно бессмысленно.
Если же в алгоритмепотребуется вычислять функцию ln(x), тогда х тоже обязан быть заданположительными числами иначе в программе произойдет ошибка спрерыванием и завершением программы – так называемая Run-time Error –Ошибка времени выполнения.Пример.3.3.Не такой очевидный, как предыдущий, однако в немиспользование, с виду, безобидных входных величин может привести к Runtime Error. Рассмотрим задачу: Даны два целочисленных массива из nэлементови. Найти сумму (Sum) величинвида.Допустим, мы в качестве языка программирования выбрали Паскаль ив нем величины целого типа integer (см.
табл. 3.1.) для элементов массивовA, B и результата Sum. Определим входные диапазоны так:. Выглядит вполне невино. Подсчитаем диапазон измененияSum. Максимальное положительное:и минимальное отрицательное:.Итак,. Смотрим диапазон для типа integer втаблице 3.1 и видим, что значения величины Sum попросту не поместятся в12Воробьева И.А. «Информатика. Язык Питон»отведенные для integer 4 байта. Действительно,,а.Из примеров 3.2 и 3.3 видно, что даже, если в начальнойформулировке задачи явно не обозначена необходимость введениядиапазонов для входных данных, она, тем не менее, существует.Первоначально их надо вводить исходя из смысла задачи, например: номер месяца в году изменяется от 1 до 12, целый (или порядковый)тип; длина стороны фигуры больше нуля, целый или вещественный тип; среднее арифметическое целых чисел будет величиной вещественного типа; число k отрицательных точек среди n заданных будет меняться от 0 доn (включительно, ведь отрицательных точек может не оказаться, k=0).Следующий этап, ограничение оставшихся входных данных исходя из техсоображений, что практические задачи всегда имеют ограничение и сверху иснизу: при поиске максимального элемента в целочисленном массиве достаточно взять диапазон целых чисел от -10 до 10, что обеспечит возможность проверки надежности алгоритма и кода на отрицательных, положительных и нулевых значениях; длина стороны фигуры больше нуля и меньше 100.Наконец, надо уметь просчитать диапазоны выходных данных длядополнительного контроля: верности выбора ограничений входных данных; верности выбора типов данных в задаче (программе); полученных результатов, так как, если вы посчитали, что результат лежит в диапазоне целых значений от -100 до 25, а программа выдает результат, равный -105, следовательно, в программе (или алгоритме)ошибка!Формат данныхВ представлении данных немалую роль имеет понятие формата.
Скакой бы точностью ни проводились вычисления в машине, имеет значението, в каком виде исходные данные поступают в машину и в каком видеданные результата будут отображены конечному потребителю.Мырассмотрим примеры форматов в следующей лекции.13Воробьева И.А. «Информатика. Язык Питон»Наэтапе выбора метода решения необходимо дать ответ наследующие вопросы:определить какие математические структуры больше всего подходятдля решения этой задачи – описать математическую модель задачи;есть ли уже решения для аналогичной задачи.На самом деле для решения сложной практической задачиприходится делать намного больше:определить какие математические структуры больше всего подходятдля решения этой задачи;описать математическую модель задачи;определить есть ли уже решения для аналогичной или близкой задачи;возможно придется упрощать математическую модель (исключаядетали, параметры, связи, упрощая функции взаимодействия и т.п.) иискать решения среди них;искать способы адаптации (модификации) существующих решений дляупрощенной модели к конкретной модели;часто для практических задач приходится искать решения лежащие настыкеразличныхдисциплиннауки,такназываемыемеждисциплинарные задачи..