- •Основы алгоритмизации и программирования
- •Введение
- •1.1. Структура программы
- •1.2. Типы данных
- •1.2.1. Целый тип данных
- •1.2.2. Логические типы данных – Boolean
- •1.2.3. Данные символьного типа
- •1.3. Операторы языка программирования Турбо Паскаль
- •1.3.1. Операции в Турбо Паскаль
- •1.3.2. Правила вычисления выражений
- •1.3.3. Встроенные функции в Турбо Паскаль
- •1.3.4. Описание констант и переменных
- •1.3.5. Операторы в Турбо Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №1 Организация программ линейных структур
- •Варианты заданий
- •2. Организация форматного вывода данных на языке Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №2 Организация ввода-вывода данных на языке Паскаль
- •Методические указания
- •Варианты задания
- •3. Организация программ разветвляющихся структур
- •3.1. Полная форма условного оператора
- •3.2. Краткая форма условного оператора
- •Вопросы для самопроверки
- •Лабораторная работа №3 Организация программ разветвляющихся структур
- •Варианты заданий
- •4. Организация циклических процессов
- •Лабораторная работа №4 Составление циклических программ
- •Варианты заданий
- •Методические указания
- •Варианты заданий
- •5. Программирование структур с вложенными циклами
- •Вопросы для самопроверки
- •Лабораторная работа №5 программирование структур с вложенными циклами. Вычисление суммы ряда
- •Методические указания
- •Варианты заданий
- •6. Перечислимые и ограниченные типы данных
- •6.1 Перечислимый тип данных
- •6.2. Ограниченный тип данных
- •6.3. Оператор выбора (варианта)
- •Вопросы для самопроверки
- •Лабораторная работа №6 Перечислимые и ограниченные типы данных
- •Варианты заданий.
- •7. Регулярные типы данных
- •7.1. Одномерные массивы
- •7.1.1. Краткая форма объявления одномерного массива
- •7.1.2. Полная форма объявления одномерного массива
- •7.1.3. Доступ к элементам массива
- •Вопросы для самопроверки
- •Лабораторная работа №7_1 регулярные типы данных. Массивы
- •Варианты заданий
- •7.2. Двумерные массивы
- •Полная форма описания матрицы:
- •Формирование элементов случайным образом:
- •Формирование элементов матрицы при вводе с клавиатуры:
- •Фрагменты программ по обработке 2-х мерных массивов
- •Вопросы для самопроверки
- •Лабораторная работа №7_2 регулярные типы данных. МАтрицы
- •Варианты заданий
- •7.3. Сортировка элементов массива
- •7.3.1. Сортировка методом «пузырька»
- •7.3.2. Сортировка вставками
- •7.3.3. Сортировка посредством выбора
- •7.3.4. Быстрая сортировка
- •8. Составление программ с использованием подпрограмм
- •8.1. Область видимости идентификатора переменной
- •8.2. Подпрограммы - процедуры (procedure)
- •8.2.1. Формальные и фактические параметры
- •Вопросы для самопроверки
- •Лабораторная работа №8_1 составление программ с использованием подпрограмм - процедур
- •Методические указания
- •Варианты заданий
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Структура модуля
- •Interface
- •Implementation
- •Вопросы для самопроверки
- •10.2. Стандартные процедуры и функции для строк
- •10.3. Хранение строк
- •Вопросы для самопроверки
- •Лабораторная работа №10 обработка символьной информации
- •Варианты заданий
- •11. Комбинированные типы. Записи (Record)
- •11.1 Записи с фиксированными частями
- •11.2. Оператор with…do
- •11.3. Вариантные записи
- •Вопросы для самопроверки
- •Лабораторная работа №11 Комбинированные типы. Записи
- •Варианты заданий
- •12. Файлы
- •12.1. Классификация файлов
- •12.1.1. Чтение файла
- •12.1.2. Запись файла
- •Вопросы для самопроверки
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •Include (s, I);
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Горячие клавиши
- •Библиографический список
- •Оглавление Введение 3
- •1. Программирование на языке Паскаль 5
- •1.1. Структура программы 5
- •2. Организация форматного вывода данных на языке Паскаль 17
- •Лабораторная работа №7_1.
- •Лабораторная работа №7_2.
- •Лабораторная работа №8_2.
1.3.2. Правила вычисления выражений
Выражение – это синтаксическая единица языка, определяющая вычисление некоторых значений. Выражение на языке программирования Паскаль формируется из констант, переменных, функций, знаков операций и круглых скобок.
Доминантным моментом в вычислении выражения выступает порядок обработки элементов, составляющих выражение.
В Паскале весь набор допустимых операторов, разбит на шесть равноправных групп, каждой из которых присвоен определённый приоритет действия.
Уровень приоритета |
Операции, входящие в группы с данным приоритетом |
1 |
() |
2 |
Функции |
3 |
@, not, унарный +, унарный - |
4 |
*, /, div, mod, and, shl, shr |
5 |
+, -, or, xor |
6 |
=, <>, <, >, <=, >=, in |
1.3.3. Встроенные функции в Турбо Паскаль
Кроме этих стандартных операций, в Паскаль встроены специальные подпрограммы-функции, которые программисты могут использовать в выражениях как готовые элементы. Библиотека Турбо Паскаля содержит значительный набор внешних функций, которые подключаются автоматически при компиляции или при исполнении программы. Эти внешние процедуры и функции сгруппированы в системный блок – модуль System. Для пользователя внешний блок System, входящий в состав библиотеки Турбо Паскаль, - «прозрачный», то есть его функции применяются аналогично встроенным операторам. Функции системного блока System, применяемые при обработке числовых значений приведены в таблице 4.
Таблица 4
Математические функции |
Функции Турбо Паскаля |
|X| |
ABS (X) |
Arctg (X) |
ARCTAN (X) |
Cos (X) |
COS (X) |
XA |
EXP (A*LN (X)) |
EX |
EXP (X) |
Ln (X) |
LN (X) |
Число 3,14159 |
Pi |
Sin (X) |
SIN (X) |
Tg (X) |
SIN (X) / COS (X) |
X2 |
SQR (X) |
SQRT (X) |
Рассмотрим дополнительные операции над вещественными числами:
Trunc (x) – дробная часть вещественного числа отбрасывается и выдается целый остаток;
Int (x) – возвращает целую часть аргумента;
Round (x) – округляет вещественное число до целого порядкового типа;
Frac (x) – результатом является дробная часть значения аргумента.
1.3.4. Описание констант и переменных
Описание констант имеет вид:
const <имя_константы> = <значение_константы>;
Например.
CONST C1 = 17; // INTEGER
С2 = 3.14; // REAL
С3 = ‘A’; // CHAR
C4 = ‘APPLE’; // STRING
C5 = FALSE; // BOOLEAN
Описание переменных имеет вид:
VAR <имя_переменной> : <тип_переменной>;
Типы переменных:
integer – целый;
real – вещественный;
char – символьный;
string – строковый;
Boolean – логический:
false – ложь;
true – истина.
Например,
{ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ}
VAR A : INTEGER;
B : REAL;
C : CHAR;
{ОБЪЯВЛЕНИЕ КОНСТАНТ}
CONST C1 = 17; // INTEGER
С2 = 3.14; // REAL
С3 = ‘A’; // CHAR
C4 = ‘APPLE’; // STRING
C5 = FALSE; // BOOLEAN
1.3.5. Операторы в Турбо Паскаль
Операторы языка программирования Турбо Паскаль можно разделить на следующие операторы:
простые:
оператор присваивания;
пустой оператор;
оператор ввода;
оператор вывода;
составной оператор;
сложные:
условный оператор;
циклические операторы;
оператор выбора (варианта);
оператор присоединения в записях;
оператор перехода.
Оператор присваивания
Оператор присваивания обозначается знаком “:=”.
Формат оператора присваивания:
V := A;
где V – имя переменной, := - знак присваивания, A – выражение.
Тип выражения должен соответствовать типу переменной. Допускается присваивание переменной вещественного типа значения выражения целого типа, но не наоборот! Для преобразования значения вещественного типа в значение целого типа предназначены функции TRUNC(X) – нахождение целой части X и ROUND(X) – округление X в сторону ближайшего целого.
Например,
A := 5;
B := A*A-2;
C := ‘A’;
Операторы ввода и вывода
Операторы ввода и вывода служат для организации обмена информацией между внешними устройствами (дисплей, клавиатура, принтер) и памятью ЭВМ.
Оператор ввода имеет следующие форматы:
READ (a1, a2,.., ak), где a1, a2,.., ak – список вводимых параметров. Здесь, каждое вводимое значение присваивается последовательно данным переменным.
READLN (a1, a2,.., ak) – каждое вводимое значение присваивается последовательно переменным a1, a2,.., ak, после чего происходит переход на новую строку.
READLN – обеспечивает пропуск одной строки и переход к началу новой строки.
Примечание. Ввод переменных логического типа недопустим. Числовые значения задаются после запуска программы через пробел (или ввод).
Например, ввести данные A=5, B=1.7, C = ‘L’.
…
READ (A, B, C);
…
5_1.7_L /после запуска программы на выполнение/
Оператор вывода имеет следующие форматы:
WRITE (b1, b2,.., bk), где b1, b2,.., bk – список переменных подлежащих выводу. Выводимые значения размещаются в одной строке.
WRITELN (b1, b2,.., bk) – осуществляется вывод значений b1, b2,.., bk и после вывода последнего значения осуществляется переход на новую строку.
WRITELN – обеспечивает пропуск строки в файле и переход к новой строке.
Примечание. В качестве выводимых параметров могут быть целые, вещественные, символьные и логические переменные и константы.
Пример 1.1. Вычислить значение выражения по формуле.
Рекомендуется числитель и знаменатель вычислить как отдельные выражения:
A := exp (abs(x-z)) + sqr (sin (sqr(z)*z));
B := sin (x) / cos (x) – sqrt (abs(cos (sqr(x))-exp(z)));
Y := A/B;
Задача1.1. Рассмотрим разработку алгоритма и программы вычисления площади треугольника по формуле Герона.
Блок-схема алгоритма
Листинг программы
PROGRAMTREUG;
USESCRT; {РАЗДЕЛ ПОДКЛЮЧЕНИЯ БИБЛИОТЕКИCRT}
VAR A, B, C, P, S : REAL;
BEGIN
CLRSCR;
WRITELN(‘Введите стороны треугольника’);
READLN (A, B, C);
P := (A+B+C)/2;
S := SQRT(P*(P-A)*(P-B)*(P-C));
WRITELN(‘Площадь треугольника равна - ’,S);
READLN; {ОСТАНОВ ПРОГРАММЫ}
END.
Задача 1.2. Ввести с клавиатуры четырёхзначное число и найти произведение цифр этого числа.
Листинг программы
PROGRAM PRIMER1;
USES CRT;
VAR A, A1, A2, A3, A4, A5, A6, A7 : INTEGER;
BEGIN
WRITELN(‘Введите целое 4-хзначное число’);
READLN (A); // 4375
A1 := A MOD 10; // 5
WRITELN (A1);
A2 := A DIV 10; // 437
A3 := A2 MOD 10; // 7
WRITELN (A3);
A4 := A2 DIV 10; // 43
A5 := A4 MOD 10; // 3
WRITELN (A5);
A6 := A DIV 1000; // 4
WRITELN (A6);
A7 := A1 * A3* A5*A6; // 420
WRITELN (A1, ‘*’, A3, ‘*’, A5, ‘*’, A6, ‘=’, A7);
WRITELN;
END.