lec_4_sem_2_inf.ppt
- Количество слайдов: 21
Программирование
Переменные и константы Базисным понятием для организации данных, т. е. информации, подлежащей обработке, является переменная. Под переменной понимают идентификатор (имя), который указывает на какой-либо элемент данных, а в объектноориентированных языках — на объект, в котором содержатся как данные, так и процедуры. Реальные данные, с которыми работает программа, — это числа, строки и логические величины (аналоги 1 и 0, «да» и «нет» , «истина» и «ложь» ). Эти типы данных называют базовыми. Кроме имени и значения, переменная обычно имеет тип, определяющий, какая информация хранится в данной переменной. Переменные с указанием их типа можно вводить в программу с помощью специальных команд описания (объявления, декларации).
Значения переменных разных типов допускается преобразовывать друг в друга в соответствии с соглашениями языка программирования. Такой процесс называется приведением типов. Переменные могут существовать на всем протяжении работы программы — тогда они называются статическими, а могут создаваться и уничтожаться на разных этапах ее функционирования — такие переменные называются динамическими. Все остальные данные в программе, значение которых не меняется на протяжении ее работы, называются константами Числовые данные. Числа обычно бывают двух видов: целые и дробные. Вычисления над целыми числами выполняются точно, вычисления над дробными числами — приближенно. Для записи арифметических действий используются арифметические операторы. В некоторых языках программирования они считаются не операторами, а операциями,
К основным арифметическим операциям относятся: + (сложение) (вычитание) * (умножение) / (деление) С помощью арифметических операций формируются арифметические выражения, которые состоят из операций и операндов (переменных и констант). При создании программ не обойтись без логических выражений. Они отличаются тем, что результат их вычислений может принимать только одно из двух допустимых значений — true (истина, да, включено) и false (ложь, нет, выключено). Чаще всего значение false ассоциируется с нулем, а значение true — с числом 1 или просто ненулевым значением. Приоритеты всех логических операций ниже, чем приоритеты операций сравнения, поэтому сравнения всегда выполняются первыми. Строки в языках программирования всегда заключаются в кавычки. Строка может быть пустой — не содержать ни одного символа.
Строки можно сравнивать друг с другом на эквивалентность (равно и не равно). Допускается также операция сцепления строк, записываемая с помощью символа «+» или &. Некоторые языки программирования допускают в явном виде работу с указателями — адресами физической памяти. Сложные данные (Массивы и структуры) Часто в технике, науке и жизни используются не отдельные числа и величины, а множества связанных однородных величин. Так, дата — это совокупность трех чисел, например 20. 08. 50. С листом бумаги связывается два числа — длина и ширина, например 250 x 170 мм; с чемоданом — три числа — длина, ширина, высота, например 500 x 300 х150. Многочлен У = -7 х4+4 х3+5 х2+2 х+3 однозначно определяется совокупностью из пяти чисел-коэффициентов: 3, 2, 5, 4, -7.
Несложно представить и другие множества связанных однородных величин с шестью, семью элементами и более. Такие множества широко используются и в информатике, где они называются массивами. Массивом называется упорядоченная совокупность однородных величин, обозначенных каждая одним и тем же именем с различными целочисленными индексами, изменяющимися по порядку. Индекс (индексы) определяет (ют) положение элемента в массиве. Каждому массиву обычно присваивается имя, что дает возможность различать массивы между собой и обращаться к ним по именам. Массивы. Доступ, к элементам массива происходит по их положению, по номеру или индексу. Массивы, границы которых явно заданы в команде описания, называются статическими. Их размер известен заранее и не меняется на всем протяжении работ программы. Динамические массивы – это массивы размер которых может меняться во время выполнения программы.
Различают разные виды массивов в зависимости от их внутреннего строения, взаимного расположения элементов. Так, элементы массива могут располагаться строго последовательно, например {3, 4, 2, 8}. Такие массивы называются одномерными. Каждый подобный массив определяется именем и числом элементов и обозначается T(1: n), где Т — имя массива; n — число элементов массива, например А (1: 4). Каждый массива первый массива элемент массива также получает имя — он обозначается именем с индексом, равным порядковому номеру элемента. Например, элемент массива А будет обозначен как а 1, третий элемент К получит имя k 3 и т. д. Пусть, например, у нас два чемодана с размерами 600 x 250 x 700 мм и 500 x 250*650 мм. Можно представить размеры их как две тройки чисел, как два одномерных массива — А (1: 3) и В (1: 3). А(1: 3)={600, 250, 700}={a 1, а 2, а 3}; B(1: 3)={500, 250, 650}={b 1, b 2, b 3}, где a 1, а 2, а 3, b 1, b 2, b 3 — имена элементов массива, т. е. а 1=600; а 2=250; а 3=700; b 1=500; b 2=250; b 3=650.
Массивы могут быть как числовые, так и текстовые. Например, список старост в студенческих группах: Иванов. Петров. Сидоров. Голопупова. можно рассматривать как текстовый массив и обозначить так: SP(l: 4)= sp 1, sp 2, sp 3, sp 4 где sp 1= «Иванов» , sp 2 = «Петров» и т. д. Номера фамилий в массив не включаем, так как они совпадают с индексами элементов.
Рассмотрим теперь документ, составленный в деканате Номер группы Число бюджетных студентов Число студентов, обучающихся на коммерческой основе 761 10 18 762 10 20 764 7 23 765 10 22 Документ представляет собой множество из 12 связанных между собой однородных величин — это тоже пример массива. Но элементы его расположены в четыре строки по три элемента в каждой (три столбца). таблицы из нескольких строк с равным числом элементов в каждой называют в информатике двумерными массивами. В математике подобные массивы называют матрицами. Каждый двумерный массив определяется именем, числом строк и столбцов и обозначается: Т (1: m, 1: n), где Т — имя массива; m (n) — число строк (столбцов). Наш документ можно обозначить так: B (1: 4, 1: 3). т. е. как массив В из четырех строк и трех столбцов.
Как и одномерные, двумерные массивы могут быть не только числовыми, но и текстовыми. Фамилия Вид спорта Петров Борьба Иванов Плавание Сидоров Бег Меню является совокупностью из 8 связанных величин, но представить их как один массив нельзя, так как здесь объединены разнородные величины текстовые и числовые. Блюдо Цена Борщ 35 Котлета 40 Каша 20 Чай 3 Поэтому следует ввести два одномерных массива разного типа — один текстовый и один числовой: B(l: 4)={b 1, b 2, b 3, b 4}={ «борщ» , «котлета» , «каша» , «чай» }, С(1: 4)={с1 с2, с3, с4}={35; 40; 20; 3}.
Структуры. Например, чтобы организовать обработку данных по студентам, в программе удобно не просто описать десяток различных переменных, а объединить их в структуру (или запись) «студент» , состоящую из полей разного типа «имя» , «пол» , «год рождения» , «группа» и т. д. Структура объединяет группу разных данных под одним названием. Получить доступ к отдельным составляющим (полям) этой структуры можно по их именам. В развитых языках программирования допускаются массивы, состоящие из структуры и структуры, состоящие из массивов. При этом возможны достаточно сложные формы записи. Отличие базовых типов от сложных в том, что в базовых типах нельзя выделить составные части. В современных языках программирования разрешено определять собственные типы данных, которые допускается использовать в командах описания наравне с базовыми типами. Отличие базовых типов от сложных в том, что в базовых типах нельзя выделить составные части.
Разделение операторов. Если записать подряд несколько операторов и не указать, где кончается один и начинается другой, то в процессе компиляции возникнет множество проблем с выделением отдельных операторов. Поэтому операторы, например, в Бейсике заканчиваются двоеточием «: » или переходом на новую строку. Блок операторов. Часто в программе возникает необходимость выполнить группу операторов (например, в зависимости от какого-либо условия). Такая группа объединяется в блок с помощью специальных скобок начала и конца блока, называемых логическими скобками. В Бейсике явного понятия «блок операторов» нет. А в некоторых языках это фигурные скобки или слова «begin» и «end» . Область действия переменных. Команды описания переменных могут встречаться в разных местах программы. При этом считается, что объявленные в них переменные являются локальными и их область действия — текущий блок, в котором они описаны.
Задача Вычислите значение Y по одной из формул X+a, если X<10; Y= X-b 1, если 10 X 20; c+b 2, если 20<X<30; c-b 3, если 30 X, где Здесь b 1 b 2, b 3 будем рассматривать как элементы массива В (1: 3).
Пояснение 1. Условие задачи означает, что Y зависит от X, а X может принимать любое значение из интервала (- , + ). Этот интервал разбит на четыре области и в пределах каждой области Y вычисляется по одной из формул. Это хорошо видно на графике функции Y. Здесь значение x=10 является границей для первой и второй областей; х=20 — для второй и третьей, а х=30 — для третьей и четвертой областей. Так как показано на рисунке 81. y=X-b 1 y=c+b 2 y=X+a a y=c-b 3 0 10 20 30
Решение. 1. Исходные данные: с, а, В(1: 3). Результаты: X, Y. 2. Метод решения задачи (в общем виде): ввод с, а, B(1: 3); вычисление X; вычисление Y; вывод X, Y. 3. Укрупненная схема алгоритма Ввод с, В(1: 3), а 1 Вычисление X 2 Вычисление Y Вывод X, Y
Рассмотрим подробно блок 2 этой схемы. Он должен обеспечить выявление области, которой принадлежит значение X, для чего достаточно проверить заданные условия по порядку, например, сверху вниз: Проверяем Х<10 если условие истинно Да, вычисляем Y=X+a; если условие ложно Нет, проверяем: 10 X 20 если Да, вычисляем Y=X-b 1; если Нет, проверяем: 20<Х<30 если Да, вычисляем Y=c+b 2; если Нет, вычисляем Y=c-b 3
Процесс решения задачи распадается на этапы (операции): «проверка истинности условия» , «вычисление по формуле» . Согласно «Основным принципам алгоритмизации» , заменяем каждую такую операцию соответствующим блоком — ромбом, прямоугольником и соединяем согласно порядку их выполнения линиями. В итоге получаем схему блока 2. Объединив ее с блоками 1 и 3, получим схему алгоритма всей задачи Начало Ввод с, В(1: 3), а Блок 1 Да X<10 (10 X) Нет Да X 20 Y=X-b 1 Блок 2 (20<X) Нет Да X<30 Пояснение 2. Блок, общий для нескольких ветвей, можно изображать в схеме один раз, например блок «Вывод» . Y=X+a (30 X) Нет Y=c-b 3 Вывод X, Y Конец Y=c+b 2
Представление переменной величины в ЭВМ и обозначение ее в алгоритме Пусть величина X принимает значения: 3, 6, 9, 12, 15, 18. Их можно представить как массив Х(1: 6). В этом случае каждое значение X в схеме алгоритма обозначается именем массива с некоторым индексом, а в ЭВМ каждое значение X будет храниться в отдельной ячейке X(1: 6)=(3, 6, 9, 12, 15, 18)=(x 1, x 2, ………. . …. x 6) Яч. 1 Яч. 2 Обозначение в алгоритме Яч. 6 Его преимущество — возможность доступа к любому значению величины в любой момент времени. Недостаток — большой расход памяти при большом числе значений переменной.
Допустим далее, что значения величины X используются последовательно по мере их возрастания. Тогда все они, от 3 до 18, могут быть вычислены последовательно, если включить в алгоритм формулу Xi+1=Xi+3. Здесь значения X будут восприниматься как элементы массива, так как переменная X — с индексом. Чтобы избежать этого, выражение записывают в алгоритме так: Х=Х+3. В общем случае при последовательном использовании значений переменной любое выражение вида Xi+1=f(xi) можно преобразовать в алгоритме в такое: X=f(x) Здесь X — простая переменная. При этом символ «X» , стоящий справа от знака «=» , означает предшествующее, а тот же символ слева от знака «=» — последующее значение переменной X. В этом случае для переменной X выделяется в ЭВМ только одна ячейка, и все значения Х последовательно помещаются в нее, причем каждое новое значение будет стирать предшествующее. Это второй способ представления переменной в памяти компьютера, При этом должно быть задано начальное значение переменной, а также либо конечное ее значение, либо число ее значений. Х=Х+3 2 1 Ячейка для x
При этом способе требуемый объем памяти много меньше, чем в первом случае, однако он применим лишь тогда, когда существует закономерность изменения значений переменной, и эти значения используются строго последовательно. Итак, рассмотрен очень важный вопрос, поскольку в любой задаче в первую очередь нужно для каждой используемой величины осознанно выбирать один из двух способов представления ее. Оператор присваивания позволяет изменять текущее значение переменной. Синтаксис его очень простой. В левой части оператора присваивания указывается имя переменной, значение которой изменяется, а справа — выражение, значение которого будет записано в переменную. При этом старое значение, хранившееся в ней, безвозвратно пропадет. Например, а=а+2. Комментарии. При составлении программы очень полезно комментировать различные участки кода, чтобы потом, обратившись к ним, сразу понять, что конкретно выполняется в том или ином месте программы.
Примечание. Массивы и элементы массивов принято обозначать заглавными и строчными буквами соответственно, но в тех задачах, решение которых заканчивается составлением программы, для обозначения указанных величин можно использовать лишь заглавные буквы, с тем, чтобы сохранить преемственность в изображении одних и тех же величин в условии задачи, в алгоритме и программе. Примечание. В сложных задачах выделяются в первую очередь наиболее крупные этапы решения задачи (подзадачи) и изображается порядок выполнения их в виде схемы, называемой укрупненной. Далее каждая подзадача рассматривается отдельно как самостоятельная задача и для каждой составляется своя схема алгоритма. Только после этого составляется подробная схема алгоритма всей задачи совмещением схем отдельных подзадач.
lec_4_sem_2_inf.ppt