- •Федеральное агенство по образованию российской федерации
- •1. Основные категории и понятия информатики
- •Предмет информатики как науки
- •1.2. Информация: структура, форма, измерение
- •2. Техническое и программное обеспечение пэвм
- •2.1. Структура аппаратных средств пэвм
- •2.2. Программное обеспечение пэвм
- •3. Основы алгоритмизации
- •Этапы разработки программ
- •3.2.Формы представления алгоритмов
- •Действие 1
- •Действие 2
- •Классификация и примеры алгоритмических структур
- •3.2.1. Алгоритм линейной структуры.
- •3.2.2. Алгоритм разветвляющейся структуры.
- •Да нет да да Рис 3.11
- •3.2.3. Алгоритмы циклической структуры.
- •4.2. Структура программы на языке Паскаль
- •4.3. Скалярные стандартные типы данных
- •4.4. Скалярные, пользовательские типы данных
- •5. Структурные типы данных
- •Массивы
- •5.3. Записи
- •5.4. Записи с вариантами
- •Множества
- •5.6.Файлы
- •6. Операции над данными скалярных типов. Выражения
- •7. Операторы языка Паскаль
- •7.1. Простые операторы
- •7.2. Структурные операторы
- •Оператор 2
- •8. Примеры программ на языке Паскаль
- •8.1. Пример 1. Арифметические выражения. Оператор присваивания
- •Пример 2. Условные операторы
- •Ввод чисел х, а
- •8.3. Пример 3. Программа обработки одномерного массива
- •8.4. Пример 4. Программа обработки двумерного массива
- •True False True False False
- •8.5. Пример 5. Программа обработки символьных строк
- •8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
- •9.Разработка программ сложной структуры
- •9.1. Процедуры и функции
- •9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
- •9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
- •9.4. Использование процедур и функций
- •True False Рис. 9.4
- •9.5. Массивы – параметры процедур и функций
- •True False True False Рис. 9.7
- •True False True False True False Рис 9.9
- •9.6. Рекурсивные процедуры и функции
- •True False Рис. 9.10 True False
- •True False Рис. 9.12
- •9.7. Модули
- •10. Динамические структуры данных
- •Основные определения
- •10.2. Объявление и создание динамических структур данных. Указатели
- •Операции над указателями
- •Программа создания и обработки линейного списка
- •Приложение. Контрольные вопросы
- •Литература
8. Примеры программ на языке Паскаль
8.1. Пример 1. Арифметические выражения. Оператор присваивания
Задание 1. Вычислить значение функции
. Значение аргумента Х вводится с клавиатуры.
Постановка задачи.
Входные данные:
Х – аргумент функции Y.
Выходные данные:
Y– значение функции.
Метод решения: вычисление значения функции по заданной формуле.
Алгоритм.Вычисление значения функции.
Входные данные.
СКАЛЯР Х – вещественное число.
Выходные данные.
СКАЛЯР Y– вещественное число.
Начало
ввод(Х)
вывод(Y)
Конец
Блок-схема алгоритма.
Ввод
числа Х
Вывод значенияY
Рис
8.1
Программа на языке Паскаль.
Program Example1;
Var X,Y: real;
Begin
Write(‘Input X: ‘);
Readln(X);
Y:=(X*sqr(X) +6)/sqrt(sqr(X)+6)+4;
Write(‘Y= ‘,Y);
End.
Результаты тестирования.
Если X=1.2,Yдолжен быть равен 6.83322226.
Результаты, выданные программой.
Input X: 1.2
Y= 6.83322226221255E+0000
Пример 2. Условные операторы
Задание 1. Вычислить значение функции в зависимости от условия.
.
Значения аргумента Х и параметра Aвводятся с клавиатуры.
Постановка задачи.
Входные данные:
А – постоянный параметр функции Y,A>0,
Х – аргумент функции Y.
Выходные данные:
Y– значение функции.
Метод решения: проверка условия и вычисление значения функции по заданной формуле.
Алгоритм.Вычисление значения функции в зависимости от условия.
Входные данные.
СКАЛЯР Х – вещественное число,
А – положительное, вещественное число.
Выходные данные.
СКАЛЯР Y– вещественное число.
Начало
ввод(Х,А)
ЕСЛИ X<0 ТО
Y=(X-A)/X
ИНАЧЕ
ЕСЛИ X<AТОY=0
ИНАЧЕ Y= A-ln|X-1|
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЕСЛИ
вывод(Y)
Конец
Блок-схема алгоритма.
Ввод чисел х, а
False
True False True
Рис.
8.2
Программа на языке Паскаль.
Program Example1;
Var A,X,Y: real;
Begin
While(A<=0) do
begin
Write(‘Input A>0: ‘);
Readln(A)
End;
Write(‘Input X: ‘);
Readln(X);
If X<0 Then
Y:=(X-A)/X
Else
If X<A Then Y:=0
Else Y:=A-ln(abs(X-1));
Write(‘Y= ‘,Y);
End.
Результаты тестирования.
A=1
Если X=-1.5,Yдолжен быть равен 1.66667.
Если X=0.5,Yдолжен быть равен 0.
Если X=1.5,Yдолжен быть равен 1,69314718.
Результаты, выданные программой.
Input A>0: 1
Input X: -1.5
Y= 1.66666666666667E+0000
Input A>0: 1
Input X: 0.5
Y= 0.00000000000000E+0000
Input A>0: 1
Input X: 1.5
Y= 1.69314718055995E+0000
8.3. Пример 3. Программа обработки одномерного массива
Задание 3. Определить минимальный элемент среди положительных элементов одномерного массива. Если положительных элементов нет в массиве, вывести сообщение об этом.
Постановка задачи.
Исходные данные:
Число элементов в одномерном массиве n<=10;
Одномерный массив из nэлементов, содержащий положительные и отрицательные значения.
Выходные данные:значение минимального элемента среди положительных элементов массива.
Аномалии:отсутствие положительных элементов в массиве.
Реакция на аномальную ситуацию – выдача сообщения.
Алгоритм. Поиск минимального элемента среди положительных элементов массива.
Исходные данные:
СКАЛЯР n<=10 - целое число;
МАССИВ M[10] целого типа.
Выходные данные:
СКАЛЯР min– целое число.
Промежуточные данные:
СКАЛЯР i– целое число /* параметр цикла */
i1 – целое число /* номер первого положительного элемента в массиве */
Начало
Вывод(‘inputn<10’)
Ввод(n)
ЦИКЛОТi:=1ДОn
Вывод(‘input M[i] ‘)
Ввод(M[i])
КОНЕЦ_ЦИКЛА
i1:=0
ЦИКЛ
i1:= i1+1
ДО ((M[i1]>0) ИЛИ (i1>n))
ЕСЛИ i1>nТО
Вывод(‘not M[i]>0 ‘)
ИНАЧЕ
min:=M[i1]
ЦИКЛОТi:=i1ДОn
ЕСЛИ ((min>M[i]) И (M[i]>0))ТО
Min:=M[i]
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
Вывод(‘min= ‘,min)
КОНЕЦ_ЕСЛИ
Конец
Блок-схема алгоритма.
False
True
False
I=I+1
True
True
False
False False True True Рис.
8.3
Программа на языке Паскаль.
Program Min_Positive;
Var
M: array[1..10] of integer;
i,n,i1, min: integer;
begin write(‘input n<10’);
readln(n); for i:=1 to n do read(M[i]);
i1:=0;
repeat i1:=i1+1 until(M[i1]>0) or (i1>n);
if i1>n then writeln(‘not M[i]>0’)
else begin
min:=M[i1];
for i:=i1 to n do
if (M[i]>0) and (min >M[i]) then min:=M[i]; writeln(‘min= ‘,min);
end
end.
Результаты тестирования.
1. Исходные данные:
n=5
M=(-1,-2,-3,-4,-5)
Результат- сообщение «notM[i]>0».
Результаты, выданные программой.
input n<10 5
-1 -2 -3 -4 -5
not M[i]>0
2. Исходные данные:
n=5
M=(9,-2,3,4,-5)
Результат- сообщение «min=3».
Результаты, выданные программой.
input n<10 5
9 -2 3 4 -5
min= 3