Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмизация и языки программирования. Учебно-методический комплекс.pdf
X
- •1. СИЛЛАБУС ДИСЦИПЛИНЫ ДЛЯ СТУДЕНТОВ
- •Тема 1. Понятие алгоритма, свойства, типы, исполнители
- •Структура программы.
- •Имена, ключевые слова и знаки операций
- •Тема 7. Символьные типы данных.
- •Обработка символьных данных.
- •Тема 9. Строки. Строковые процедуры.
- •Функции
- •Тема 11. Множества (Set)
- •Работа с текстовыми файлами
- •Тема 13. Записи
- •Тема 14. Построение изображений на экране
- •Отображение точки на экране
- •Отображение линий на экране
- •Построение прямоугольников на экране
- •Построение многоугольников
- •Построение дуг, эллипсов и окружностей
- •Основная литература
- •Дополнительная литература
- •ГЛОССАРИЙ

end;
2
10
1,
!jii
p
ji
+
=
∏
=
∑
∑
=
=
=
10
1
1
!
sin
k
k
n
k
kn
S
( )
∑
=
+
+
n
i
ii
i
1
2
!3
!12
9996...63 +
+++=y
n
x
xxxy
cos...coscoscos
32
++++
=
end.
Упражнения:
1. Вычислить
2. Вычислить
3. Напечатать в возрастающем порядке все трехзначные числа,
в десятичной записи которых нет одинаковых цифр.
4. Напечатать в возрастающем порядке все трехзначные числа,
сумма цифр которого равна заданному числу n (n=9)
5. Напечатать в возрастающем порядке все трехзначные числа,
в десятичной записи которых все одинаковые цифры.
6. Определить, является ли заданное число совершенным, т.е.
равным сумме всех своих (положительных) делителей, кроме самого
этого числа (например, число 6- совершенно: 6=1+2+3).
7. Дано целое n>2. Напечатать все простые числа из диапазона
[2,n].
8. Вычислить
9. Вычислить
10. Вычислить
ЛАБОРАТОРНАЯ РАБОТА 4
ПРОГРАММИРОВАНИЕ ЦИКЛОВ С УСЛОВИЕМ
Цель работы: Овладеть навыками программирования на языке
Паскаль алгоритмов циклической структуры с использованием операторов цикла с предусловием и постусловием.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Для программирования циклов ПОКА в Паскале существуют
оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
91

...
5
*4
3
4*3
2
3*
2
1
+
++=s
ПРИМЕР 1: Алгоритм Евклида для подсчета НОД (наиболь-
шего общего делителя) двух натуральных чисел.
П Р О Г Р А М М А
program Evklid;
var a,b,x,y,z: integer;
begin
writeln ('Введите числа');
readln (a,b);
x:=a; y:=b;
while (x< >y) do
if x > y
then x:=x-y
else y:=y-x;
z:=x;
writeln ('НОД=',z)
end.
ПРИМЕР 2: Вычислить сумму членов ряда
с точностью до члена ряда, меньшего Е.
П Р О Г Р А М М А
program Summa;
var n:integer;
S,Z,E: real;
begin
writeln ('ввести точность');
readln (E);
n:=1; Z:=1/6; S:=0;
While abs(z) >=E do
begin
S:=S+Z;
n:=n+1;
Z:=n/((n+1)*(n+2))
end;
92

