
- •«Сборник решения задач на языке Паскаль»
- •Введение.
- •Основные понятия системы программирования.
- •Среда программирования Turbo Pascal.
- •Окно среды программирования тр7 состоит:
- •Функциональные клавиши:
- •Текстовый редактор:
- •Элементы языка программирования Паскаль. Алфавит языка тр7.
- •Типы данных в языке Pascal.
- •Идентификаторы. Константы и переменные. Выражения. Комментарий.
- •Операции тр7. Операции в языке Паскаль подразделяются на:
- •Вещественное деление Целочисленное деление Деление по модулю
- •Общий вид программы в тр7.
- •Операторы тр7.
- •Операторы ввода-вывода.
- •Моя первая программа
- •Число шестнадцать записывается так: 16
- •Оператор присваивания.
- •Составной и пустой оператор. Линейные программы и алгоритмы.
- •Варианты заданий
- •Составить программу для вычисления значения функции, при целых аргументах:
- •Составить программу для решения следующих задач:
- •Составить программу для выполнения целочисленных арифметических действий (Условный оператор, оператор выбора, операторы повтора, массивы и строки не использовать):
- •Условные и безусловные операторы в языке Паскаль.
- •Варианты заданий Используя условный оператор выполните следующие задания:
- •Составить программу для вычисления значения функции при целых аргументах:
- •2. Используя сокращенную форму записи условного оператора выполнить следующие задания:
- •3 Используя вложенные условные операторы выполнить следующие задания:
- •Составить программу для выполнения следующих действий:
- •5. Используя оператор выбора выполните следующие задания:
- •Операторы повтора в языке Паскаль.
- •Циклом с предусловием;
- •Циклом с постусловием;
- •Циклом с параметром;
- •Принцип действия цикла While:
- •Пример 1: Составить программу для вычисления суммы первых 10 натуральных чисел.
- •Общая форма записи цикла Repeat…Until
- •Принцип действия цикла Repeat…Until:
- •Общий вид цикла For…to
- •Существует ещё одна форма записи цикла с параметром:
- •Варианты заданий
- •Составить программу для организации вывода по требуемому формату:
- •Составить программу для нахождения суммы конечного ряда:
- •Составить программу для обработки данных во время ввода:
- •4. Используя цикл с предусловием выполните следующие задания:
- •5. Используя цикл с постусловием выполните следующие задания:
- •6. Используя любой удобный цикл выполните следующие задания:
- •7. Решение простейших олимпиадных задач:
- •Одномерные и двумерные массивы
- •Варианты заданий Одномерные массивы
- •Составить программу для обработки элементов массива:
- •Составить программу для анализа элементов массива:
- •Использование цикла с условием при обработке элементов массива:
- •Перестановка, вставка и удаление элементов массива:
- •Логические задачи:
- •Двумерные массивы
- •Составить программу для обработки двумерного массива.
- •Литерные величины
- •Операции над строками:
- •Варианты заданий.
- •Составить программу осуществляющую поиск в строке:
- •Составить программу осуществляющую поиск и замену в строке:
- •Составить программу осуществляющую обработку цифр в строке:
- •Подпрограммы.
- •Подпрограммы-функции.
- •Подпрограммы-процедуры.
- •Область видимости идентификаторов.
- •Формальные и фактические параметры.
- •Параметры-значения, параметры-переменные, нетипизированные параметры.
- •Модули.
- •Варианты заданий.
- •Файловый тип данных
- •Варианты заданий.
- •1. Составить программу осуществляющую поиск в строке:
- •2. Составить программу осуществляющую поиск и замену в строке:
- •3. Составить программу осуществляющую обработку цифр в строке:
- •Множества
- •Варианты заданий.
- •Текстовый режим
- •Варианты заданий.
- •Составить программу для вывода заданного слова, заданного цвета в заданной строке на заданном фоне:
- •Составить программу для вывода букв заданного слова, в заданной строке на заданном фоне:
- •Варианты заданий.
Варианты заданий.
Составить программу для вывода заданного слова, заданного цвета в заданной строке на заданном фоне:
Дано слово. Вывести его в правом нижнем углу.
Даны два слова. Объединить их и вывести посередине экрана.
Даны три слова. Вывести их лесенкой по главной диагонали.
Даны четыре слова. Вывести их по углам.
Даны пять слов. Вывести первые четыре по углам, а пятое в середине.
Даны шесть слов. Вывести их лесенкой по главной диагонали.
Даны шесть слов. Вывести их лесенкой по побочной диагонали.
Дано слово из четырех букв. Раскидать его буквы по углам.
Дано слово из пяти букв. Раскидать его буквы по углам, причем 3 букву поставить в центр.
Дано слово. Вывести его в строчку всеми возможными цветами.
Дано слово. Вывести его в столбик первыми 15-ю цветами (учесть, что при совпадении цвета слова и фона не должно быть промежутка).
Дано слово. Вывести его в столбик первыми 15-ю цветами (учесть, что при совпадении цвета слова и фона не должно быть промежутка и для каждого цвета слова цвет фона должен изменяться).
Составить программу для вывода букв заданного слова, в заданной строке на заданном фоне:
Дано слово. Вывести одним цветом его буквы в строчку.
Дано слово. Вывести одним цветом его буквы в столбик.
Дано слово. Вывести разным цветом его буквы в строчку.
Дано слово. Вывести разным цветом его буквы в столбик.
Дано слово. Вывести его буквы лесенкой по главной диагонали.
Дано слово. Вывести его буквы лесенкой по побочной диагонали.
Дано слово. Вывести его буквы лесенкой по главной и побочной диагонали.
Дано слово. Начертить с помощью букв этого слова квадрат.
Дано слово. Вывести это слово в строчку по буквам в каждой заданной строке начиная с исходной.
Дано слово. Вывести это слово в столбик по буквам 40 раз через пробел.
Дано слово. Вывести на экран с помощью его букв слово XXL.
Дано слово. Вывести в одной и той же позиции это слово по буквам разного цвета.
Записи
Тип запись – это новый тип переменных, который позволяет простым способом объединить различные данные под одним именем.
При такой ситуации до этого времени использовался тип массив. Но различие между массивом и записью заключается в том, что отдельные данные из которых состоит запись, могут иметь разные типы. У массива этого быть не может.
В Паскале для описания типа Запись используется зарезервированное слово Record. В отличии от массива, где различные переменные назывались элементами, запись состоит из полей.
Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа.
Описание записи в языке Паскаль осуществляется с помощью служебного слова Record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом End.
Type <имя записи>=Record
<имя поля 1>: тип поля;
<имя поля 2>: тип поля;
………
<имя поля N>: тип поля;
End;
Var <имя переменной>: <имя записи>;
Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:
type TRec = Record
FIO: String[20];
TEL: String[7]
end;
var rec: TRec;
Описание записей возможно и без использования имени типа, например:
Var <имя переменной>: Record
<имя поля 1>: тип поля;
<имя поля 2>: тип поля;
………
<имя поля N>: тип поля;
End;
Например:
var rec: Record
FIO: String[20];
TEL: String[7]
end;
Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа. Во всех остальных случаях оперируют отдельными полями записей. Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля, например:
rec.FIO, rec.TEL
Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен.
Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения With.
Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:
with rec do
оператор;
Здесь rec - имя записи, оператор - оператор, простой или составной. Оператор представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена. Например для нашего случая:
with rec do
begin
FIO:='Иванов А.А.';
TEL:='2223322';
end;
Такая алгоритмическая конструкция полностью идентична следующей:
rec.FIO:='Иванов А.А.';
rec.TEL:='2223322';
Инициализация записей может производиться с помощью типизированных констант:
type
RecType = Record
x,y: Word;
ch: Char;
dim: Array[1..3] of Byte
end;
const
Rec: RecType = ( x: 127;
y: 255;
ch: 'A';
dim: (2, 4, 8) );
Особой разновидностью записей являются записи с вариантами, которые объявляются с использованием зарезервированного слова Case. С помощью записей с вариантами вы можете одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во все структурах, и некоторые небольшие отличающиеся части.
Например, сконструируем запись, в которой мы будем хранить данные о некоторой геометрической фигуре (отрезок, треугольник, окружность).
type
TFigure = record
type_of_figure: string[10];
color_of_figure: byte;
...
case integer of
1: (x1,y1,x2,y2: integer);
2: (a1,a2,b1,b2,c1,c2: integer);
3: (x,y: integer; radius: word);
end;
var figure: TFigure;
Таким образом, в переменной figure мы можем хранить данные как об отрезке, так и о треугольнике или окружности. Надо лишь в зависимости от типа фигуры обращаться к соответствующим полям записи.
Заметим, что индивидуальные поля для каждого из типов фигур занимают тем не менее одно адресное пространство памяти, а это означает, что одновременное их использование невозможно.
В любой записи может быть только одна вариантная часть. После окончания вариантной части в записи не могут появляться никакие другие поля. Имена полей должны быть уникальными в пределах той записи, где они объявлены.
Пример записи с вариантами:
program example;
type
seasons = (spring, summer, autumn, winter);
recvar = record
Date : Byte;
case time_for_vacations : seasons of
spring: (ma : (March, April, May));
summer: (grandpa : (June, July. August));
autumn: (grandma : (September, October, November));
winter: (pa : (December. January, February));
end;
var
my_family : recvar;
begin
my_family.time_for_vacations := spring;
my_family.ma := May;
my_family.time_for_vacations := winter;
my_family.pa := December;
my_family.time_for_vacations := summer;
my_fami1y.grandpa := August;
my_family.time_for_vacations := autumn;
my_family.grandma := September;
end.