- •Основы алгоритмизации
- •Специфика решения задачи с использованием компьютера
- •Роль моделирования при решении сложных задач
- •Устройство компьютера как инструмента решения задач
- •Пример решения задачи с использованием компьютера
- •Вопросы для самоконтроля
- •Понятие алгоритма
- •Свойства алгоритмов и способы их задания
- •Понятие структурной алгоритмизации
- •Базовый набор алгоритмических структур
- •Примеры классических алгоритмов
- •Переменные-счетчики и аккумуляторы
- •Алгоритм перестановки значений двух переменных
- •Простейший алгоритм сортировки
- •Последовательный и двоичный поиск в массиве данных
- •Вопросы для самоконтроля
- •Основы программирования
- •Изучить три темы:
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Эволюция программирования как деятельности
- •Развитие вычислительной техники
- •Парадигмы современного программирования
- •Уровни языков программирования
- •Современные языки программирования высокого уровня
- •Программирование как вид деятельности
- •Вопросы для самоконтроля
- •Инструменты программирования
- •Основные понятия программирования
- •Этапы разработки программы
- •Функции транслятора в процессе создания программы
- •Средства создания программ
- •Современные системы программирования
- •Вопросы для самоконтроля
- •Проектирование и внедрение программ
- •Этапы разработки программного обеспечения
- •Методы маркетинга программного обеспечения
- •Вопросы для самоконтроля
- •Технология алгоритмического программирования
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Понятия алгоритмического программирования
- •Классификация данных
- •Базовые типы данных
- •Структурированные данные
- •Программа как совокупность операторов. Виды операторов
- •Вопросы для самоконтроля
- •Принципы структурного программирования
- •Понятие подпрограммы
- •Процедуры и функции как разновидность подпрограмм
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Программный код экранной формы
- •Вопросы для самоконтроля
- •Объектно-ориентированное программирование
- •Понятие объекта и класса
- •Концепции объектно-ориентированного программирования
- •Вопросы для самоконтроля
- •Заключение
- •3.3. Глоссарий (краткий словарь терминов)
- •3.4 Технические и программные средства обеспечения дисциплины
-
Структурированные данные
Массив как упорядоченная совокупность однотипных данных
Переменные, применяемые в алгоритмах и программах, могут образовывать упорядоченные структуры. Широкое применение находит упорядочение переменных в виде массивов.
Массив – это упорядоченное множество однотипных переменных (элементов массива), объединенных общим именем и отличающихся номерами (индексами). Массивы сходны с такими понятиями в математике, как векторы и матрицы.
Если у простых переменных имя относится только к одной ячейке, то у массивов одно имя обозначает множество ячеек памяти, отличающихся только номерами (индексами). Значения индексов указываются в скобках справа от имени массива и однозначно определяют положение переменной в массиве.
Пример:
а(1:5) – массив (вектор) из пяти элементов: а(1), а(2), а(3), a(4), а(5);
b(1:2, 1:3) – матрица из шести элементов: b(1, 1) b(l,2), b(l,3), b(2,l), b(2,2), b(2,3).
Каждый массив характеризуется:
-
размерностью (числом измерений),
-
границами индексов по каждому измерению,
-
длиной.
Размерность массива – это число индексов в списке индексов. На практике используются одно-, двух- и трехмерные массивы, графическая интерпретация которых показана на рис. 3.3.
Для описания массива необходимо в предписании «Список данных...» указать имя и границы изменения индексов массива. Предписание «Список данных» может включать в себя константы, переменные и массивы. В нем указывается, сколько ячеек памяти следует выделить в машине, чтобы записать все необходимые данные.
Пример:
...Список данных:
Константы: Pi=3.14159;
Q=1.5678;
Переменные: a, b – целый;
х – вещественный;
с – символьный;
Массивы: у (1:2, 1:3) – вещественный;...
Рис. 3.3 Массивы: а – одномерный; б – двухмерный; в – трехмерный массив
В разделах «Переменные» и «Массивы» желательно указать тип используемых переменных и массивов.
Описание массива в наиболее популярных языках программирования представлено в таблице 3.6.
Таблица 3.6 Описание массива
Массивы
|
Описания массива |
||
Бейсик |
Паскаль |
Си++ |
|
Синтаксис |
DIM имя (число элементов) AS тип |
Аrrау [нижняя_граница .. верхняя_граница] of тип; |
тип имя [число-элементов]; |
Нижняя граница |
1 |
Указывается явно |
0 |
Пример:
|
DIM IntArray(1000) AS INTEGER |
array[1..1000] of integer
|
int IntArray[1000] |
Доступ к элементу массива |
IntArray(12) |
IntArray[i+1] |
Выборка элементов массивов
Работа с массивами – это работа с его элементами. Обращение к элементам массива осуществляется с помощью переменной с индексом. Так, х(1,5) – элемент массива х, расположенный на пересечении первой строки и пятого столбца.
Пример.
Дано: два двухмерных массива х(1:2, 1:2) и у(1:2, 1:2):
;
Вычислить:
Решение: После выборки указанных элементов и выполнения операции присваивания получим: ,
Следует различать запись элемента массива х(1) и имя переменной х1.
Некоторые языки высокого уровня дают возможность обрабатывать массивы целиком, указывая только его имя. При одинаковой размерности, типе и длине массивов можно записать с:=a+b; с:=а•b; с:=а-b, с:=5 что означает соответственно суммирование, умножение и вычитание элементов массивов а и b (с одинаковыми индексами) и запись результатов в массив с, присвоение всем элементам массива с значения 5.
Итак, элементарными для массивов являются предписания:
-
ввод и вывод всего массива,
-
присваивание всему массиву каких-либо значений и т.п.
При этом программа будет работать с каждым элементом массива в отдельности, используя циклические операторы.
Использование циклических операций для обработки массивов
Применительно к массивам операторы цикла позволяют:
-
записывать значения в массивы,
-
выбирать значения из массивов,
-
менять элементы массивов местами и т.д.
Порядок использования циклических операторов для обработки массивов рассмотрим без потери общности на примере.
Пример. Составить фрагмент алгоритма, в котором четным элементам массива х(1:100) будет присвоено значение 1, а остальным элементам – нули.
...
Список данных:
k – целый;
х(1:100) – вещественный;
х: =0; //обнулить массив
Цикл по k от 2 до 100 шаг 2;
x(k): = 1;
Конец-цикла;
Тип данных «структура»
Структуры – это средства, позволяющие описывать данные в виде, максимально приближенном к их реальным аналогам.
Пример:
СТУДЕНТ={имя, пол, год рождения, группа},
ЭКЗАМЕН={предмет, группа, студент, оценка},
Сложные типы данных составляются из базовых типов и определенных ранее сложных типов. Результат - структуры данных произвольной сложности, объединенные одним именем:
-
списки,
-
деревья.
Описание структуры представлено в таблице 3.7.
Таблица 3.7 Описание структуры
Структуры
|
Описания структуры |
||
Бейсик |
Паскаль |
Си++ |
|
Синтаксис |
TYPE имя-структуры поле AS тип . . . END TYPE
|
Type имя=record поле:тип; . . . end;
|
struct имя { тип поле; . . . };
|
Пример: СТУДЕНТ={имя, пол, год рождения} |
TYPE Student Name AS STRING Sex AS INTEGER BirthYear AS INTEGER END TYPE |
Type Student=record Name: string; Sex: boolean; BirthYear: integer; end; |
struct Student { char Name[50]; bool Sex; int BirthYear; } |
Доступ к содержимому структуры |
Student.BirthYear = 1980;
|
Новые типы данных используются при определении нескольких переменных со сложной структурой (таблица 3.8).
Таблица 3.8 Описание типов данных, создаваемых программистом
Новые типы
|
Описания |
||
Бейсик |
Паскаль |
Си++ |
|
Синтаксис |
Как структура |
type имя = описание; |
typedef struct имя_структуры { поля_структуры; } имя; |
Пример описания:
|
|
type TMyArray = array[0..99] of integer;
type TMyRecord = record Iteml: integer; Item2: string; end;
|
typedef struct namel { int i; float x; } TNewStruct;
|
Пример применения |
|
var MyArray: TMyArray; var R: TMyRecord;
|
TNewStruct NewStruct;
|