
- •Утверждаю Зам.Директора по учебной работе
- •Основы Алгоритмизации и программирования учебно-методическое пособие
- •220301 Автоматизированные системы обработки информации и правления
- •Введение
- •Основные этапы решения задач на эвм
- •Глава 1 способы записи алгоритма
- •1.1 Алгоритм и его свойства
- •Схемы алгоритма
- •1.2 Структуры алгоритмов
- •1.2.1 Алгоритм линейной структуры
- •1.2.2 Алгоритм разветвляющейся структуры
- •1.2.3 Алгоритм циклической структуры
- •1.2.4 Алгоритм со структурой итерационных циклов
- •1.2.5 Алгоритм со структурой вложенных циклов
- •Глава 2 программа на языке высокого уровня
- •2.1 Системы программирования
- •2.2 Характеристика языка программирования Паскаль
- •2.3 Алфавит и структура программы на Паскале Алфавит программы
- •Структура программы
- •Глава 3 Стандартные типы данных
- •3.1 Данные. Типы
- •3.2 Вещественные типы
- •3.3 Целочисленные типы
- •3.4 Символьный тип
- •3.5 Логический тип
- •4 Представление основных структур программирования: итерация, ветвление, повторение
- •4.1 Линейная структура (следование)
- •Var X,y,f: real;
- •4.2 Разветвляющая структура (ветвление)
- •4.3 Циклическая структура (повторение)
- •4.3.1 Оператор цикла с параметром
- •I : Integrer; {номер числа }
- •4.3.2 Оператор цикла с постусловием
- •I,n: integer;
- •4.3.3 Оператор цикла с предусловием
- •4.3.4 Итерационные циклы
- •Var r,a:real;
- •Приближенное вычисление функций
- •Решение уравнений приближенными методами
- •Метод деления отрезка пополам
- •Xsl, Xpr, a, b, e, y1, y2, Lev, Prav, y: Real;
- •Метод Ньютона
- •Метод прохождения отрезка с переменным шагом
- •Вычисление определенных интегралов
- •1. Метод прямоугольников
- •X: Real;
- •2. Метод трапеций
- •X: Real;
- •Глава 5 Типы данных, определяемые пользователем
- •5.1 Пользовательский тип данных
- •5.1.1 Типизированные константы
- •5.1.2 Перечисляемый тип
- •I:1..6; loto: num;
- •5.2 Массивы
- •I : integer;
- •5.2.1. Работа с одномерными массивами
- •I,sum : integer;
- •Var a: array [1..N] of real;
- •Var I,s,r: integer;
- •I : list;
- •I : integer;
- •X : mass;
- •I, j, p, n, m, k:integer;
- •I, j, k, nd : integer;
- •Xmin : real;
- •X : mass;
- •Var I, j, nd : integer;
- •X : mass;
- •5.2.2 Работа с двумерными массивами( матицы)
- •Var I,j,n : integer;
- •I,j,n,m : integer;
- •5.2.3 Сортировка массивов
- •Сортировка методом "пузырька"
- •X : Array [1..Nmax] Of Real;
- •X : Array [1..Nmax] Of Real;
- •Сортировка выбором
- •Обменная сортировка
- •Var m:array[1..1000] of integer;
- •I,z,n:integer; Key:byte;
- •Сортировка слиянием
- •Var { Описание массивов и переменных}
- •X, y: array[1..1000] of integer;
- •5.3 Строковые типы
- •Var s: string[10];
- •5.3.1 Операции над строками
- •5.3.2 Стандартные процедуры и функции для строк
- •Функция Length
- •Функция Upcase
- •Функция Copy
- •Функция Роs
- •I, n, p: integer;
- •I: integer;
- •I: integer;
- •Insert (word2, text, I);
- •Insert (chr (k-32), t, I);
- •Insert (chr (k-80), t, I);
- •Insert (‘е’, t, I);
- •Глава 6 Процедуры и функции
- •6.1 Процедуры
- •I : Integer;
- •I, n: integer;
- •Input _ mas (k, n);
- •I,n : Integer;
- •I,k : Integer;
- •6.2 Функции
- •I:Integer;
- •2) Массивы;
- •I,n : Integer;
- •I : Integer;
- •I,tn,tk:Real;
- •Глава 7 Программирование рекурсивных алгоритмов
- •7.1 Понятие рекурсии
- •7.2 Техника построения рекурсивных алгоритмов
- •7.3 Формы рекурсий
- •If Prim(I) then
- •7.4 Рекурсия и итерация
- •7.5 Программирование с использованием рекурсии
- •Var p: Integer;
- •Var X, y: Integer; begin
- •Var z: Real; begin
- •Var I:integer; j:real;
- •Глава 8 Файлы
- •8.1 Текстовые файлы
- •I,n : Integer; {Вспомогательные переменные}
- •8.2 Типизированные файлы
- •X,m,s : Real;
- •8.3 Нетипизированные файлы
- •Глава 9 Записи
- •9.1 Описание записи
- •I: integer;
- •9.2 Оператор присоединения
- •I, j, k, m : integer;
- •X: real;
- •9.3 Вложенные записи
- •9.4 Записи с вариантами
- •Information: record
- •I, k, n : integer;
- •Vedom : Array [1..Nmax] Of Stud;
- •I,j : Integer;
- •Vedom : File Of Stud;
- •Vedom : File Of Stud;
- •I,j,kdv,k2 : Integer;
- •If Not Eof (Ftel) Then
- •If Not Eof(Ftel) then
- •If Not Eof(FilComp) then
- •Глава 10 Динамические структуры данных
- •10.1 Распределение памяти при выполнении программ
- •Верхняя граница памяти ms-dos
- •10.2 Ссылочные переменные
- •10.3 Процедуры управления кучей
- •10.4 Использование переменных ссылочного типа
- •I: Integer;
- •I, k : Integer;
- •Val(b, k, code);{Превратили второй символ в ч исло}
- •10.5 Списки
- •Var Ch : Char;
- •Var Ch : Char;
- •10.6 Деревья
- •10.7 Константы ссылочного типа
- •Глава 11. Язык Паскаль. Графический модуль Graph Список используемой литературы Основная
- •Дополнительная
Var X,y,f: real;
{ Раздел операторов}
Begin
Writeln(' Введите x>=0 '); {Запрос на ввод x}
Readln(x); {Ввод значения x}
{Вычисление значений Y и F}
Y:= Exp (-a*x)*(x* Sin (a*x+b) -Sqrt (x)* Cos (b*x));
F:= Ln (Sqrt( Abs (a*x*x-b)))-1;
{Вывод результатов}
Writeln(' При x = ',x,' Y = ',Y,' F = ',F);
End.
Пример 4.2 Ввести в ЭВМ трёхзначное число и вывести на экран в столбик его цифры, начиная со старшей. Для выделения десятичных цифр воспользуемся операциями Div и Mod.
Program cifra;
Const
d = 10;
s = 100;
Var
num, c1, c2, c3 : integer;
Begin
Writeln('Введите целое трехзначное число');
Read(num);
C1:= num div S;
Writeln ('Цифра 1: ', С1);
C2:= (num mod S) div d;
Writeln('Цифра 2: ', С2);
С3:= num mod d;
Writeln('Цифра 3: ', С3);
end.
4.2 Разветвляющая структура (ветвление)
Разветвляющийся алгоритм предполагает выполнение вычислений по одному из возможных направлений в зависимости от исходных данных или промежуточных результатов. Ветвление в таких алгоритмах производится при проверке некоторых условий.
Условный оператор
Условный оператор позволяет выбрать и выполнить один из двух входящих в него операторов в зависимости от значения логического выражения. Он имеет следующий вид:
IF <логическое выражение> then
<Оператор 1>
[ Else
<Оператор 2>;]
Здесь IF , then, Else – зарезервированные слова языка, означающие соответственно ЕСЛИ, ТО, ИНАЧЕ, квадратные скобки означают, что конструкция Else <Оператор 2> может отсутствовать. Например, оператор
if X<>0 then
Y:= A/X
else
Y:= A;
Соответствует следующий ход вычислений:
Если в момент выполнения программы окажется, что X ≠ 0, то будет вычислено Y = A/X. Если же окажется, что X = 0, то будет вычислено Y = А.
Оператор IF , then, Else – это один оператор, поэтому ";" после оператора 1, т.е. перед Else, не ставится.
Порядок выполнения условного оператора приведен на рисунке 4.1.
Рисунок 4.1 – Схема полного условного оператора
Если условный оператор не имеет конструкции Else, то тогда он называется сокращенным условным оператором. Если логическое выражение принимает значение ЛОЖЬ, сразу выполняется оператор, следующим за условным (рисунок 4.2). Например, оператор
If X>0 Then
K:= K+1; {увеличение К на 1 (подсчет числа положительных Х)}
Рисунок 4.2 –Схема неполного условного оператора
Оператор выбора (варианта)
Оператор If позволяет выбрать один из двух возможных путей решения. В ряде случаев таких путей бывает гораздо больше. При этом также необходимо выбрать один из них. Применение оператора If для таких задач неэффективно.
В Паскале для выбора одного из нескольких путей решения используется оператор Case (вариант из) – обобщение условного оператора. В общем виде он записывается так:
Case выражение Of
Значения1 : Оператор1;
Значения2 : Оператор2;
. . . . . . . . . .
ЗначенияN : ОператорN;
End; { Конец списка выбора }
Выражение записывается относительно специальной переменной выбора (селектора), которая может быть любого перечисляемого типа (Integer, Char).
Значения1, . . . , Значения N – значения выражения, при которых выполняются Оператор1, . . . , Оператор N соответственно.
Если селектор принял значение, не принадлежащее ни одному из перечисленных, то оператор Case пропускается и выполняется следующий за ним оператор (как при неполном If).
Например:
Case Num Mod 2 Of
0 : Writeln('Четное');
1 : Writeln('Нечетное');
End;
или
Case Month Of
1,2,3 : Writeln('Первый квартал');
4,5,6 : Writeln('Второй квартал');
End;
Если после Значений i необходимо выполнять несколько операторов, они заключаются в блок:
Значенияi: Begin
операторы_i
End;
Пример 4.3 Перевести цифру римской системы счисления в ее десятичный эквивалент. Римская цифра вводится c клавиатуры (в виде похожей на нее латинской буквы), а затем на экране должен появиться ее десятичный эквивалент.
Программа будет иметь вид
Program Rim;
Var
R : Char;
N : Integer;
Begin
Writeln('Введите римскую цифру');
Readln(R);
Case R Of
'M': N:= 1000;
'D': N:= 500;
'C': N:= 100;
'L': N:= 50;
'X': N:= 10;
'V': N:= 5;
‘I': N:= 1
End; { Case }
Write ('Десятичное число:', N);
End.
Составной оператор и пустой оператор
Составной оператор – это последовательность произвольных операторов программы, заключенная в операторные скобки – зарезервированные слова BEGIN … END. Составные операторы – важный инструмент Pascal, дающий возможность писать программы по современной технологии структурного программирования (без операторов перехода GOTO).
Pascal допускает произвольную глубину вложенности составных операторов:
BEGIN
……
BEGIN
……
BEGIN
……
END;
……
END;
……
END.
Поскольку BEGIN и END представляют собой структурные скобки, то после BEGIN и перед END ставить знак «;» не обязательно.
В программе может применяться пустой оператор, не выполняющий никакого действия.
Метка и оператор перехода
Метка – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. В Паскале метка – это целое без знака. Метка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием. Описание меток состоит из зарезервированного слова Label.
Оператор перехода указывает, что дальнейшая работа должна продолжится в другой части текста программы, а именно с того места, где находилась метка.
Структура оператора перехода имеет вид:
GOTO <метка>,
где GOTO – зарезервированное слово(«перейти на метку») <метка>- произвольный идентификатор.