- •Общие сведения об эвм
- •1. Общая функциональная схема эвм
- •2. Языки программирования
- •3. Этапы решения задач на эвм
- •4. Понятие алгоритма и его свойства
- •5. Графическое описание алгоритмов. Схемы алгоритмов
- •Блоки для изображения схем алгоритмов и программ
- •6. Типы алгоритмов
- •7. Ос эвм. Понятие о файловой системе
- •Имя.Расширение
- •8. Команды ms dos
- •Программирование на языке Паскаль
- •1. Структура программы на языке паскаль
- •2. Описание данных
- •2.1. Константы
- •2.2. Переменные
- •3. Комментарии
- •4. Операторы языка паскаль
- •5. Операторы обработки данных
- •5.1. Операторы ввода
- •5.2. Операторы вывода
- •5.3. Вычисление по формулам. Оператор присваивания
- •6. Линейные программы
- •7. Управляющие операторы
- •7.1. Разветвляющиеся алгоритмы. Оператор if (если)
- •7.2. Пример разветвляющейся программы
- •7.3. Оператор case
- •8. Циклические алгоритмы и программы
- •8.1. Общая схема цикла
- •8.2. Циклы со счетчиком
- •8.3. Итерационные циклы
- •8.3.1. Оператор цикла с пост-условием
- •8.3.2. Оператор цикла с пред-условием
- •Описание данных
- •9. Типы данных, используемых в паскале
- •9.1. Представление данных в эвм
- •9.2. Стандартные функции Паскаля и Турбо Паскаля
- •9.3. Булевские переменные и выражения
- •9.4. Функции для работы с символами
- •Функции языка Паскаль
- •9.5. Массивы
- •10. Примеры программ обработки массивов
- •11. Особенности алгоритмов и программ с накапливанием
- •12. Алгоритм нахождения минимума и максимума
- •13. Задача сортировки
- •14. Обработка многомерных массивов
- •15. Программы обработки строк символов (текстов)
- •15.1. Простейшие алгоритмы и программы обработки строк
- •15.2. Анализ символов в строке
- •16. Типовые программы обработки строк
- •16.1. Выделение слов из текста (слова разделены одним пробелом)
- •16.2. Выделение слов из текста (слова разделены несколькими пробелами)
- •16.3. Некоторые типовые алгоритмы и программы обработки массивов строк (слов из текстов)
- •17. Алгоритмы поиска
- •17.1. Алгоритм линейного поиска
- •17.2. Алгоритм дихотомического поиска
- •Процедуры, функции и модули в паскале
- •18.1. Процедуры
- •18.1.1. Пример программы с процедурой
- •18.1.2. Расположение процедур в программе
- •18.2. Функции
- •18.2.1. Пример программы с функцией
- •18.3. Внешние процедуры и функции
- •18.3.1. Модули пользователей
- •19. Итерационные циклы
- •19.1. Приближенное вычисление функций
- •19.2. Решение уравнений приближенными методами
- •19.2.1. Метод деления отрезка пополам
- •19.2.2. Метод Ньютона
- •19.2.3. Метод прохождения отрезка с переменным шагом
- •19.3. Вычисление определенных интегралов
- •19.3.1. Метод прямоугольников
- •19.3.2. Метод трапеций
- •20. Дополнительные сведения о ТипАх данных, применяемЫх в Паскале
- •20.1. Перечисляемый тип
- •20.2. Интервальный тип
- •20.3. Множества
- •20.3.1. Примеры программ с использованием множеств
- •Алгоритм
- •20.4. Записи
- •20.4.1. Примеры программ обработки записей
- •Алгоритм
- •Оператор_1;
- •21. Файлы и наборы данных
- •Assign(имя_файла, имя_нд);
- •21.1. Текстовые файлы
- •21.1.1. Создание текстового файла
- •21.1.2. Работа с существующим текстовым файлом
- •21.2. Типизированные файлы
- •21.2.1. Последовательная обработка типизированных файлов
- •21.2.2. Использование прямого доступа к записям типизированного файла
- •21.2.3. Упорядочение записей в файле
- •Алгоритм
- •21.2.4. Удаление записей из файла
- •21.2.5. Вставка записей в файл
- •22. Динамическое распределение памяти. Указатели и списки
- •22.1. Использование указателей. Списки
- •22.2. Очереди
- •22.2.1. Очередь типа lifo
- •22.2.2. Очередь fifo
- •23. Стандартные модули Турбо Паскаля
- •23.1. Модуль Crt
- •23.1.1. Работа с клавиатурой и звуком
- •23.1.2. Управление цветом
- •23.1.3. Создание окон и позиционирование курсора
- •23.1.4. Построение графика в текстовом режиме
- •23.1.5. Алгоритм и программа представления меню средствами Турбо Паскаля
- •23.2. Модуль dos
- •23.3. Модуль Graph
- •23.3.1. Инициирование графического режима
- •1) Процедура InitGraph(Var grDr,grMd:integer;path:string);
- •23.3.2. Вывод точек на экран
- •23.3.3. Вывод текста (надписей) в графическом режиме
- •1) SetTextStyle(Шрифт, Направление:Word; Размер:1..10);
- •23.3.4. Построение графических изображений
- •1) SetLineStyle(Тип_линии, Образец, Толщина : Word);
- •23.3.5. Запоминание и вывод изображений
- •24. Рекомендации по оформлению текста программ
- •Библиографический список
- •Оглавление
18.2.1. Пример программы с функцией
Задача. Найти сумму элементов в нескольких массивах.
Program Count_Sum;
Const
Nmax = 200;
Type
Mas = Array[1..Nmax] Of Real;
Var
A,B : Mas;
Suma,Sumb : Real;
i,n : Integer;
Function SumMas (k:Integer;X:Mas):Real;
{Нахождение суммы элементов массива вещественных чисел}
Var
I : Integer;
S : Real; { Вспомогательная переменная - сумма}
Begin
S := 0;
For i := 1 to k Do
S:=S + X[i];
SumMas:=S;
End; { SumMas }
Begin
{ Основная программа }
Writeln(’Введите размер массивов’);
ReadLn(n);
Writeln(’Введите первый массив’);
For i := 1 to n Do
ReadLn (A[i]);
Writeln(’Введите второй массив’);
For i := 1 to n Do
ReadLn (B[i]);
Suma := SumMas(n,A);
Sumb := SumMas(n,B);
Writeln(’Сумма чисел 1-го массива =’,Suma:8:2);
Writeln(’Сумма чисел 2-го массива =’,Sumb:8:2);
WriteLn(’Работа окончена. Нажмите клавишу ENTER’);
Readln;
End.
18.3. Внешние процедуры и функции
Если тексты процедур и функций размещены непосредственно в программе (как это было описано в предыдущем разделе), то их можно назвать внутренними. Когда возникает необходимость применить некоторые из этих процедур и/или функций в другой программе, придется переписать их туда. Хотя сделать это совсем не сложно, но при большом их количестве увеличение текста программы может оказаться чрезмерным. В Турбо Паскале используется более изящное решение этой проблемы – процедуры и функции можно помещать в модули, которые потом допустимо присоединять к любым программам (при этом совсем необязательно иметь в наличии исходный текст).
Процедуры и функции, описанные в модуле, являются внешними по отношению к программе, которая их использует.
В Турбо Паскале существует 2 вида модулей:
1) модули пользователей;
2) стандартные модули.
18.3.1. Модули пользователей
Структура модуля (стандартного или написанного пользователем) приведена на рис. 2.11.
Модуль должен начинаться с заголовка, включающего служебное слово Unit и имя_модуля.
Пример.
Unit MyModul; или
Unit Sort;
Имя файла, содержащего модуль, и имя модуля должны быть одинаковыми!
Применительно к приведенному примеру это означает, что модуль MyModul должен храниться в файле MyModul.pas, а модуль Sort – в файле Sort.pas.
Интерфейсная секция — общедоступная часть, "видимая" из любой программы (модуля). В ней описываются так называемые глобальные данные (константы, типы, переменные), используемые в модуле и доступные программе (или другим модулям, к которым присоединен данный). Здесь же содержатся заголовки (но не тексты!) процедур и функций, помещенных в модуль. Любая программа имеет доступ к этим объектам, как если бы они были описаны в ней.
Секция реализации содержит тела процедур и функций, описанных в интерфейсной секции. Здесь же описываются константы, переменные, процедуры и функции, являющиеся локальными, т.е. недоступными вне этого модуля.
После нее может быть секция инициализации. Она не имеет заголовка и может содержать (или не содержать) некоторую последовательность операторов, выполняющуюся при использовании модуля.
Итак, последняя часть модуля всегда имеет следующий вид:
Begin
Операторы, выполняющиеся при инициализации модуля, которые могут отсутствовать.
End.
Модуль компилируется отдельно. Получается файл с расширением tpu, например, MyModul.tpu или Sort.tpu. Откомпилированный модуль компилятором должен быть помещен на диск. Если это не делается по умолчанию, то в меню Compile должно быть устанавлено Destination - disk (а не Memory).
Чтобы программа могла работать с какими-либо модулями, сразу после ее заголовка должен быть записан оператор использования, определяемый служебным словом Uses. После этого слова через запятую перечисляются имена всех модулей, непосредственно используемых программой, а также модулей, используемых первыми.
Пример. Program Test;
Uses
MyModul, Sort, Dos;
Const
Пример 1. Напишем модуль, содержащий процедуру сортировки массива вещественных чисел, и функцию, определяющую сумму его элементов.
Unit Sort;
Interface { интерфейсная секция }
Const { Глобальная константа и тип }
Nmax=200;
Type
mas = array[1..Nmax] of real;
Procedure SortY(Var Y : mas; m : integer);
Function SumMas (Y : mas; m : integer): real;
Implementation { секция реализации }
Procedure SortY; { можно только имя }
Var
i,k : integer;
a : real;
Begin
for k := 1 to m-1 do
for i := 1 to m-k do
if Y[i]>Y[i+1]then
Begin
a := Y[i];
Y[i] := Y[i+1];
Y[i+1] := a;
end;
end; { SortY }
Function SumMas; { можно только имя }
{Нахождение суммы элементов массива вещественных чисел}
Var
I : Integer;
S : Real; { Вспомогательная переменная - сумма}
Begin
S := 0;
For i := 1 to k Do
S:=S + X[i];
SumMas:=S;
End; { SumMas }
Begin
{ секция инициализации не содержит операторов }
End.
Основная программа, которая использует этот модуль, может быть такой.
Program Main;
Uses
Sort; {пользовательский модуль}
Var
X:mas; { mas - глобальный тип, описанный в модуле sort}
n,i,j:integer;
z:real;
Begin
Writeln(’Введите размер массива’);
ReadLn (n); { размер массива }
Writeln(’Введите массив’);
For i := 1 to n do
ReadLn (x[i]);
SortY (x,n);
Z := SumMas (x,n);
Writeln(’Сумма элементов массива = ’,Z:8:2);
Writeln(’Упорядоченный массив’);
For i := 1 to n do
Write (x[i]:8:2);
Writeln;
Writeln ('Конец работы. Нажмите клавишу ENTER');
ReadLn;
End.