- •Практикум по Турбо Паскалю
- •Первые занятия Первое знакомство с системой программирования Турбо Паскаль
- •Команды редактора
- •Задания
- •Режим помощи
- •Первая программа
- •Запуск программы
- •Сохранение программы
- •Выход из системы программирования Турбо Паскаль
- •Простейшие линейные программы
- •Арифметический квадрат. Абсолютная величина
- •Целый и логический типы данных Условный оператор
- •Логический тип данных
- •Условный оператор
- •Вложенные операторы условия
- •Целый тип данных. Цикл с параметром
- •Цикл с параметром (разбор на примере)
- •Работа с окнами. Метод пошагового выполнения программ
- •Работа с окнами
- •Решение задач с использованием цикла с параметром
- •Вопросы для обсуждения
- •Трассировка примера
- •Цикл с постусловием
- •Алгоритм Евклида
- •Вложенные циклы
- •Решение задач с использованием циклов с условием
- •Простые типы данных
- •Задания
- •Решение задач
- •Вещественный тип данных
- •Задание
- •Решение задач
- •Ограниченный, перечисляемый типы данных. Оператор варианта
- •Ограниченный тип данных
- •Оператор варианта
- •Перечисляемый тип данных
- •Решение задач
- •Описание переменных, констант и типов Раздел описания констант
- •Раздел описания переменных
- •Раздел описания типов
- •Решение задач
- •Преобразование типов. Совместимость типов
- •Задания
- •Решение задач
- •Решение задач
- •Контрольные работы Контрольная работа №1
- •Контрольная работа №2
- •Основы Паскаля
- •X y22m размер gamma alfa r15
- •Процедуры и функции
- •Описание процедур и функций
- •Файловый тип
- •Описание файлового типа
- •Подпрограммы
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Write
- •Процедура Close
- •Функция FileSize
- •Функция FilePos
- •Текстовые файлы
- •Описание текстового файла
- •Консоль
- •Устройства
- •Соответствие текстовых файлов и логических устройств
- •Операции над текстовыми файлами
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Append
- •Процедура Close
- •Функция Eof
- •Функция SeekEof
- •Блочные файлы Описание типа блочного файла
- •Процедура BlockRead
- •Процедура BlockWrite
- •Операции ввода-вывода
- •Регулярные типы данных Одномерные массивы. Работа с элементами
- •Способы задания одномерных массивов
- •Работа с элементами массива (разбор на примерах)
- •Методы работы с элементами одномерного массива Изменение значения некоторых элементов
- •Создание массива
- •Работа с несколькими массивами
- •Удаление элементов из одномерного массива Удаление элемента
- •Вставка элементов в одномерный массив Вставка одного элемента
- •Вставка нескольких элементов
- •Перестановка элементов массива
- •Перестановка части массива
- •Найти сумму элементов
- •Работа с несколькими массивами
- •Двумерный массив. Работа с элементами Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение двумерного массива по правилу.
- •Вставка и удаление элементов двумерного массива
- •Перестановка элементов массива
- •Комбинированный тип данных (записи)
Работа с несколькими массивами
Пример 5
Составить программу вычисления произведения двух квадратных целочисленных матриц А и В размером 5*5 соответственно. Элементы результирующей, также целочисленной, матрицы С (размером 5*5) определяются по формуле
c[i, j] = |
|
где n - размерность матриц А и В.
Решение
Формирование матриц будем производить с помощью генератора случайных чисел, вычисление элементов результирующей матрицы С - с помощью вложенных циклов, где во внутреннем цикле (по параметру k) будет накапливаться сумма, определяющая элемент с[i,j].
Program Exampl_46; Const n = 5; Type dmyarray = Array[1..n, 1..n] Of Integer; Var A, B, C : dmarray;
Procedure Init(Var x: dmyarray);
...
Procedure Print(x: dmyarray);
...
Procedure Mult(x,y: dmyarray; Var z: dmyarray); Var k, i, j : Integer; Begin For i:=1 To n Do For j:=1 To m Do Begin z[i,j]:=0; For k:=1 To n Do z[i,j]:=z[i,j]+x[i,j]*y[k,j]; End; End;
Begin {основная программа} Writeln('массив А:'); Init(A); Print(A); Writeln('массив В:'); Init(B); Print(B); Mult(A, B, C); Writeln('массив С:'); Print(c); Readln; End.
Определить, отвечает ли заданный массив некоторым требованиям
Пример 6
Определить, есть ли в данном массиве элемент, равный 0.
Решение
Опишем логическую функцию, значение которой равно истине, если такой элемент есть, и ложь - в противном случае. Самый простой способ - это просматривать элементы, и если найден искомый, то присвоить функции значение True, иначе - False.
Function Check1(x: dmyarray): Boolean; Var i, j : Integer; t: Boolean; Begin t:= true; {предполагаем, что искомого элемента в массиве нет} i:=1; {начальные значения} While t And (i<=n) Do Begin j:=1; While (j<=m) And (x[i,j]<>0) Do Inc(j); t:=(j=m+1); {определяем, найден ли искомый элемент, если просмотрена вся строка, то значение j=m+1 и t:= True, иначе элемент не найден и t:= False} Inc(i); End; check1:=not t; {t=False, если элемент в массиве есть поэтому значению функции присваиваем not t} End;
Пример 7
Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали.
Решение
Если он является симметричным, то для него выполняется равенство a[i, j] = a[i, j] для всех i = 1,...,n и j = 1,...,n при условии, что i>j. Поэтому можно составить следующую функцию:
Function Check2(x: dmyarray): Boolean; Var i, j : Integer; t : Boolean; Begin t:= True; {предположим, что матрица симметрична} i:=2; While t And (i<n) Do Begin j:=1; While (j<i) And (x[i,j]=x[j,i]) Do Inc(j); t:=(j=i); Inc(i); End; Check2:=t; End;
Таким образом, если встретится хотя бы одна такая пара, что соответствующие элементы не будут равны, то значение функции будет ложь(false)
Двумерный массив. Работа с элементами Изменение значений некоторых элементов, удовлетворяющих заданному свойству
Решение таких задач похоже на решение для одномерных массивов.
Пример 8
В массиве размерностью n*m к элементам чётных столбцов прибавить элемент первого столбца соответствующей строки.
Procedure Substitation1(Var x: dmyarray); Var i, j : Integer; Begin For i:=1 To n Do For j: to m Div 2 Do {рассмотрим чётные столбцы матрицы} Inc(x[i,2*j],x[i,1]); End;
Пример 9
Заменить все отрицательные элементы на противоположные.
Procedure Substitation2(Var x: dmyarray); Var i, j : Integer; Begin For i:=1 To n Do For j:=1 To m Do x[i,j]:=abs(x[i,j]); End;
