Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДИЧКА ПАСКАЛЬ.doc
Скачиваний:
2
Добавлен:
06.05.2019
Размер:
141.82 Кб
Скачать

Задания

Для каждого варианта разработать алгоритм в виде блок-схемы и программный код вычисления выражения, введя функцию пользователя.

Вариант 1. Вычислить функцию Бесселя 8-го порядка с аргументом х:

J(0, x)=x; J(1,x )=2*x; J(n, x)=2(n-1)/x*J(n-1, x) – J(n-2, x).

Вариант 2. Определить 14-й член рекуррентной последовательности: V1=a1, V2=a2+a1, Vk = akVk-1+ ak-1/V k-2,;

a(N) – массив вещественных чисел.

Вариант 3. Вычислить значения функции Аккермана для заданных m и n:

Ack (0, n) = n + 1,

Ack (m, 0) = Ack (m - 1, 1),

Ack ( m,n) = Ack (m – 1, Ack (m, n – 1)).

Вариант 4. Вычислить значения полиномов Эрмита:

H0 (x) = 1,

H1 (x) = 2*x,

Hn (x) = 2*x*Hn-1 (x) – 2*(n – 1)*Hn-2 (x).

Вариант 5. Последовательность полиномов Лаггера

L0(x), … , Ln(x) определяется следующим образом:

L0 (x) = 1,

L1 (x) = x – 1,

Lk (x) = (x – 2*k +1)*Lk-1(x) + (k – 1)2*L k-2 (x).

Вычислить L6(10).

Тема 4. Строки

Пример 4.1. Определить частоту появления строчных букв латинского алфавита в тексте, который вводится с клавиатуры.

Программа может иметь следующий вид:

Program Pr_4;

{Исследование текста}

Var Litera: array [a..z] of integer;

Simvol, k: char; N: integer;

Begin

N:=0;

While not Eof do

Begin

Read(Simvol);

Inc(N);

If (Symvol >= a) and (Symvol <= z)

Then Inc(Litera[Symvol])

End;

Writeln(Литера Частота);

For k:=a to z do

Writeln (k: 5, Litera[k]/n:10:2)

End.

Задания

Для каждого варианта разработать алгоритм в виде блок-схемы и программный код.

Вариант 1. Найти во введенном тексте самое короткое и самое длинное слово.

Вариант 2. В предложении, содержащем не менее двух слов, поменять местами первое и последнее слово.

Вариант 3. Вводится последовательность ключевых слов. Отсортировать их по алфавиту.

Вариант 4. В заданном тексте перевернуть каждое слово.

Вариант 5. Определить, можно ли из символов заданной строки составить вашу фамилию.

Тема 5. Модули

Пример 5.1. Разработать программу суммирования максимальных элементов двух одномерных массивов, поместив все подпрограммы в отдельный программный модуль.

Схема алгоритма в этом случае строится таким же образом, как и при использовании процедур и функций в одном программном модуле вместе с основной программой, т.е. приводится схема основной программы и набор схем подпрограмм, применяемых в ней.

Создаем модуль, реализующий ввод-вывод одномерного массива и поиск в нем максимального элемента.

Unit Max_Elem;

Interface

Const nmax=100;

Type My_Array: array [1..nmax] of integer;

Procedure Input_Array(Var a: My_Array;

name:char; n:integer);

Procedure Output_Array(a: My_Array;

name: char; n: integer);

Procedure Max_Array(a: My_Array;

n: integer; Var max:integer);

Implementation

Procedure Input_Array;

Var i: integer;

Begin

Writeln(Введите , n: 5, элементов массива);

For i:=1 to n do Read(a[i]);

Writeln

End;

Procedure Output_Array;

Var i: integer;

Begin

Writeln(Массив , nаme, : );

For i:=1 to n do Write(a[i]: 8);

Writeln;

End;

Procedure Max_Array;

Var i: integer;

Begin

max:=a[1];

for i:=2 to n do

if max<a[i] then max:=a[i]

End

End.

Текст модуля помещается в файл Max_Elem.pas, компилируется отдельно от основной программы, в результате создается TPU-файл с именем Max_Elem.tpu и нашей программе могут стать доступными процедуры из новой библиотеки.

Program Pr_5;

{Использование модулей}

Uses Max_Elem

Var a, b: My_Array;

maxa, maxb, na, nb, S: integer;

Begin

Write( Введите количество );

Writeln( элементов массива А );

Read (na);

Input_Array(a, A , na);

Write( Введите количество );

Writeln( элементов массива В );

Read (nb);

Input_Array(b, B , nb);

Output_Array(a, A , na);

Output_Array(b, B , nb);

Max_Array(a, na, maxa);

Max_Array(b, nb, maxb);

S :=maxa + maxb;

Write( Сумма максимальных );

Writeln( элементов равна: , S);

End.