- •Оглавление
- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ ПРОГРАММИРОВАНИЯ ТУРБО ПАСКАЛЬ
- •1.1. Алфавит и словарь языка Паскаль
- •1.1.1. Величины в Паскале
- •1.1.2. Структура программы
- •1.2. Типы данных
- •1.2.1. Целочисленные типы данных
- •1.2.2. Вещественные типы данных
- •1.2.3. Символьный тип
- •1.2.4. Логический тип
- •1.3. Арифметические операции и стандартные функции
- •1.3.1. Арифметические операции
- •1.3.2. Операции отношения
- •1.3.3. Стандартные математические функции
- •1.3.4. Логические операции
- •1.3.5. Приоритет операций (в порядке убывания):
- •2. ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ
- •2.1. Оператор присваивания
- •2.2. Ввод и вывод данных
- •2.2.1. Вывод данных на экран
- •2.2.2. Ввод данных с клавиатуры
- •2.3. Оператор безусловного перехода
- •2.4. Пустой оператор
- •2.5. Структурные операторы
- •2.6. Составной оператор
- •2.7. Условные операторы
- •2.7.1. Условный оператор If
- •2.7.2. Оператор выбора
- •2.8. Операторы цикла (повтора)
- •2.8.1. Оператор цикла с параметром
- •2.8.2. Оператор цикла с предусловием
- •2.8.3. Оператор цикла с постусловием
- •2.8.4. Типовые задачи с использованием циклов
- •3. ПРОЦЕДУРЫ И ФУНКЦИИ
- •3.1. Функции
- •3.2. Примеры полезных функций
- •3.3. Процедуры
- •3.4. Оператор вызова процедуры
- •3.5. Механизм передачи параметров в подпрограммах
- •3.6. Стандартные библиотечные модули
- •4. РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
- •4.1. Метод отделения корней
- •4.2. Метод половинного деления
- •4.3. Метод касательных
- •4.4. Модифицированный метод Ньютона
- •5. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ
- •5.1. Методы прямоугольников
- •5.2. Метод трапеций
- •5.3. Процедура вычисления интеграла
- •5.5. Основная часть программы
- •6. МАССИВЫ
- •6.1. Одномерные массивы
- •6.1.1. Заполнение массива
- •6.1.2. Вывод массива на экран
- •6.1.3. Работа с массивами
- •6.2. Двумерные массивы
- •6.2.1. Заполнение матрицы
- •6.2.2. Вывод матрицы на экран
- •6.2.3. Работа с матрицами
- •7. РАБОТА С ФАЙЛАМИ ДАННЫХ
- •7.1. Особенности работы с текстовыми файлами.
- •7.1.1. Общий алгоритм ввода из файла данных
- •7.1.2. Общий алгоритм вывода в файл результатов
- •8. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
- •8.1. Прямые методы
- •8.2. Метод Гаусса
- •Реализация метода на языке Паскаль
- •8.3. Метод прогонки
- •8.4. Итерационные методы
- •8.5. Метод Зейделя
- •Реализация метода на языке Паскаль
- •8.6. Метод простых итераций
- •8.7. Вывод результатов и проверка
- •9.1. Процедура заполнения расширенной матрицы Грама
- •9.2. Алгоритм решения задачи
- •10. ГРАФИКА В СИСТЕМЕ ТУРБО ПАСКАЛЬ
- •10.1. Запуск и завершение работы в графической системе
- •10.2. Базовые процедуры и функции
- •10.2.1. Процедуры модуля Graph
- •10.2.2. Функции модуля Graph
- •10.3. Экран и окно в графическом режиме
- •10.4. Вывод простейших фигур
- •10.4.1. Вывод точки
- •10.4.2. Цветовая шкала
- •10.4.3. Вывод линии
- •10.4.4. Стандартные типы и толщина линий
- •10.4.5. Построение прямоугольников
- •10.4.6. Построение многоугольников
- •10.4.7. Построение дуг и окружностей
- •10.4.8. Стандартные стили заполнения
- •10.5. Построение графиков функций
- •10.6. Построение графика аппроксимирующей функции
- •11. ЛАБОРАТОРНЫЙ ПРАКТИКУМ
- •11.1. Решение нелинейных уравнений
- •Задание на выполнение лабораторной работы № 1.
- •Программа лабораторной работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •Варианты:
- •Задания.
- •11.2. Численное интегрирование
- •Задание на выполнение лабораторной работы N2.
- •Программа лабораторной работы.
- •Содержание отчета.
- •Контрольные вопросы
- •Варианты:
- •Задания.
- •11.3. Решение систем линейных алгебраических уравнений
- •Задание на выполнение лабораторной работы N3.
- •Программа лабораторной работы.
- •Содержание отчета.
- •Варианты:
- •Задания.
- •11.4. Аппроксимация функцией. Метод наименьших квадратов
- •Задание на выполнение лабораторной работы N4
- •Программа лабораторной работы.
- •Содержание отчета.
- •Варианты и исходные данные.
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
6.2. Двумерные массивы
Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:
var a:array [1..5] of array [1..6] of real; var a:array [1..5,1..6] of real;
Чаще всего при описании двумерного массива используют второй способ. Так же как и для одномерных массивов, для двумерных можно использовать отдельно описание нового типа массива, а затем описывать переменную, используя этот тип:
type matr=array [1..5,1..6] of integer; var a:matr;
Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется конструкция, когда один цикл for вложен в другой. Например:
for i:=1 to 5 do
for j:=1 to 6 do a[i,j]:=0;
При организации вложенных (сложных) циклов необходимо учитывать:
•Все правила, присущие простому циклу, должны соблюдаться.
•Имена параметров для циклов, вложенных один в другой, должны быть различными.
•Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо.
6.2.1. Заполнение матрицы
Рассмотрим типичные варианты заполнения матрицы a, описанной выше.
Заполнение всех элементов матрицы случайными числами из диапазона 1 – 9 :
for i:=1 to 5 do
for j:=1 to 6 do a[i,j]:=random(9);
52
Заполнениевсехэлементовматрицыприпомощивводасклавиатуры: for i:=1 to 5 do
for j:=1 to 6 do begin
write(‘a[’,i,‘,’,j,‘]=’);
readln(a[i,j]);
end;
6.2.2. Вывод матрицы на экран
Вывести на экран матрицу 5 × 6 можно следующим образом: for i:=1 to 5 do
begin
for j:=1 to 6 do
write(a[i,j]:4); {вывод строки}
writeln; |
{перевод на новую строку} |
end; |
|
6.2.3. Работа с матрицами
Работа с матрицами осуществляется также поэлементно.
Пример 6.2. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.
program pifagor; uses crt;
var p:array [1..9,1..9] of integer; i,j:integer;
begin Clrscr;
for i:=1 to 9 do
for j:=1 to 9 do p[i,j]:=i*j;
for i:=1 to 9 do begin
for j:=1 to 9 do write(p[i,j]:4);
writeln;
end;
end.
53
Пример 6.3. Задан двумерный массив В(10, 10), заполненный случайными числами из диапазона -10 – 10. Найти и вывести на экран произведение элементов побочной диагонали.
program massiv; uses crt;
var b:array[1..10,1..10] of integer; i,j,s:integer;
begin Clrscr;
for i:=1 to 10 do begin
for j:= 1 to 10 do begin
b[i,j]:=random(20)-10; write(b[i,j]:4);
end;
writeln;
end;
s:=1;
for i:=1 to 10 do s:=s*b[i,11-i];
writeln(‘Произведение = ’,s); end.
Пример 6.4. Ввести с клавиатуры матрицу В(5, 5) и поменять местами первый и последний столбец.
program mest;
var b:array[1..5,1..5] of integer; i,j,s:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do begin
write(‘b[’,i,‘,’,j,‘]=’);
readln(b[i,j]);
end; for i:=1 to 5 do
begin
for j:=1 to 5 do write(b[i,j]:4);
54
writeln;
end;
for i:=1 to 5 do begin
s:=b[i,1]; b[i,1]:=b[i,5]; b[i,5]:=s; end;
writeln;
writeln(‘Изменённая матрица’); writeln;
for i:=1 to 5 do begin
for j:=1 to 5 do write(b[i,j]:4);
writeln;
end;
end.
55