Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции(ЯВУ)-Паскаль.doc
Скачиваний:
63
Добавлен:
31.03.2015
Размер:
1.08 Mб
Скачать

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

    1. Пример 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

Вывод значения Y

Программа на языке Паскаль.

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