- •Литература
- •10. Основы программирования на языке turbopascal. Учебное пособие. Б. А. Крымов, а. О. Мовшин, с. В. Кулакова. Воронеж: вгта. 2000.
- •Тема 1. Основные понятия информатики
- •1.1. Место информатики в человеческой деятельности
- •1.2. Информационные процессы: подробности
- •1.2.1. Процесс сбора данных
- •1.2.2. Процесс хранения данных.
- •1.2.3. Процесс передачи данных
- •Оконечное оборудование
- •1.2.4. Процесс обработки данных
- •Тема 2. Алгоритмизация и программирование
- •2.1. Алгоритм и его свойства
- •2.2. Формы записи алгоритма
- •Var m, n : integer;
- •2.3. Базовые алгоритмические структуры
- •2.4. Последовательность подготовки и решения задачи на эвм
- •Var X,y,с11,с12,с21,с22,a,b,Dx,Dy,d : real;
- •2.5. Конструктивные элементы языка pascal
- •2.6. Структура программы на языке pascal Программа на pascal состоит из двух частей: описательная часть и собственно программные операторы (исполняемая часть – список действий).
- •Var m, n : integer;
- •Тема 3. Данные и выражения простых типов
- •3.1. Данные целого типа
- •Var имя1, имя2,...: integer;
- •3.2. Данные вещественного типа
- •Var имя1, имя2,...: real;
- •Var a2, result, psi : real;
- •3.3. Данные логического типа
- •Var имя1, имя2,...: boolean;
- •3.4. Данные символьного типа
- •Var имя1, имя2, ... : char;
- •3.5. Данные ограниченного типа
- •Var month : summer;
- •3.5. Порядок выполнения операций
- •Тема 4. Основные операторы языка pascal
- •4.1. Оператор присваивания
- •4.2. Ввод числовых данных с клавиатуры
- •4.3. Вывод данных на экран монитора
- •Writeln(a,b,c);
- •Writeln(a,' ',b,' ',c)
- •Var omega, q: real;
- •4.4. Условные и составные операторы
- •Полная форма условного оператора if предназначена для программирования разветвлений и имеет вид:
- •If Логическое выражение then оператор 1 else оператор 2;
- •Var a, b, max: real;
- •Краткая форма условного оператора if. Эта форма используется при программировании ответвлений и имеет вид:
- •If Логическое выражение then оператор 1;.
- •Var a, b : real;
- •Вложенная ветвящаяся структура
- •X, y, a, b : real;
- •Var X, a, z : real;
- •4.5. Операторы цикла
- •4.5.1. Оператор цикла с предусловием Структура оператора
- •X, y, deltaX, a, b : real;
- •4.5.2. Оператор цикла с постусловием
- •X, y, deltaX, a, b : real;
- •4.5.3. Вычисление сумм
- •Var s : real;
- •Var s : real;
- •X, s, eps, a : real;
- •X, s, eps, a : real;
- •4.5.4. Оператор цикла с параметром
- •Var X, y, deltaX, a, b: real;
- •Var s: real;
- •Тема 5. Структурированные типы данных
- •5.1. Одномерные массивы
- •Var имя массива : array [тип индекса] of тип элементов;
- •Var имя массива : имя типа;
- •Имя массива [ индекс ]
- •5.2. Организация циклов с использованием массивов
- •I: integer;
- •Var max : real;
- •I : integer;
- •Var I, kP,j : integer ;
- •5.3. Двумерные массивы
- •Var I, k : integer ;
- •Var c:array [-1..8,0..19] of real;
- •I,j:integer;
- •5.4. Примеры задач с двумерными массивами
- •Var mat : array [1..N, 1..N] of real ;
- •I, j, i1, i2 : integer ;
- •Var I, j : integer;
- •Тема 6. Подпрограммы
- •6.1. Вводные понятия
- •6.2. Процедуры
- •Var p, s : real;
- •Var имя1, имя2, ... : тип параметров;
- •6.3. Функции
- •Function имя функции (список форм. Параметров) : тип результата;,
- •Var p : real;
- •Тема 7. Обзор языков программирования
- •Приложение 1 Наиболее часто используемые служебные слова pascal
- •Приложение 2 Стандартные функции pascal
Var c:array [-1..8,0..19] of real;
I,j:integer;
begin
.
.
.
for i:= -1 to 8 do
begin
for j:=0 to 19 do write(c[i,j]:8:3);
writeln
end
end.
Тело внутреннего цикла содержит два оператора: for и writeln. После того, как оператор for выведет очередную строку матрицы, оператор writeln осуществляет переход на новую строку.
5.4. Примеры задач с двумерными массивами
Пример 5.13. Дана матрица MAT размера 5 на 5, состоящая из вещественных элементов. Поменять местами строки матрицы, содержащие максимальный и минимальный элементы.
В этом примере надо решить две задачи: поиск номеров строк, в которых располагаются наибольший и наименьший элементы матрицы, и обмен данными, содержащимися в этих строках.
Первая задача является разновидностью типовой задачи поиска максимума или минимума. Отличие от типовой заключается в том, что определяются не сами максимальный и минимальный элементы матрицы, а их индексы. Для хранения номеров строк в процессе счета используются переменные i1 – для минимального элемента и i2 – для максимального.
Для решения второй задачи используются три оператора присваивания, в которых участвуют элементы строк матрицы с максимальным и минимальным элементами и вспомогательная переменная b.
const n=5;
Var mat : array [1..N, 1..N] of real ;
I, j, i1, i2 : integer ;
max, min, b : real;
begin
write (‘введите матрицу ‘);
for i:=1 to n do
for j:=1 to n do read (mat[i,j]);
max:= mat[1,1]; i1:=1; { индекс минимального элемента }
min:=mat[1,1]; i2:=1; { индекс максимального элемента }
for i:=1 to n do
for j:=1 to n do
if mat [ i, j] > max then
begin max:=mat[i,j];
i2 := i; {Запомнить номер строки
нового максимума }
end
else
if mat [i, j] < min then
begin min:=mat[i,j];
i1 := i; { Запомнить номер строки
нового минимума }
end;
for j:=1 to n do
begin b:=mat[i1,j]; mat[i1,j]:=mat[i2,j]; mat[i2,j]:=b;
end;
for i:=1 to n do { Вывести измененный массив }
begin
for j:=1 to n do write (mat[i,j]:10:5);
writeln
end
end.
Пример 5.14. Дана матрица A размера 55, состоящая из вещественных элементов. Вычислить суммы элементов, лежащих на главной и побочной диагоналях матрицы.
Для решения этой задачи необходимо определить, какому условию удовлетворяют индексы элементов диагоналей квадратной матрицы. Несложно заметить, что для элементов главной диагонали должно выполняться равенство i = j, а для элементов побочной – равенство i + j = n + 1, или j = n + 1 – i, где n – размер матрицы, в данном случае n = 5. Таким образом, элемент главной диагонали, находящийся в i-й строке – это a[i, i], а элемент побочной диагонали, стоящий в i-й строке – это a[i, n+1–i]. Для просмотра всех элементов каждой диагонали надо организовать цикл вида for i:=1 to n.
Имеем следующую программу.
const n = 5;
Var I, j : integer;
A : array[1..n, 1..n] of real;
sGlavn, sPoboch : real;
begin writeln (‘Введите матрицу ’);
for i:= 1 to n do
for j:=1 to n do read(A[i, j]);
sGlavn:=0; sPoboch:=0;
for i:=1 to n do
begin sGlavn:= sGlavn + A[i, i];
sPoboch := sPoboch + A[i, n+1–i];
end;
writeln(‘Сумм. главн. = ’, sGlavn:10:5,
’ Сумм. побочн. = ’, sPoboch:10:5);
end.