writeln ('S=', S:10:2)
n
S
n
ππππ
π
sin)1(...
4
sin
3
sin
2
sinsin
1+
−++−+−=
ε
ε
xxxxS
nn
sin)1(...sinsinsin1
32
−++−+−=
ε
001,0=
ε
n
n
x
n
xxx
y
)1(...
321
1
3
2
−++−
+
−=
ε
001
,
0=
ε
12
2
7
6
5
4
3
2
2
...
642
+
+++++=
n
n
n
xxxx
xS
ε
001,0=
ε
∑
∞
=
−
=
2
2
ln
)1(
n
n
nn
S
ε
001,
0=
ε
x
x
y+=
1
cos
)1(cos3+n
ne
),...,
1( mn
=
)1cos(
)1sin(+⋅+
kxe
kx
),...,1( nk =
ε
,...,,...,,
2121
yyxx
end.
Упражнения:
1. Вычислить
. Расчет про-
изводить до тех пор, пока слагаемое по абсолютной величине не
станет меньше заданной точности
. Значение
задать вводом.
2. Составить программу вычисления суммы
. Расчет ввести до тех пор, пока
разность между значениями двух соседних членов ряда по
абсолютной величине не станет меньше заданной точности
3. Составить программу вычисления
.
.
.
Счет окончить, когда разность между значениями двух соседних
слагаемых по абсолютной величине станет меньше заданной
точности
.
.
4. Составить программу вычисления суммы
. Расчет вести до тех пор, пока разность
между значениями двух соседних членов ряда по модулю не станет
меньше заданной точности
5. Составить программу вычисления величины
.
.
.
Суммирование производить до тех пор, пока слагаемое по абсолют-
ной величине не станет меньше заданной точности
6. Найти наибольшее значение функции
.
и значение, при
.
котором оно получено. Значения аргумента x изменяются от 0 до 10 с
шагом 0,1.
7. Дано натуральное число m. Найти наименьшее среди чисел
, а также сумму этих чисел.
8. Дано натуральное число n. Найти наибольшее среди чисел
, а также сумму этих чисел.
9. Дано натуральное число n. Получить все его натуральные
делители.
10. Даны действительные, положительные числа a, b,
.
Последовательности
образованы по закону:
93

111111
),(
2
1
,,
−−−−
⋅=+===
kkkkkk
yxyyxxbyax
. Найти первое n такое, что
ε
<−
n
n
yx
.
ЛАБОРАТОРНАЯ РАБОТА 5
ПРОГРАММИРОВАНИЕ ЦИКЛОВ С УСЛОВИЕМ
ЦЕЛЬ РАБОТЫ: Овладеть навыками программирования на
языке Паскаль алгоритмов циклической структуры с использованием
операторов цикла с предусловием и постусловием.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Для программирования циклов ПОКА в Паскале существуют
оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.
ПРИМЕР 1: Написать программу, вычисляющую сумму и
среднее арифметическое последовательности положительных чисел.
П Р О Г Р А М М А
PROGRAM PR1;
VAR a: integer;
n: integer;
S: integer;
m: real;
BEGIN
Write (‘введите числа’);
Readln (a);
S:=0;
n:=0;
REPEAT
S:=S+a;
n:=n+1;
UNTIL a<=0;
n:=n-1;
Writeln (‘сумма чисел:’,S);
94

m:=S/n;
( )
x
xxf
1
1 −+=
[ ]
3;1∈x
)1ln(1
sin
1
+−−=x
x
y
0,31,0 ≤≤ x
72 −= xz
<−
≥++
=
5,0,1
5,0,1
2
yеслиy
yеслиyy
x
1
0 ≤≤ y
05,0=
h
Writeln (‘среднее арифметическое:’,m:6:2);
END.
ПРИМЕР 2. Вычислить значение функции
меняет значения на интевале
П Р О Г Р А М М А
Program step;
const a=’--------------------‘
var f,x,h : real;
begin
x:=1; h:=0.2;
writeln(a);
writeln(‘x’:8, ‘h’:8, ‘f’);
writeln(a);
repeat
f:=sqrt(x+1) – 1/x;
writeln(x:0:2, ‘’:4, h:0:1,’’:4, f:0:2);
, если х
с шагом h=0.2.
x:=x+h;
until x>3;
writeln(a);
end.
Упражнения:
1. Составить программу вычисления количества положитель-
ных и отрицательных значений функции
нении аргумента x в интервале
с шагом h=0,1.
2. Написать программу вычисления функции
которой
с шагом
.
. Значение y изменяется в интервале
при изме-
, для
95

3. Написать программу вычисления пары функций z и y:
>
≤<+
≤
=
12,ln
121,2
1,
2
xеслиx
xеслиx
xеслиx
z
>
≤<
≤
=
12,lg
121,
1,5,0
xеслиx
xеслиx
xеслиx
y
232 ≤≤− x
1=h
75
,0
ln
+−
= x
x
y
52,0 ≤≤ x
25,0=h
≤<
≤<+
≤≤
=
−
25,1,sin
5,11,
10,
)(
xеслиxe
xеслиex
xеслиx
xf
x
x
x
xxy
1
5
2
−+=
1
3
−≤
≤−
x
≤≤
<≤
+
+
<≤+
=
−
43,
31,
2
1ln
10,1sin
)(
чеслиe
xесли
x
x
xеслиx
xf
x
xxy 5,07,1 −+=
xx
z cossin=
)3ln( xy +=
b
ce
am2
=
в интервале
,
с шагом
.
. Значение x изменяется
4. Составить программу вычисления и печати среднего
арифметического положительных и среднего арифметического
отрицательных значений функции
няется в интервале
с шагом
.
. Аргумент x изме-
5. Рассчитать и выдать на печать таблицу значений функции
. Шаг аргумента 0,1.
6. Найти минимальную ординату функции
интервале
, с шагом 0,1 и зафиксировать ее абсциссу.
в
7. Составить программу вычисления сумму функции
. Шаг аргумента 0,1.
8. Составить программу вычисления функций
и
при изменении аргумента x в интервале [1,5…2,5] с шагом
0,1. Найти сумму тех значений z, которые удовлетворяют условию
z<1, и сумму значений y, которые удовлетворяют условию 1<y<3.
9. Вычислить сумму значений функции
, если
известно, что аргумент x в интервале [0..1] изменяется с шагом 0,1, а
в интервале [1..2] с шагом 0,2.
10. Для 6 произвольных пар чисел (a, b) подсчитать и напечатать
, где с наибольшее по абсолютной величине из чисел a и b.
ЛАБОРАТОРНАЯ РАБОТА 6
Цель работы:
1. Усвоить правила работы с переменными типа массив языка
программирования Паскаль.
96

2. Научиться составлять алгоритмы и программы для обработки
одномерных массивов.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Под массивом понимается упорядоченная совокупность
конечного числа данных одного типа, об"единенных под общим
именем. Имена массивов образуются так же, как и имена простых
переменных. Одномерный массив называется вектором. Для описания массивов используется служебное слово array. Массив в ТурбоПаскале можно описывать двумя способами:
а) в разделе описания переменных VAR:
var
<имя переменной>: array [тип индекса] of <тип
компоненты>;
б) определить сначала тип, а затем описать массив этим типом
type
<имя типа>: array [тип индекса] of <тип компоненты>;
var
<имя переменной>: <имя типа>;
где <тип индекса> - порядковый тип;
<тип компоненты> - любой тип.
ПРИМЕР 1: В векторе найти номера и значения первого
минимального и последнего максимального элементов.
П Р О Г Р А М М А
program min_and_max;
const n1=100;
var a: array [1 .. n1] of real;
n,i,nmin, nmax: integer;
amin, amax: real;
begin
writeln ('n=');
readln (n);
writeln ('Вводите элементы вектора');
for i:=1 to n do
readln (a[i]);
amin:=a[1]; nmin:=1;
amax:=a[1]; nmax:=1;
97

