
- •Утверждаю Зам.Директора по учебной работе
- •Основы Алгоритмизации и программирования учебно-методическое пособие
- •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 Список используемой литературы Основная
- •Дополнительная
I : Integrer; {номер числа }
Begin
For I := 1 To D Do
Begin
Readln(Num);
C1:=Num Mod D;
Num:=Num Div D;
C2:=Num Mod D;
C3:=Num Div D;
Writeln(C1:2,C2:2,C3:2)
End;
End.
Пример 4.5 Определение номера буквы в латинском алфавите.
Program Lett;
Var
Bukva, ch:char;
K:integer;
Begin
Write(‘введите букву: ’);
Read(bukva);
K:=0;
For ch:=’A’ to bukva do
K:=k+1;
Writeln(‘буква ’,bukva, ‘ имеет номер ’,k,’ в латинском алфавите’);
End.
Пример
4.6 Вычислить
значение логической функции
для двух значений а: истина и ложь.
Program BOOL;
Var
F,a:Boolean;
Z,y: integer;
Begin
Write(‘Z= ‘);
Read(z);
Write(‘Y= ‘);
Read(y);
Writeln(‘Z= ‘,z,’Y= ‘, y);
For a:= true downto false do
Begin
F:=not a and (y>0) or (y>z);
Writeln(‘A=’,a,’F=’,f)
End
End.
4.3.2 Оператор цикла с постусловием
Часто встречаются задачи, когда число повторений в цикле неизвестно, а задано некоторое условие его продолжения или окончания.
Для программирования таких алгоритмов в Паскале существуют два типа операторов – оператор с предусловием и оператор с постусловием.
Оператор цикла с постусловием это оператор Repeat (ПОВТОРЯТЬ), который в общем виде записывается так:
Repeat
Операторы
Until условие;
Схема его работы представлена на рис. 4.5.
В
теле цикла записывается один или
несколько операторов, которые будут
выполняться многократно. Они располагаются
между служебными словами Repeat
и Until,
поэтому обрамлять их словами Begin
и End
не нужно. После слова Until
записывается условие
выхода из цикла
(по значению параметра).
При этом необходимо обязательно изменять параметр внутри цикла, иначе цикл будет выполняться бесконечно (произойдет "зацикливание"). В соответствии со схемой цикл выполняется по крайней мере 1 раз.
Пример 4.7 Изобразить степени двойки, не превышающие 10000.
Program Two;
Var
Num: Integer;
Begin
Num:=2;
Repeat
Writeln (Num);
Num:=Num*2;
Until Num>1000;
End.
Пример 4.8 Определить является ли число простым.
Program Prim;
Var
I,n: integer;
Begin
Writeln(‘ввидите число’);
Read(n);
Write(n,’-‘);
I:=1;
Repiat
I:=i+1;
Until n nod i=0;
If i=n then writeln(‘простое число!’)
Else writeln(‘делится на ’,i);
End.
4.3.3 Оператор цикла с предусловием
О
н
отличается от оператора Repeat
тем, что условие выполнения цикла
проверяется
до начала.
Цикл выполняется, если оно истинно.
Оператор с пред-условием начинается
служебным словом While.
Общая форма его записи:
While условие do
Оператор1;
Схема работы оператора приведена на рис. 4.6.
В этом операторе условие также записывается относительно параметра. Если в теле цикла необходимо выполнить несколько операторов, то они заключаются в блок следующего вида:
Begin
операторы
End;
В отличие от Repeat цикл While может не выполняться ни разу.
Пример 4.9 Вычисление множителей последовательности целых чисел
Program Dividers;
Const
d=2;
Var
Num, Del,P : Integer;
Begin
Writeln ('Введите число');
Readln(Num);
While Num <>0 Do
Begin
P := 0; { число простое }
For Del := d To Num Div d Do
Begin
If Num Mod Del=0 Then
Begin
Write(Del);
P := 1; { число не простое }
End;
End;
If P=0 Then{ п.2.3 }
Writeln('Число ',Num,' - простое');
Writeln('Введите число');
Read(Num);
End;
End.
Пример 4.10 Нахождение делителей целого положительного числа (кроме 1 и самого числа). Х- исходное число, half – половина введенного числа, divider – делитель, I – счетчик.
Program Divid;
Var
Divider, half, I, x: integer;
Begin
Repeat
Write(‘введите положительное число’);
Read(x);
If x<=0 then writeln (‘неправильный ввод’)
Until x>0;
Half:=x div 2;
While Divider <=half do
Begin
If x mod divider=0 then
Begin
I:=i+1;
Writeln(I,’ – й делитель равен’,divider)
End;
Divider:=divider +1;
End;
If i=0 then writeln (‘делителей нет’);
Writeln(‘конец решения’);
End.