- •Практикум по Турбо Паскалю
- •Первые занятия Первое знакомство с системой программирования Турбо Паскаль
- •Команды редактора
- •Задания
- •Режим помощи
- •Первая программа
- •Запуск программы
- •Сохранение программы
- •Выход из системы программирования Турбо Паскаль
- •Простейшие линейные программы
- •Арифметический квадрат. Абсолютная величина
- •Целый и логический типы данных Условный оператор
- •Логический тип данных
- •Условный оператор
- •Вложенные операторы условия
- •Целый тип данных. Цикл с параметром
- •Цикл с параметром (разбор на примере)
- •Работа с окнами. Метод пошагового выполнения программ
- •Работа с окнами
- •Решение задач с использованием цикла с параметром
- •Вопросы для обсуждения
- •Трассировка примера
- •Цикл с постусловием
- •Алгоритм Евклида
- •Вложенные циклы
- •Решение задач с использованием циклов с условием
- •Простые типы данных
- •Задания
- •Решение задач
- •Вещественный тип данных
- •Задание
- •Решение задач
- •Ограниченный, перечисляемый типы данных. Оператор варианта
- •Ограниченный тип данных
- •Оператор варианта
- •Перечисляемый тип данных
- •Решение задач
- •Описание переменных, констант и типов Раздел описания констант
- •Раздел описания переменных
- •Раздел описания типов
- •Решение задач
- •Преобразование типов. Совместимость типов
- •Задания
- •Решение задач
- •Решение задач
- •Контрольные работы Контрольная работа №1
- •Контрольная работа №2
- •Основы Паскаля
- •X y22m размер gamma alfa r15
- •Процедуры и функции
- •Описание процедур и функций
- •Файловый тип
- •Описание файлового типа
- •Подпрограммы
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Write
- •Процедура Close
- •Функция FileSize
- •Функция FilePos
- •Текстовые файлы
- •Описание текстового файла
- •Консоль
- •Устройства
- •Соответствие текстовых файлов и логических устройств
- •Операции над текстовыми файлами
- •Процедура Assign
- •Процедура Reset
- •Процедура Rewrite
- •Процедура Append
- •Процедура Close
- •Функция Eof
- •Функция SeekEof
- •Блочные файлы Описание типа блочного файла
- •Процедура BlockRead
- •Процедура BlockWrite
- •Операции ввода-вывода
- •Регулярные типы данных Одномерные массивы. Работа с элементами
- •Способы задания одномерных массивов
- •Работа с элементами массива (разбор на примерах)
- •Методы работы с элементами одномерного массива Изменение значения некоторых элементов
- •Создание массива
- •Работа с несколькими массивами
- •Удаление элементов из одномерного массива Удаление элемента
- •Вставка элементов в одномерный массив Вставка одного элемента
- •Вставка нескольких элементов
- •Перестановка элементов массива
- •Перестановка части массива
- •Найти сумму элементов
- •Работа с несколькими массивами
- •Двумерный массив. Работа с элементами Изменение значений некоторых элементов, удовлетворяющих заданному свойству
- •Заполнение двумерного массива по правилу.
- •Вставка и удаление элементов двумерного массива
- •Перестановка элементов массива
- •Комбинированный тип данных (записи)
Методы работы с элементами одномерного массива Изменение значения некоторых элементов
Пример:
Заменить отрицательные элементы на противоположные по знаку.
Решение
Для этого опишем процедуру. Ей будет передавать один параметр - массив, который будет результатом её выполнения, так как некоторые элементы могут быть заменены.
Procedure Substitation1(Var m: myarray); Var i : Integer; Begin For i:=1 To n Do If m[i]<0 Then m[i]:=-m[i]; End;
Пример:
Прибавить к каждому элементу число 25.
Решение
Преобразуем предыдущую процедуру.
Procedure Sudstitation2(Var m: myarray); Var i : Integer; Begin For i:=1 To n Do m[i]:=m[i]+25; End;
Пример:
Если элемент чётный, то прибавить к нему первый, если нечётный - прибавить последний. Первый и последний элементы не изменять.
Решение
Будем просматривать каждый элемент, кроме первого и последнего, и если он чётный, то есть делиться на 2 без остатка, то увеличим его на значение первого элемента, иначе - на значение последнего элемента.
Procedure Sudstitation3(Var m: myarray); Var i : Integer; Begin For i:=2 To n-1 Do If (i<>1) And (i<>n) Then If m[i] Mod 2=0 Then m[i]:=m[i]+m[I] Else m[i]:=m[i]+m[n]; End;
Создание массива
Правила заполнения массивов могут быть разными. Рассмотрим два примера.
Пример:
Даны два одномерных массива одинаковой размерности. Получить третий массив такой же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов.
Решение
Пусть даны два массива А и В, состоящие из пяти элементов. получим из них массив С, состоящий тоже из пяти элементов, первый элемент этого массива равен сумме первых элементов массивов А и В, второй - сумме вторых элементов данных массивов и так далее.
i |
1 |
2 |
3 |
4 |
5 |
A |
14 |
2 |
7 |
8 |
9 |
B |
3 |
6 |
5 |
12 |
4 |
C |
17 |
8 |
12 |
20 |
13 |
Для решения этой задачи опишем процедуру, которой передаются три параметра. Первые два - это два исходных одномерных массива, третий - это одномерный массив той же размерности, который является результатом выполнения и заполняется по правилу.
Procedure Sum-Ar(a, b: myarray; Var c: myarray); Var i : Integer; Begin For i:=1 To n Do c[i]:=a[i]+b[i]; End;
Пример:
Дан первый член арифметической прогрессии и её разность. Найти первые n членов.
Решение
Пусть a1 - это первый член прогрессии, а k - это её разность, тогда i-й член можно найти по правилу - а[i] = a[i-1] + k, или a[i] = aI + k*(i-1), если i = 1, то a[i]=aI . Опишем процедуру, которой передаём эти два параметра и результатом выполнения является одномерный массив. Первый элемент его равен первому члену прогрессии, второй - второму и так далее. Возьмём в качестве основной первую формулу.
Procedure Progress (a1, k: Integer; Var a: myarray); Var i : Integer; Begin a[1]:=a1; For i:=2 To n Do a[i]:=a[i-1]+k End;