for i:=1 to n do
begin
if a[i] < amin then
begin
amin:=a[i]; nmin:=i
end;
if a[i] >= amax then
begin
amax:=a[i]; nmax:=i
end
end;
writeln ('min=', amin:8:3,',nmin=', nmin:3);
writeln ('max=', amax:8:3,',nmax=', nmax:3);
end.
ПРИМЕР 2: Создать массив из N случайных целых чисел,
равномерно распределенных в диапазоне от 0 до 100. Вычислить
среднее арифметическое этих чисел.
П Р О Г Р А М М А
program SRED;
const
nmax=1000;
type
x=array [1 .. nmax] of integer;
var
m:x;
i,n:integer;
s:real;
begin
writeln ('n='); readln(n);
{создание массива}
for i:=1 to n do
begin
m[i]:=random (101);
writeln (m[i])
end;
s:=0;
98

for i:=1 to n do
),...,,(
5021
bbbB
),...,,(
4021
xxxX
),...,,(
2421
aaaA
2423222187654321
... aaaaaaaaaaaas +++=
),...,,(
5021
aaaA
),...,,(
24
21
xxxX
),...,,(
2421
yyyY
n
aa
,...,
1
n
aa
,...,
1
n
aa
,...,
1
n
aa
,...,
1
n
aa
,...,
1
s:=s+m[i];
s:=s/n;
writeln ('s='s)
end.
Упражнение:
1. В массиве
вычислить сумму отрицательных,
произведение положительных и количество нулевых элементов.
2. Ввести массив
. Подсчитать количество всех
чисел, расположенных в промежутке [-1,1] и сумму всех остальных.
3. Дан массив
. Вычислить сумму
.
4. Дан массив
. Найти произведение всех элементов,
значения которых меньше 50, и сложить его с произведением
элементов больших 100.
5. Даны два массива
и
. На место
массива X записать массив Y, а на место массива Y – массив X.
6. Написать программу, которая проверяет, представляют ли
элементы введенного с клавиатуры массива неубывающую
последовательность.
7. Написать программу, которая определяет количество сту-
дентов в группе, чей рост превышает средний.
8. Даны целые числа
. Если в данной последователь-
ности ни одно четное число не расположено после нечетного, то
получить все отрицательные члены последовательности, иначе – все
положительные.
9. Даны действительные числа
последовательность
, если она упорядочена по не убыванию
. Оставить без изменения
или не возрастанию; в противном случае удалить из последова-
тельности те члены, порядковые номера которых кратны четырем,
сохранив прежним порядок остальных членов.
10. Даны действительные числа
среди чисел
совпадающие, и если есть, то определить их
. Выяснить, имеются ли
количество и порядковые номера.
99

ЛАБОРАТОРНАЯ РАБОТА 7
РАБОТА С МАТРИЦАМИ
Цель работы: Научиться составлять алгоритмы и программы
для обработки двумерных массивов.
КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
Двумерный массив состоит из элементов с двумя индексами:
один показывает номер столбца в массиве, другой - номер строки.
В Турбо-Паскале возможны массивы и большей размерности.
Для их описания возможны два подхода:
а) массив рассматривается как массив других массивов:
type
x=array[1..100] of real;
y=array[1..2] of x;
или
type y=array[1..100,1..2] of real;
б) массив рассматривается как многоиндексный
type y=array [ 1...100, 1...2 ] of real;
Оба описания равноценны.
ПРИМЕР 1: Получить матрицу, элементами которой являются
произведения номеров строк i и номеров столбцов j.
П Р О Г Р А М М А
program umnog;
type mat=array[1..9,1..9] of integer;
var i,j:integer;
p:mat;
begin
for i:=1 to 9 do
begin
for j:=1 to 9 do
begin
p[i,j]:=i*j;
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
