- •Учебно-методическое пособие
- •Маршрутная карта изучения дисциплины по Модулю 1
- •1. Логические и арифметические основы эвм
- •Системы счисления
- •1.1. Десятичная система счисления
- •1.2. Двоичная система счисления
- •1.3. Восьмеричная и шестнадцатеричная системы счисления
- •1.4. Перевод чисел из любой системы счисления в десятичную
- •1.5. Перевод чисел из десятичной системы счисления в любую другую
- •Вопросы для самоконтроля
- •Методические указания для выполнения практического задания №1. «Системы счисления»
- •Приложение 1. Таблица вариантов заданий
- •2. Алгебра логики
- •2.1. Логические операции
- •Инверсия
- •2.2. Нормальные формы
- •Конъюнктивная нормальная форма
- •Дизъюнктивная нормальная форма
- •3. Применение средств алгебры логики для описания функционирования устройств компьютера
- •3.1. Логические схемы
- •Пример решение логических задач средствами алгебры логики
- •Методические указания для выполнения практического задания №2. «Алгебра логики». Построение таблиц истинности.
- •Пример построения логических схем
- •Методические указания для выполнения практического задания №3. «Алгебра логики». Построение логических схем.
- •Приложение 2. Таблица вариантов заданий
- •4. Индивидуальное задание. Модуль 1. «Построение логических схем по заданным булевым выражениям»
- •Приложение 3. Таблица вариантов индивидуального задания
- •Приложение 4. Титульный лист идз
- •Маршрутная карта изучения дисциплины по Модулю 2
- •5. Введение в алгоритмизацию
- •6. Знакомство со средой Турбо Паскаль
- •6.1. Общие сведения
- •6.2. Запуск Турбо-Паскаля на выполнение
- •6.3. Назначение функциональных клавиш системы Турбо-Паскаль
- •6.4. Работа с текстовым редактором Турбо-Паскаля
- •Клавиши перемещения курсора
- •Работа с блоками текста
- •7. Основы алгоритмизации
- •7.1. Алгоритм
- •7.2. Алгоритмические структуры
- •8. Программирование на языке Pascal
- •8.1. Алфавит языка
- •8.2. Арифметические выражения и правила их записи
- •Знаки операций
- •Операции div и mod
- •8.3. Типы данных
- •Целые типы
- •Логический тип
- •8.5. Структура программы на языке Паскаль
- •8.6. Описательная часть программы
- •8.7. Исполнительная часть программы
- •8.10. Комментарии в программе
- •Пример программы линейной структуры
- •Вопросы для самоконтроля
- •8.11. Методические указания для выполнения практического задания №4. «Следования»
- •Приложение 5. Таблица вариантов заданий
- •9. Ветвления
- •9.1. Операторы условия и перехода
- •Логический оператор
- •Операции отношения
- •Логические операции
- •9.2. Оператор выбора
- •Пример программы разветвленной структуры
- •Вопросы для самоконтроля
- •9.3. Методические указания для выполнения практического задания №5. «Ветвления»
- •Приложение 6. Таблица вариантов заданий
- •10. Циклические вычислительные процессы
- •10.1. Оператор цикла с параметром
- •10.2. Оператор цикла с постусловием
- •10.3. Оператор цикла с предусловием
- •10.4. Вложенные циклы
- •10.5. Оператор прерывания цикла
- •Пример программы циклической структуры
- •Вопросы для самоконтроля
- •10.6. Методические указания для выполнения практического задания №6. «Циклы»
- •Приложение 7. Таблица вариантов заданий
- •11. Операции с индексированными переменными
- •11.1. Массивы одномерные
- •11.2. Описание массивов
- •Ввод элементов массива
- •Вывод элементов массива
- •11.3. Обработка одномерных массивов
- •Пример программы обработки одномерного массива
- •Вопросы для самоконтроля
- •11.4. Методические указания для выполнения практического задания №7. «Операции с индексированными переменными»
- •Приложение 8. Таблица вариантов заданий
- •12. Двумерные массивы
- •12.1. Матрицы
- •12.2. Описание двумерного массива
- •Ввод элементов двумерного массива
- •Вывод элементов двумерного массива
- •12.3. Обработка двумерных массивов
- •Пример программы обработки двумерного массива
- •Вопросы для самоконтроля
- •12.4. Методические указания для выполнения практического задания №8. «Матрицы»
- •Приложение 9. Таблица вариантов заданий
- •13. Подпрограммы
- •13.1. Функции и процедуры
- •Структура программы, содержащей процедуру (функцию)
- •13.2. Процедуры
- •13.3. Вложенные процедуры Директива forward
- •13.4. Функции
- •Пример программы с использованием подпрограмм
- •Вопросы для самоконтроля
- •Методические указания для выполнения практического задания №9. «Подпрограммы»
- •Приложение 10. Таблица вариантов заданий
- •14. Обработка строк текста
- •14.3. Строковые переменные
- •14.4. Функции обработки строковых переменных
- •14.5. Процедуры обработки строковых переменных
- •14.6. Примеры обработки строковых переменных
- •Вопросы для самоконтроля
- •15. Структурированные типы данных
- •Пример программы использования массива записей
- •Вопросы для самоконтроля
- •Методические указания к выполнению индивидуального задания по Модулю 2. «Массивы записей»
- •Приложение 11. Таблица вариантов индивидуального задания
11. Операции с индексированными переменными
11.1. Массивы одномерные
Массив – это поименованный набор однотипной информации.
Массив объединяет элементы одного типа данных. Всему набору данных присваивают общее имя - имя массива. Каждый элемент массива определяется с помощью индекса, определяющего место этого элемента в общем наборе.
Данные в массиве сохраняются, как и в случае использования обычных неиндексированных переменных, только до конца работы программы.
Характеристики массива:
тип – общий тип всех элементов массива;
размерность (ранг) – количество индексов массива;
диапазон изменения индексов – определяет количество элементов в массиве.
Вектор (одномерный массив) – это массив, в котором элементы нумеруются одним индексом.
11.2. Описание массивов
Для одномерного массива:
var
a: array[1…n] of <тип>;
где a - имя массива;
n - максимальное количество элементов массива;
<тип> - тип элементов массива.
Например:
var
mas: array [1…10] of real;
begin
...
Описан массив mas - содержащий 10 элементов вещественного типа.
Каждый элемент массива определяется с помощью индекса, стоящего справа от имени в квадратных скобках.
a [ i ], a [i+2], a [9]
Индекс может быть - переменной, константой, арифметическим выражением целого типа.
Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через const.
Например:
const
n = 10;
var
mas: array [1…n] of real;
begin
…
Ввод элементов массива
…
for i:=1 to n do
readln( a[ i ] );
…
Каждое прохождение через цикл соответствует вводу одного элемента массива.
Вывод элементов массива
…
for i:=1 to n do
writeln( a[ i ] );
…
Каждое прохождение через цикл соответствует выводу одного элемента массива.
11.3. Обработка одномерных массивов
Рассмотрим типовые задачи обработки одномерных массивов.
Задача.
Составить программу подсчета суммы и произведения элементов одномерного массива вещественных чисел.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя массива |
a |
2 |
Размер массива |
n |
3 |
Индекс массива |
i |
4 |
Сумма элементов |
S |
5 |
Произведение элементов |
p |
program mas_1;
uses
crt;
var
a : array [1…100] of real;
n, I : integer;
p, s : real;
begin
clrscr;
{подготовить переменные для суммы и произведения}
s: = 0; p: =1;
writeln ('введите размер массива n<=100');
readln (n);
writeln ('введите элемент массива');
for i:=1 to nk do
readln (a[i] );
for i:=1 to nk do
begin
s:= s + a[ i ];
p:= p * a[ i ];
end;
writeln ('Сумма = ',s:8:3,'Произведение =',p:8:3);
readln;
end.
При накапливании суммы переменную необходимо обнулить, а при накапливании произведения – присвоить 1.
Задача.
Дан массив a(n). Найти максимальный элемент массива и определить его номер.
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя массива |
a |
2 |
Размер массива |
n |
3 |
Индекс массива |
i |
4 |
Максимальный элемент |
max |
5 |
Номер максимального элемента |
nmax |
program mas_2;
var
a: array [1…100] of real;
i,n,nmax: integer;
max: real;
begin
writeln ('введите размер массива n<=100');
readln (n);
writeln ('введите элементы массива');
for i:=1 to n do
readln (a[ i ] );
{за максимальный принимается первый элемент массива}
max:=a[1]; nmax:=1;
for i:=1 to n do
If a[i]>max then
begin
max:=a[i];
nmax:=i;
end;
writeln ('max =', max, ' N=', nmax);
readln;
end.
Задача.
Задан массив целых чисел. Отсортировать элементы одномерного массива по возрастанию.
Существует много способов сортировки элементов массива
Таблица идентификаторов
№ |
Наименование переменной |
Обозначения в программе |
1 |
Имя массива |
a |
2 |
Размер массива |
n |
3 |
Индекс массива |
i |
4 |
Флажок |
flag |
5 |
Дополнительная переменная для обмена местами сосодних элементов |
p |
program mas_3;
uses
crt;
var
a: array [1…100] of integer;
f, n, i,p : integer;
begin
clrscr;
writeln ('введите размер массива n<=100');
readln (n);
writeln ('введите элементы массива');
for i:=1 to n do
readln (a[i]);
repeat
f:=0;
for i:=1 to n-1 do
if a[ i ]>a[i+1] then
begin
p: =a[ i ];
a[ i ]:=a[i+1];
a[i+1]:=p; f:=1;
end;
until f=0;
for i:=1 to n do writeln (a[ i ]);
readln;
end.
В данном алгоритме используются вложенные циклы.
Внутренний цикл (for…to…do) – позволяет один раз пройтись по массиву, сравнивая соседние элементы. В случае, если предыдущий элемент (a[ i ]) окажется больше последующего (a[i+1]), элементы меняются местами через дополнительную переменную p.
Внешний цикл(repeat…until) – повторяется до тех пор, пока массив не будет упорядочен.
В программе применяется переменная – флажок.
f =1 – признак того, что два соседних элемента менялись местами, массив еще не упорядочен.
f =0 – признак того, что массив упорядочен.