Данные и величины Совокупность величин, с которыми работает компьютер, принято называть данными. По отношению к программе данные делятся на исходные, результаты (окончательные данные) и промежуточные (рисунок 2.1), которые получаются в процессе вычислений.
Рисунок 2.1- Классификация данных
Например, при решении квадратного уравнения:
ax2 + bx + с = 0
исходными данными являются коэффициенты а, b, с, результатами — корни уравнения х1, х2, промежуточным данным — дискриминант уравнения:
D = b2 — 4aс.
Для успешного освоения программирования необходимо усвоить следующее правило: всякая величина занимает свое определенное место в памяти ЭВМ (иногда говорят — ячейку памяти). Хотя термин «ячейка» с точки зрения архитектуры современных ЭВМ несколько устарел, однако в учебных целях его удобно использовать.
У всякой величины имеются три основных свойства: имя, значение и тип. На уровне команд процессора величина идентифицируется при помощи адреса ячейки памяти, в которой она хранится. В алгоритмах и языках программирования величины делятся на константы и переменные.
Константа —неизменная величина,и в алгоритме она представляетсясобственным значением, например: 15, 34.7, k, true и т.д.
Переменные величины могут изменять свои значения в ходевыполнения программы и представляются символическими именами — идентификаторами, например: X, S2, codl5. Любая константа, как и переменная, занимает ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке.
Типы величин. Теперь о типах величин — типах данных. С понятием типа данных вы уже, возможно, встречались, изучая в курсе информатики базы данных и электронные таблицы. Это понятие является фундаментальным для программирования.
В каждом языке программирования существует своя концепция типов данных, своя система типов.
Тем не менее, в любой язык входит минимально необходимый набор основных типов данных, к которому относятся: целый, вещественный, логи-ческий и символьный типы.
С типом величины связаны три ее характеристики: - множество допустимых значений, - множество допустимых операций, - форма внутреннего представления.
В таблице 2.1 представлены эти характеристики основных типов
данных.
Типы констант. Типы констант определяются по контексту (т. е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных. Есть еще один вариант классификации данных — по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина — одно значение, для структурированных: одна величина — множество значений.
К структурированным величинам относятся массивы, строки, множества и т.д.
Таблица 2.1 - Типы данных и величин
Тип
Значения
Операции
Внутреннее
представление
Целый
Целые
Арифметические
Формат
с
положительные
и
операции
с целыми
фиксированной
отрицательные
числами: +, -, ·, целое
точкой
числа в
некотором
деление и остаток от
диапазоне. Примеры
деления.
Операции
23,-12, 387
отношений (<, >, = и
др.)
Вещественный
Любые
(целые
и
Арифметические
Формат
дробные)
числа
в
операции: +, -, ·, /.
плавающей точки
некотором
Операции отношений
диапазоне.
Примеры: 2,5, -0,01,
45,0, 3,6·109
Логический
True (истина)
Логические
1 бит:
False (лож)
операции:
И and,
1- true
ИЛИ or, НЕ not.
0- false
Операции отношений
Символьный
Любые
цифры
Операции отношений
Коды
таблицы
компьютерного
символьной
алфавита.
кодировки.
1
Примеры: ‘a’, ‘5’,
символ – 1 байт
‘+’, ‘S’
ЭВМ — исполнитель алгоритмов. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя в рамках его системы команд. О каком же исполнителе идет речь при обсуждении вопроса о программировании для ЭВМ?
Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс ЭВМ + Система программирования (СП). Программист составляет программу на том языке, на который ориентирована СП. Иногда в литературе такой комплекс называют виртуальной ЭВМ.
Например, компьютер с работающей системой программирования на Бэйсике называют Бэйсик-машиной; компьютер с работающей системой программирования на Паскале называют Паскаль-машиной и т.п. Схематически это изображено на рисунке 2.2.Независимо от того, на каком языке программирования будет написана программа, алгоритм решения любой задачи на ЭВМ может быть составлен из команд:
- присваивания;
- ввода;
- вывода;
- обращения к вспомогательному алгоритму;
- цикла;
- ветвления.
Классификация и характеристика языков программирования.
Тенденции развития языков программирования.
Сущность алгоритмизации вычислительного процесса.
Алгоритмы обработки информации. Принципы обработки алгоритмов.
Общее понятие алгоритма.
Свойства алгоритмов и методы построения
Эмпирические подходы к понятию «алгоритм».
Структурный подход к разработке алгоритмов.
Главным простым воздействием в вычислительных методах считается присваивание смысла переменной величине. В случае, если смысл константы определен обликом ее записи, то переменная получает определенный смысл лишь только в итоге присваивания. Присваивание имеет возможность реализоваться 2-мя методами: с поддержкой команды присваивания и с поддержкой команды ввода.
Составление алгоритмов Так как операция присваивания считается важной операцией в вычислительных методах, рассмотрим ее более детально.
Рассмотрим последовательное выполнение 4 команд присваивания, в коих принимают участие 2 переменные величины а и b.
В приведенной ниже таблице визави всякой команды присваивания указываются смысл переменных, которые уточняются впоследствии выполнения команды.
Этот пример иллюстрирует три основных свойства команды присваивания:
- пока переменной не присвоено значение, она остается неопределенной; - значение, присвоенное переменной, сохраняется в ней вплоть до выполнения следующей команды присваивания этой переменной; - новое значение, присваиваемое переменной, заменяет ее предыдущее значение.
Таблица 3.1 - Схема работы команды присваивания
Команда
а
b
a: =1
1
-
b: =2 · a
1
2
a: = b
2
2
b: = a + b
2
4
Рассмотрим один очень полезный алгоритм, который приходится часто использовать при программировании. Даны две величины: X и Y. Требуется произвести между ними обмен значениями. Например, если первоначально было Х = 1, Y = 2, то после обмена должно стать: Х = 2, Y = 1.
Хорошей моделью для решения этой задачи является следующая ситуация: имеются два стакана — один с молоком, другой с водой. Требуется произвести обмен их содержимым. Всякому ясно, что в этом случае нужен дополнительный третий пустой стакан. Последовательность действий будет следующей:
1) Перелить из первого стакана в третий.
2) Перелить из второго в первый.
3) Перелить из третьего во второй. Цель достигнута!
По аналогии для обмена значениями двух переменных нужна третья дополнительная переменная. Назовем ее Z. Тогда задача обмена решается последовательным выполнением трех команд присваивания.
Таблица 3.2 - Схема работы команды присваивания
Команда
X
Y
Z
ввод X, Y
1
2
-
Z:=X
1
2
1
X:=Y
2
2
1
Y:= Z
2
1
1
стаканами
Аналогия со не совсем точна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (Х: = Y) переменная, стоящая справа (Y), сохраняет свое значение.
Алгоритм для деления дробей имеет линейную структуру. В нем все команды выполняются в строго однозначной последовательности, каждая по одному разу. Линейный алгоритм составляется из команд присваивания, ввода, вывода и обращения к вспомогательным алгоритмам.
Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов. Такой порядок выполнения называется естественным. Последовательность команд образует составную команду «цепочка», которая в записи блок-схемой имеет вид, приведенный на рисунке 1.
Рис.1 Блок-схема линейного алгоритма.
В математике к линейным алгоритмам относятся алгоритмы, представленные формулами. Они наиболее просты для программирования. Заметим, что естественный способ кодировки формул делает программу легкочитаемой, но нередко приводит к лишним вычислениям, поэтому, чтобы избежать повторных вычислений и сократить общее количество операций выполняйте тождественные преобразования выражений. С другой стороны, надо знать, что не всегда следует осуществлять оптимизацию, поскольку она является не правилом, а исключением. Этому есть три причины, главная из которых состоит в том, что оптимизация ухудшает наглядность программ, вторая - выгоды от оптимизации должны быть существенными и третья - современные системы, как правило, имеют удовлетворительные оптимизирующие компиляторы.
На практике линейные алгоритмы в чистом виде встречаются редко: при расчете арифметических и алгебраических выражений, при расчете по формулам, при решении ряда бытовых задач. При исполнении алгоритмов приходится не только находить значения величин, но и анализировать их свойства, сравнивать их друг с другом и в зависимости от результата сравнения выбирать ту или иную ветвь алгоритма. Алгоритмы, имеющие несколько ветвей, называются нелинейными. К таким относятся разветвляющиеся и циклические алгоритмы. Для их записи применяются составные команды.
Ветвящийся алгоритм. Ветвящимся называется такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого-либо логического условия). Базовая структура "ветвление". Определяет выполнение действий в зависимости от выполнения условия. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран
После того как мы проверили условие, алгоритм разделяется на две части, первая выполняется в случае, если условие оказывается истинным, другая часть выполняется в противном случае. Но нужно четко разделять понятие записи и выполнения алгоритма. Записывая алгоритм, мы прописываем обе ветви ветвящейся конструкции: и то, что будет выполняться при истинном условии, и то, что будет выполняться при ложном. Однако при выполнении алгоритма исполнитель выполнит только одну из ветвей алгоритма, так как в зависимости от входных данных условие может быть либо истинным, либо ложным, но не истинным и ложным одновременно.
Именно потому что выполнение алгоритма после проверки условия разделяется на две ветви, эта конструкция и носит название ветвящейся. Мы рассмотрели конструкцию, в которой какиелибо действия необходимо выполнять и при ложном, и при истинном условии. Такое ветвление называется полным. Но не всегда надо выполнять действия, если условие не выполняется. В таком случае одна из ветвей алгоритма будет пустой, и такое ветвление называется неполным. Циклический алгоритм. Повторяющееся выполнение действий (групп действий), зависящее от выполнения условия, называется циклом. Любой цикл состоит из трех частей: начала, проверки и тела цикла. Начало – всегда первая часть цикла. Главная его функция – подготовить цикл. Проверка определяет момент выхода из цикла.
Базовая структура "цикл". Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в таблице:
Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла — тогда речь идет о цикле с предусловием, или в конце — тогда это цикл с постусловием.
Циклические структуры с заданным числом повторений.
Итерационные циклы.
Основные базовые типы данных и их характеристика.
Алгоритмическое описание вложенных циклических структур.
Структурированные типы данных и их характеристика.
Программное обеспечение для разработки программ.
Компилирование. Создание исполняемого файла.
Выполнение программы. Понятия транслятор, компилятор, интерпретатор.
Языки и системы программирования.
Интегрированная среда программирования.
Интегрированная среда разработки на языке Python - IDLE (Integrated Development Environment).
2- блок
Общие сведения о языке программирования Python.
Основные элементы языка программирования Python.
Синтаксис и управляющие конструкции языка Python.
Алфавит языка программирования Python. Константы. Переменные. Метки.
Язык программирования Python. Оператор присваивания.
Язык программирования Python. Операторы управления.
Язык программирования Python. Организация ввода вывода данных.
Программирование линейных структур алгоритмов.
Язык программирования Python. Операторы сравнения.
Язык программирования Python. Булевы (логические) операторы.
Язык программирования Python. Условные операторы.
Язык программирования Python. Программирование разветвляющихся структур.
Язык программирования Python. Операторы цикла. Вложенные циклы.
Язык программирования Python. Программирование циклических структур алгоритмов.
Язык программирования Python. Кортежи. Объявление кортежей.
Язык программирования Python. Кортежи. Классические способы обработки кортежей.
Язык программирования Python. Списки. Специальные операторы и функции для работы со списками.
Язык программирования Python. Алгоритмы обработки строк. Строки.
Язык программирования Python. Функции для работы с символами.
Язык программирования Python. Методы работы со строками.
Рекурсивные алгоритмы.
Язык программирования Python. Функции. Объявление. Вызов процедур и функций.
Язык программирования Python. Файлы. Файловые типы данных.
Язык программирования Python. Базовые понятия ООП: объект, его свойства и методы, класс, интерфейс.
Язык программирования Python. Основные принципы ООП: инкапсуляция, наследование, полиморфизм.
3- блок
Перечислите составляющие единицы алфавитов языков программирования. Опишите структуру программы на языке программирования Python.
Алфав!ит - символы для записи конструкций языка программирования (из каких знаков составляются конструкции языка). Алфавит языка состоит из букв, цифр и лексем.
Лексема - это наименьшая единица языка имеющая самостоятельный смысл. К лексемам относятся: