Паскаль

реклама
2.3 Команда присваивания
Одной из основных команд в алгоритмах является команда присваивания. Записывается она
так:
<переменная>:=<выражение>
Знак « := » читается «присвоить».
Пример: у := А читается: «переменной у присвоить значение величины А».
Задания:
1. А:=1
В:=2
А:=А+В
В:=2*А
3. А:=1
В:=2
А:=А+В
В:=А-В
А:=А-В
2. А:=1
В:=2
С:=А
В:=С
4. Поменять местами значения переменных х и у
5. Вычислить значение у при заданном значении х:
sin2x
при х>0,
1-2sin x2
в противном случае
y=
6. Определить максимальное и минимальное значения для двух различных вещественных
чисел.
7. Определить максимальное и минимальное значения для трёх различных вещественных
чисел.
8. Даны объёмы и массы двух тел из разных материалов. Материал какого из тел, имеет
большую плотность?
9. Проверить, принадлежит ли число, введенное с клавиатуры, интервалу (-5;3).
10. Составить алгоритм для вычисления значения функции f(x):
kx, если k<x,
f(х)=
k+x, если k≥x,
x2,
если sinx <0,
где k=
| x| , если sinx ≥0.
11.
12.
у(х)=
Известен рост трёх человек. Определить, одинаков ли их рост.
Составить алгоритм для вычисления значения функции у (х):
-1,
х,
1,
если х<-1,
если х<1,
если х=1.
13. Даны три действительные числа. Возвести в квадрат те из них, значения которых
неотрицательны, и в четвёртую степень – отрицательные.
14. Даны целые числа m, n. Если числа не равны, то заменить каждый из них одним и
тем же числом, равным большему из исходных, а если равны, то заменить числа нулями.
15. Подсчитать количество отрицательных чисел среди чисел a, b, c.
16. Даны две точки А(х1, у1) и В(х2, у2). Составить алгоритм, определяющий, которая из
точек находится ближе к началу координат.
17. В небоскребе N этажей и всего один подъезд; на каждом этаже по три квартиры;
лифт может останавливаться на нечетных этажах. Человек садится в лифт и набирает номер
нужной ему квартиры М. На какой этаж должен доставить лифт пассажира?
2.4 Базовая структура ЦИКЛ
Структура ЦИКЛ обеспечивает многократное выполнение некоторой
совокупности действий, которая называется телом цикла.
2.4.1 Цикл типа ПОКА
- предписывает выполнять тело цикла до тех пор, пока выполняется
условие.
нет
условие
Выход
Да
Тело цикла
2.4.2 Цикл типа ДО
- предписывает выполнять тело цикла до тех пор, пока не выполнится
условие.
Тело цикла
Да
условие
Выход
Нет
2
2.4.3 Цикл типа ДЛЯ
- предписывает выполнять тело цикла для всех
переменной (параметра цикла) в заданном диапазоне.
Используется, если заранее известно число повторений.
значений
некоторой
Для I от А до В
Тело цикла
Выход
Задания:
1. По заданному словесному алгоритму построить блок-схему алгоритма и выяснить, какие
значения примут переменные после выполнения фрагмента алгоритма:
1.1 i:=1; s:=0
нц пока i<=5
s:=s+2
i:=i+1
кц
1.2 m:=1
i:=1
нц пока i<5
i:=i+1
кц
m:=m+i
вывод i,m
1.3 k:=0; s:=5
нц пока k<=3
s:=s-1
если s=2 то k:=k-1, иначе k:=k+1
кц
вывод s,k
1.4 s:=0; n:=4
нц пока n<=2
s:=s+n
s:=s*10
n:=n-1
кц
вывод s,n
1.5 m := 0; I :=1
нц пока I<6
m := m + I
I := I + 1
3
кц
вывод m
1.6 a := 1; b := 1
если а + 1=b, то а := -1
иначе b:= -1
нц пока b≤0
a :=a + 3
b := b +1
Выход
если a>b, то а:= a +b
иначе a:= b
кц
вывод a,b
1.7 x:=1; y:=2
Если y>0, то x:=x+1, иначе x:=x-1
нц пока y>0
y:=y-1
x:=y
кц
вывод x,y
1.8 y:=0
нц для k от 2 до 6
y:=y+k
кц
вывод k,y
1.9 y:=1
нц для k от 1 до 3
y:=y+k
кц
y:=y*10
вывод k,y
1.10 s:=0
нц для i от 1 до 4
s:=s*10
s:=s+i
кц
вывод s,i
2. Написать алгоритм вычисления значений функции
а) У= 2х / (х+1) для всех х из интервала [-2;2] с шагом равным 1.
б) k= 1/ 1  m + 4m для всех m из интервала [-5;5] с шагом равным 1.
в) z = (5,6 + b) / b  2 + 1/ b2 для всех b из интервала [-4;4] с шагом равным 1.
г)
х,
если
|х| < 1
y=
x2+1,
если |х| ≥ 1
для всех х из интервала [-3;3] с шагом равным 1.
4
3. Программирование на языке Паскаль
Язык программирования Паскаль был разработан Н. Виртом в 1968 -1970 годах. Турбо
Паскаль появился на рынке программных продуктов в 1984 году. Турбо Паскаль состоит
из языка программирования и среды, которая обеспечивает удобную и производительную
работу.
3.1 Структура программы на Паскале
Program <Имя программы>;
Label <раздел описания меток>;
Const <раздел описания констант>;
Type < раздел описания типов>;
Var < раздел описания переменных>;
Procedure (Function)< раздел описания подпрограмм>;
Begin
<раздел операторов>
End.
Пример: Написать программу, по которой вычисляется произведение двух целых чисел.
Program Ex1;
Var a,b,rez:integer;
Begin
Writeln(‘Введите числа’);
Readln(a,b);
rez:=a*b;
Writeln(‘Их произведение равно’,rez);
Readln;
End.
Ввод данных с клавиатуры производится путем обращения к стандартной процедуре:
Readln(x1,x2,…,xn);
Значения х1,х2,…,хn набираются через пробел на клавиатуре и высвечиваются на экране,
затем нажимаем Enter.
Вывод данных на экран производится путем обращения к стандартной процедуре:
Writeln (x1,x2,…,xn);
Примеры:
Значения
переменной I
Оператор вывода данных
134
5671
287
134
1
312
81
Writeln(I);
Writeln(I);
Writeln(I,I,I);
Writeln(I:6);
Writeln(I:10);
Writeln(I+I:7);
Writeln(‘Значение I равно_’,I);
Результат на экране
134
5671
287287287
- - - 134
---------1
- - - - 624
Значение I равно_81
Символом “-“ обозначены пробелы.
Стандартные математические функции Паскаля представлены в следующей таблице:
5
(Для типов величин использованы обозначения: I – целый, R – вещественный)
Обращение
abs (x)
arctan (x)
cos (x)
exp (x)
frac (x)
int (x)
ln (x)
Тип
аргумента
I,R
I,R
I,R
I,R
I,R
I,R
I,R
random
Тип
рез-та
I,R
R
R
R
R
R
R
R
random (x)
I
I
round (x)
R
I
sin (x)
sqr (x)
sqrt (x)
I,R
I,R
I,R
R
R
I,R
trunk (x)
R
R
Функция
Модуль аргумента
Арктангенс(радианы)
Косинус(х в радианах)
ех – экспонента
Дробная часть х
Целая часть х
Натуральный логарифм
Псевдослучайное число в
интервале [0,1]
Псевдослучайное число в
интервале [0,х]
Округление до
ближайшего целого
Синус(х – в радианах)
Квадрат х
Корень квадратный
Ближайшее целое, не
превышающее х по
модулю
Задания:
1. Написать программу вычисления суммы четырех целых чисел.
2. Написать программу для вычисления значения выражения:
(a+3(d-12))(c-5k). Значения a, c, d, k – вводятся с клавиатуры.
3. Выведите на экран в одной строке свою фамилию, имя и отчество, в следующей – дату
рождения.
4. Написать программу вычисления площади прямоугольного треугольника с катетами a и b.
Результат вывести следующим образом: «Для значений катетов 4 и 6 площадь треугольника
равна 12».
5. Написать программу вычисления периметра прямоугольника, ширина и длина вводятся с
клавиатуры.
6. Дано х. Вычислить значение выражения:
у=15х2 + 8х – 9.
7. Записать математические выражения в виде арифметических выражений на Паскале.
( х 3  х 2  13х  5 )  11
х у
а)
б)
( х  1) 2
1  ху
в)
3х 4  12 х 3  4 х  7  13
х2  1
3.2 Целый тип данных
Переменные целого типа описываются посредством идентификатора Integer.
Они могут принимать значения от -32768 до 32767.
Переменные целого типа описываются посредством идентификатора Longint, если
переменные принимают значения от -2 147 483 648 до 2 147 483 647.
При делении целого числа на целое не всегда получается целое число, но используя
операции div и mod – результаты будут целого типа.
div – целая часть от деления;
6
mod – остаток от деления.
Пример: 19 div 4 =4 (остаток=3, отбрасывается)
19 mod 4 =3
-21 div 4 = -5
-21 mod 4= -1
-7 mod (-4)=-3
Задания:
1. Какими будут результаты вычислений?
a) 875 div 100 + (875 mod 100) div 10 + 875 mod 10
b) 391 div 100 + (391 mod 100) div 10 + 391 mod 10
2. Найти сумму цифр заданного трехзначного числа а.
3.3 Логический тип данных
Переменные логического типа описываются посредством идентификатора Boolean.
Они могут принимать только два значения: true(истина) и false(ложь).
Переменные логического типа получают значения в результате выполнения
операций сравнения: <,<=,>,>=,=,≠.
В Паскале имеются 4 логические операции: отрицание –NOT, логическое
умножение – AND, логическое сложение –OR, исключающее «или» - XOR. Результаты
логических операций для различных значений операндов приведены в таблице.
Использованы обозначения: T – true, F – false.
А
T
В
T
T
F
F
F
not A
F
F
T
A and B
T
F
F
A or B
T
A xor B
F
T
F
T
F
F
T
T
F
T
Приоритеты логических операций:
1) not;
2) and; 3) or;
4) xor.
T
Операции отношений (<, <=, >, >=, =, <>) имеют более низкий приоритет, чем логические
операции, поэтому их следует заключать в скобки при использовании по отношению к
ним логических операций.
Пример. Составить программу, по которой выведется значение true, если точка с
заданными координатами (х,у) лежит внутри кругового кольца с центром в начале
координат, и false – в противном случае. Внутренний радиус кольца – r, внешний радиус –
R.
Program Point;
Var x,y,Z : real; L : Boolean;
Begin
Writeln(‘Введите х: ‘); Readln(x);
Writeln(‘Введите y: ‘); Readln(y);
Z := sqrt(sqr(x) + sqr(y));
L := (Z >= r) and (Z <= R);
Writeln (‘ Точка лежит в заданной области? ‘, L);
Readln;
End.
3.4 Оператор ВЕТВЛЕНИЯ
7
Оператор ветвления (условный оператор) имеет следующий формат:
If <логическое выражение> then <оператор 1> else <оператор 2>;
Если логическое выражение, выступающее в качестве условия ветвления, принимает
значение False, то выполняется оператор 2, если True – оператор 1.
Если в качестве оператора должна выполниться серия операторов, то они
заключаются в операторные скобки Begin – End;
Неполная форма оператора ветвления:
If <логическое выражение> then <оператор >;
Задания:
1. Из двух данных вещественных чисел выбрать наибольшее.
2. Большее из двух данных вещественных чисел возвести в квадрат, а меньшее – в куб.
3. Написать программу, проверяющую, принадлежит ли число, введенное с
клавиатуры, интервалу [0,5].
4. Написать программу решения квадратного уравнения
ах2 + bх + с = 0.
5. Даны целые числа а, b, с. Если а  b  c, то все числа заменить их квадратами, если
а > b > c , то каждое число заменить меньшим из них, в противном случае сменить знак
каждого числа.
6. Дано двузначное число. Определить:
а) является ли сумма его цифр двузначным числом:
б) больше ли числа а сумма его цифр.
7. Дано двузначное число. Определить:
а) кратна ли трем сумма его цифр:
б) кратна ли сумма его цифр числу а.
8. Дано трехзначное число. Выяснить, является ли оно палиндромом («перевертышем»),
т. е. таким числом, десятичная запись которого читается одинаково слева направо и
справа налево.
9. Составить программу, определяющую результат гадания на ромашке – «любит – не
любит», взяв за исходное данное количество лепестков n.
10. Даны четыре точки А1(х1,у1), А2(х2,у2), А3(х3,у3), А4(х4,у4). Определить, будут ли они
вершинами параллелограмма.
11. Для данного х вычислить значение функции:
9,
если х  -3
1
F(x) =
,
если х > -3
х2 1
12. Даны три числа. Написать программу для подсчета количества чисел, равных нулю.
12. Составить программу нахождения произведения двух наибольших из трех
введенных с клавиатуры чисел.
14. Вывести на экран номер четверти, которой принадлежит точка с координатами (х,у),
при условии, что х≠0 и у≠0.
15. Год является високосным, если его номер кратен 4, однако из кратных 100
високосными являются лишь кратные 400 (например, 1700, 1800, и 1900 – невисокосные
года, 2000 – високосный). Дано натуральное число n. Определить, является ли
високосным год с таким номером.
3.5 Оператор ВЫБОРА
Оператор выбора позволяет программировать ветвления по многим направлениям. Этот
оператор организует переход на одну из нескольких ветвей в зависимости от значения
заданного выражения.
Формат оператора выбора:
8
Case K of
А1 : <оператор 1>;
А2 : <оператор 2>;
...
АN : <оператор N>
else <оператор N+1>
end;
Здесь К – выражение-селектор, которое может иметь только простой порядковый тип
(целый, символьный, логический). А1,…,AN – константы тоже же типа, что и селектор,
выполняющие роль меток ветвей. Исполнение оператора начинается с вычисления
выражения К, полученное значение сравнивается с константами (метками) и выполняется
соответствующий оператор. Если ни одна из меток не совпала со значением К, то
выполняется оператор после слова else.
Возможно использование неполного оператора выбора без ветви else. Метки ветвей также
могут быть заданы списком или интервалом.
Пример 3. В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри
цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади,
овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая по номеру года
определяет его название в старояпонском календаре, если известно, что 1996 г. был годом
крысы – началом очередного цикла.
Решение
Поскольку цикл является двенадцатилетним, поставим в соответствии название года
остатку от деления номера этого года на 12. При этом учтем, что остаток от деления 1996
на 12 равен 4.
Program Goroskop;
Var Year : integer;
Write(‘Введите год’) ; readln (Year);
case year mod 12 of
0 : Writeln (‘год Обезьяны’);
1 : Writeln (‘год Петуха’);
2 : Writeln (‘год Собаки’);
3 : Writeln (‘год Свиньи’);
4 : Writeln (‘год Крысы’);
5 : Writeln (‘год Коровы’);
6 : Writeln (‘год Тигра’);
7 : Writeln (‘год Зайца’);
8 : Writeln (‘год Дракона’);
9 : Writeln (‘год Змеи’);
10 : Writeln (‘год Лошади’);
11 : Writeln (‘год Овцы’);
end;
end.
Задания:
1. Написать программу, которая по номеру дня недели (натуральному числу от 1 до 7)
выдает в качестве результата количество уроков в нашем классе в этот день.
2. Написать программу, которая бы по введенному номеру единицы измерения (1 –
дециметр, 2 – километр, 3 –
метр, 4 – миллиметр, 5 - сантиметр) и длине отрезка L выдавала бы соответствующее
значение длины отрезка в метрах.
9
3. Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N= 4k (где k
– соответствующее частное); если остаток от деления на 4 равен 1, N=4k+1; если
остаток от деления на 4 равен 2, N=4k+2; если остаток от деления на 4 равен 3,
N=4k+3.
Например, 12 = 4 х 3, 22 = 4 х 5 + 2
4. Составить программу, позволяющую по последней цифре
данного числа определить последнюю цифру куба этого
числа.
3.6 Программирование циклических алгорит мов
Цикл – многократное повторение последовательности действий по некоторому условию.
Известны три типа циклических алгоритмических структур: цикл с предусловием (цикл –
пока), цикл с постусловием (цикл – до) и цикл с параметром (цикл - для).
3.6.1 Операт ор цикла с предусловием (цикл-Пока)
Формат оператора:
while <логическое выражение> do <тело цикла>
Пока значение логического выражения – true (истина), выполнятся тело цикла. Если тело
цикла состоит из нескольких операторов, то они объединяются операторными скобками
Begin – end;
Задания:
1. Определить значения переменных после выполнения фрагментов программы.
а) S:=0; i:=5;
while i>2 do i:=i-1;
S:=S+i*i;
б) S:=0; i:=1;
while i>=1 do begin s:=s+1/i;
i:=i-1; end;
в) S:=0; i:=0;
while i<5 do i:=i+1;
S:=S+i; Writeln (S);
г) S:=0; i:=0;
while i<3 do begin i:=i+1;
writeln (S+5); end;
2. Написать программу вывода на экран десять раз слова «Ура».
3. Дано натуральное число. Определить:
а) количество цифр в нем;
б) сумму его цифр;
в) сумму квадратов его цифр;
г) сумму его первой и последней цифр.
4. Дано вещественное число а. Найти такое наименьшее n, что 1 + 1/2 + 1/3 + …+ 1/n >a.
5. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он
увеличивал длину пробега на 10% от пробега предыдущего дня. Определить:
а) в какой день он пробежал больше 20 км;
б) в какой день суммарный пробег за все дни превысит 100 км.
10
3.6.2 Операт ор цикла с пост условием (цикл-До)
Формат оператора:
repeat <тело цикла> until <логическое выражение>
Повторение выполнения тела цикла заканчивается, когда логическое выражение
принимает значение true (истина).
Задания:
1. Определить значения переменных после выполнения фрагментов программы.
а) S:=0; i:=2;
Repeat i:=2*i; S:=S+i;
Until i>5;
б) S:=0; i:=1;
Repeat S:=S+1/i; i:=i-1;
Until i<=1;
в) S:=0; i:=5;
Repeat i:=2*i; S:=S+i;
Until i>5;
2. Дано натуральное число.
а) Верно ли, что сумма его цифр больше 10?
б) Верно ли, что количество его цифр есть четное число?
в) Определить, есть ли в нем цифра а.
3. Составить программу планирования закупки товара в магазине на сумму, не
превышающую заданную величину.
4. Вычислить сумму натурального ряда чисел от 1 до N. Составить две программы:
одну с использованием оператора цикла while, другую – с использованием
оператора repeat.
3.6.3 Операт ор цикла с парамет ром
(цикл - Для)
Формат оператора имеет два варианта записи:
1) for I := A to B do <тело цикла>;
2) for I := A downto B do <тело цикла>;
Здесь I – параметр цикла – простая переменная порядкового типа;
А – выражение того же типа, определяющее начальное значение параметра;
В - выражение того же типа, определяющее конечное значение параметра;
Если тело цикла состоит из нескольких операторов, то они объединяются
операторными скобками Begin – end;
Цикл повторяется, пока значение параметра лежит в интервале между А и В.
В первом варианте при каждом повторении цикла значение параметра изменяется на
следующее значение в данном типе (для целого типа - увеличивается на 1). Во втором
варианте при каждом повторении цикла значение параметра изменяется на предыдущее
значение в данном типе (для целого типа - уменьшается на 1).
11
Задания:
1. Определить значения переменных после выполнения фрагментов программы.
а) у := 0; for k := 2 to 6 do y := y + k;
б) у := 1; for k := 6 downto 3 do y := y + k;
в) у := 1; for k := 1 to 3 do y := y + k; у := y*10;
г) S := 0; for i := 1 to 4 do
begin S := S * 10;
S := S + i ;
end;
д) у := 0; for x := 6 downto 2 do
y := y + k; y := y*2;
1. Напечатать ряд из повторяющихся чисел 20 в виде:
20 20 20 20 20 20 20 20 20 20.
2. Составить программу вывода любого числа любое заданное число раз в виде,
аналогичном показанному в предыдущей задаче.
3. Напечатать «столбиком»:
а) все целые числа от 20 до 35;
б) квадраты всех целых чисел от 10 до b (значение b вводится с клавиатуры; b ≥ 10);
в) третьи степени всех целых чисел от а до 50 (значение а вводится с клавиатуры; а ≤
50);
г) все целые числа от a до b (значения а и b вводится с клавиатуры; b ≥ а);
4. Напечатать числа следующим образом:
а) 10 10.4
в) 25 25.5 24.8
11 11.4
26 26.5 25.8
...
...
25 25.4
35 35.5 34.8
б) 21 20.4
г) 16 15.5 16.8
22 21.4
17 16.5 17.8
...
...
35 34.4
24 23.5 24.8
5. Напечатать таблицу соответствия расстояний в дюймах расстояниям в сантиметрах для
значений 10, 11, …, 22 дюйма (1 дюйм = 25,4 мм).
6. Напечатать таблицу перевода 1, 2, …, 20 долларов США в рубли по текущему курсу
(значение курса вводится с клавиатуры).
7. Распечатать в «столбик»
а) таблицу умножения на 7.
б) следующие числа:
4,4; 4,6; 4,8; …; 6,2; 6,4.
9. Распечатать в «столбик» таблицу умножения на число n
(значение n вводится с клавиатуры;
1 ≤ n ≤ 9).
10. Напечатать «столбиком» значения sin2, sin3, …, sin20.
11. Что будет напечатано на экране в результате выполнения фрагмента программы?
а) s:=0;
б) m:=-3;
repeat s:=s+1;
while m<=0 do
i:=s+1;
m:=m+1;
until i>3;
write(‘m=’,sqr(m));
write(s,’- результат’);
12
в) а:=1;
for n:=3 to 5 do
begin a:=a+2; writeln(‘a=’,a); end;
12. Рассчитать значения у для значений х , равных 4, 5, …, 28, если у задается следующей
формулой:
у= 2t2 + 5,5t – 2,
t = x + 2.
13. Написать программу вычисления значений функции:
а) У= 2х / (х+1) для всех х из интервала [-2;2] с шагом равным 1.
б) k= 1/ 1  m + 4m для всех m из интервала [-5;5] с шагом равным 1.
в) z = (5,6 + b) / b  2 + 1/ b2 для всех b из интервала [-4;4] с шагом равным 1.
14. Определить количество трехзначных натуральных чисел, сумма цифр которых равна
заданному числу n.
15. Написать программу поиска двухзначных чисел, обладающих следующим свойством:
если к сумме цифр числа прибавить квадрат этой суммы, то получится снова данное число.
16. Даны натуральные числа n, k (n, k ≤ 9999). Из чисел от n до k выбрать те, запись
которых содержит ровно три одинаковые цифры. Например, числа 6766, 5444, 0006, 0060
содержат ровно три одинаковые цифры.
Сумма конечного ряда
17. Написать программу вычисления суммы натуральных чисел от 1 до N.
18. Найти:
а) сумму квадратов всех целых чисел от а до
50 (значение а вводится с клавиатуры; а ≤ 50);
б) произведение всех целых чисел от а до b
(значения а и b вводится с клавиатуры; b ≥ а).
19.
Даны натуральные числа х и у. Вычислить произведение х*у, используя операцию
сложения. Задачу решить двумя способами.
20. Найти среднее арифметическое квадратов всех целых чисел от 100 до b (значение b
вводится с клавиатуры; b ≥ 100);
21. Дано натуральное число n. Найти сумму
n2 + (n +1)2+…+(2n)2.
22. Найти сумму -12+22-32+42+…+102. Условный оператор не использовать.
23. Найти сумму 22+23-24+…+210. Операцию возведения в степень не использовать.
1 1
1
24. Вычислить сумму 1+   ...  .
2 3
n
2 3 4
10
25. Вычислить сумму    ...  .
3 4 5
11
1 1 1
1
26. Вычислить сумму 1+    ...  , где n! = 1*2*3*…*n (значение n вводится с
1! 2! 3!
n!
клавиатуры; 1<n≤10.)
27. Вычислить значение выражения
((…(202-192)2-182)2-…-12)2.
28. Гражданин 1 марта открыл счёт в банке, вложив 1000 руб. Через каждый месяц размер
вклада увеличивался на 2% от имеющейся суммы. Определить прирост суммы вклада за
первый, второй, третий, …, десятый месяц;
29. Составить программу возведения натурального числа в третью степень, учитывая
следующую закономерность:
13 = 1,
23 = 3+5,
13
33 = 7+9+11,
43 = 13+15+17+19,
53 = 21+23+25+27+29.
30. Вычислить при заданном х сумму
х1 х 2 х 3
хn
1+

  ...  , значение n и х вводятся с клавиатуры (1< n ≤10).
1! 2! 3!
n!
31. Дано натуральное число n , вычислить:
1
1
1

 ... 
а)
;
sin 1 sin 1  sin 2
sin 1  sin 2  ...  sin n
б)
3  6  ...  3(n  1)  3n .
32. Последовательность чисел Фибоначчи образуется так: первый и второй члены
последовательности равны 1, каждый следующий равен сумме двух предыдущих
(1,1,2,3,5,8,13,…). Дано натуральное число n (n≥3).
а) Найти k-й член последовательности Фибоначчи.
б) Для заданного n определить, верно ли, что сумма первых n членов
последовательности Фибоначчи есть четное число?
3.7. Одномерные массивы
Массив – формальное объединение нескольких однотипных объектов,
рассматриваемое как единое целое.
Одномерный (линейный) массив –массив, у которого элементы –
простые переменные. В одномерных массивах хранятся значения линейных
таблиц.
При описании массива необходимо указать общее число входящих в массив
элементов и тип этих элементов.
Примеры описания одномерных массивов:
Var A : array [1..5] of real;
B : array [0..8] of integer;
3.7.1 Типовые алгорит мы обработ ки одномерных
массивов.

Поэлементный ввод массива:
for i:=1 to n do
begin write (‘A[‘,i,’]=’); readln(A[i]); end;

Поэлементный вывод массива (в столбец):
for i:=1 to n do
writeln (‘A[‘,i,’]=’, A[i]);

Формирование массива случайными элементами из диапазона [a,b].
for i:=1 to n do
A[i] := random(a+b) - a;

Поиск минимального элемента:
min:= A[1];
for i:=2 to n do
if A[i] < min then min:= A[i];
14

Перестановка элементов на четных и нечетных местах:
for i:=1 to n div 2 do
begin p:= A[2*i -1];
A[2*i -1]:= A[2*i];
A[2*i]:= p;
end;
 Нахождение суммы значений всех элементов массива:
s:=0;
for i:=1 to n do
s:= s + A[i];
 Сортировка элементов массива в порядке возрастания значений:
for i:=1 to n-1 do
begin for j:=1 to n-i do
if A[j] <= A[j+1] then
begin P:= A[j]; A[j]:= A[j+1]; A[j+1]:= P; end;
end;
Задания:
1. Записать в виде программы на языке Паскаль:
Ввести в память массив и вывести его на экран: S(N), N=3.
2. Дан массив В(N), N=7. Найти сумму значений элементов, стоящих в массиве на четных
местах.
3. Дан массив D(N), N=10. Найти сумму значений элементов массива, которые
удовлетворяют условию -10< D[i] < 20. Замените элементы массива, значения которых
являются отрицательными числами, числом 100. Полученные результаты выведите на экран.
4. Дан массив F(N), N=10. Найти сумму таких элементов массива, значения которых не
равны 33. Подсчитайте, сколько раз в массиве встречаются элементы, значения которых
равны 33.
5. Дан массив R(N), N=8. Значения элементов данного массива увеличьте в два раза и
поместите их в новый массив S(N). Подсчитайте, сколько раз в массиве R
встречаются элементы, значения которых являются отрицательными числами. Полученные
результаты выведите на экран.
6. Ввести массив А(N), N=7. Определите порядковый номер элемента, значение которого
равно 49. Поменяйте местами элемент, значение которого равно 49, и первый элемент
массива. Полученные результаты выведите на экран.
7. Дан массив R(N), N=10. Подсчитать количество элементов массива, значения которых
кратны 2. Заменить элементы массива, значения которых являются отрицательными числами,
числом 111.
8. Дан массив К(N), N=12. Известно, что в массиве есть один элемент, значение которого
равно 100. Определить его порядковый номер. Вычислить сумму значений элементов
массива, стоящих в массиве перед элементом, значение которого равно 100.
9. Дан массив А(N), N=12. Найти среднее арифметическое значений элементов, стоящих в
массиве на нечетных местах. Значение среднего арифметического округлить до сотых.
Заменить средним арифметическим элементы массива, значения которых кратны 3.
10. Дан массив С(N), N=10. Поменять местами наибольший и наименьший элементы.
11. В одномерном массиве все отрицательные элементы переместить в начало массива, а
остальные – в конец с сохранением порядка следования. Дополнительный массив заводить не
разрешается.
12. Задан массив, содержащий несколько нулевых элементов. Сжать его, выбросив эти
элементы.
13. В массиве хранится информация о годе рождения каждого из 30 человек. Определить
года рождения двух самых старших по возрасту людей (при определении возраста месяц и
дату рождения не учитывать).
14. В массиве имеются только два одинаковых элемента. Найти их.
15
3.8. Двумерные массивы.
Двумерный массив – структура данных, хранящая прямоугольную матрицу –
таблицу из нескольких строк с равным числом элементов в каждой.. Двумерный массив
определяется именем, числом строк и столбцов и обозначается: А(N,M), где А – имя
массива; N – число строк, M – число столбцов. Если M= N, то матрица называется
квадратной. В матрице каждый элемент определяется номером строки и номером столбца,
на пересечении которых он расположен, и в соответствии с этим обозначается именем
массива с двумя индексами: первый – номер строки, второй – номер столбца. Пример:
К[4,3], Z[3,2], R[5,5].
Если обозначить: i – номер строки, j – номер столбца, то элемент матрицы
обозначается A[i,j].
Если матрица квадратная:
 Для элементов, принадлежащих главной диагонали i=j.
 Для элементов, принадлежащих вспомогательной диагонали i+j=n+1, где n –
размерность квадратной матрицы.
 Для элементов, лежащих выше главной диагонали I < j.
 Для элементов, лежащих ниже главной диагонали I > j.
Пример описания двумерного массива А(2,3):
6 4 -3
2 -5 6
Var A: array[1..2, 1..3] of integer;
3.8.1 Типовые алгорит мы обработ ки двумерных массивов.



Поэлементный ввод массива:
for i:=1 to N do
begin for j:=1 to M do
readln (A[i,j]);
end;
Вывод массива в виде таблицы:
for i:=1 to N do
begin for j:=1 to M do
write (A[i,j]:3,’ ‘);
writeln;
end;
Нахождение суммы значений элементов массива:
S:=0;
for i:=1 to N do
begin for j:=1 to M do
S:= S + A[i,j];
end;
Задания:
1. Дан двумерный массив. Поменять местами:
а) элементы, расположенные в верхнем правом и
нижнем левом углах;
б) элементы, расположенные в нижнем правом и
верхнем левом углах;
2. Составить программу:
а) расчета суммы двух любых элементов
16
двумерного массива;
б) расчета суммы всех элементов двумерного
массива;
в) расчета суммы отрицательных элементов двумерного
массива;
г) расчета среднего арифметического всех элементов
двумерного массива;
д) расчета количества четных значений элементов массива.
3. Дан двумерный массив. Поменяйте знаки значений элементов матрицы на
противоположные. Выведите на экран новую матрицу в виде таблицы.
4. Дан двумерный массив К(3,3). Найдите сумму значений её элементов, стоящих на
главной диагонали матрицы.
Матрицу выведите на экран в виде таблицы.
5. Дан двумерный массив R(4,3). Увеличьте значение каждого элемента в 5 раз, а затем
найдите сумму значений элементов первой строки. Выведите на экран новую матрицу в
виде таблицы.
6. Дан двумерный массив D(4,3). Найдите во втором столбце количество элементов,
значения которых кратны 3.
7. Дан двумерный массив А(3,3). Поменяйте местами второй и третий столбцы.
8. Дан двумерный массив В(3,3).
а) найдите максимальный элемент матрицы;
б) поменяйте местами первый и максимальный элементы матрицы.
9. Координаты точек на плоскости заданы в виде двумерного массива С(4,2), где первая
строка – координата Х, вторая – Y. Определите, какая из точек расположена ближе к
началу координат.
10. В поезде 18 вагонов, в каждом из которых 36 мест. Информация о проданных на поезд
билетах хранится в двумерном массиве, номера строк которых соответствуют номерам
вагонов, а номера столбцов – номерам мест. Если билет на то или иное место продан, то
соответствующий элемент массива имеет значение 1, а противном случае – 0. составить
программу, определяющую, имеются ли свободные места в том или ином вагоне.
11. Расположить столбцы матрицы D(N,M) в порядке возрастания элементов k-ой строки (1
≤ k ≤ N).
3.9. Процедуры и функции.
Нередко в программах встречаются повторяющиеся или похожие фрагменты. Имеется
возможность оформлять такие фрагменты специальным образом – выделять их в
подпрограммы. Подпрограмме дается имя, по которому можно обращаться к ней (вызывать
подпрограмму). Использование подпрограмм не только улучшает структуру и внешний вид
программы, но и уменьшает вероятность ошибок и облегчает отладку.
В Паскале имеется два вида подпрограмм – процедуры и функции.
3.9.1 Описание процедуры. Операт ор процедуры.
Общий вид описания процедуры (в квадратные скобки заключена часть, которая может
отсутствовать):
Procedure Имя [(Список формальных параметров)];
Описательная часть
Begin
Тело процедуры
End;
17
При вызове процедуры ее формальные параметры заменяются соответствующими
фактическими. Количество и типы формальных и фактических параметров должны в
точности совпадать.
Пример
Составить программу для вычисления аn; целые числа а и n вводятся с клавиатуры.
Program Example-1;
Var a,n : integer;
s : longint;
Procedure Degree (x,y : integer; Var st : longint);
Var i : integer;
Begin
st:=1;
for i:=1 to y do st:= st*x;
End;
Begin
writeln(‘Введите два числа – основание и показатель
степени’);
readln(a,n);
Degree(a,n,s); {Обращение к процедуре}
writeln(‘Результат’,s);
readln;
End.
Задания:
1. Используя процедуру для вычисления степени числа, найти значение выражения:
у = а4х4 + а3х3 + а2х2 + а1х + а0.
Коэффициенты а4, а3, а2, а1, а0 и х вводятся с клавиатуры.
2. Даны координаты трех вершин треугольника. Найти длины всех его сторон.
3. Составить программу, в результате которой величина А меняется значением с
величиной В, а величина С – с величиной D.
4. Даны два натуральных числа. Определить, является ли одно число перевертышем
другого?
5. Написать рекурсивную функцию для вычисления факториала натурального числа n.
3.9.2 Функции
Общий вид описания функции:
Function Имя [(Список формальных параметров)]: Тип результата;
Описательная часть
Begin
Тело функции, в котором обязательно должно быть присваивание
Имя функции := значение
End;
18
Пример
Написать программу вычисления значения С:
n!
С=
k!(n  k )!
Program Exampl-2;
Var n,k: integer;
a1, a2, a3, c: longint;
Function factorial(n:integer): longint;
Var i: integer;
rez: longint;
Begin
rez :=1;
for i := 1 to n do rez :=rez * i;
factorial := rez;
End;
Begin
writeln(‘Ввод n и k’);
readln(n,k);
a1 := factorial(n); {вычисление n!}
a2 := factorial(k); {вычисление k!}
a3 := factorial(n-k); {вычисление (n-k)!}
c := a1 div (a2 * a3); {результат}
writeln(c);
readln;
End.
Задания:
1. Сформировать массив Х(N), N-й член которого определяется формулой Х(N)=
1
.
N!
2. Найти сумму цифр числа.
3.10 Алгорит мы обработ ки символьной информации
Символьная информация – это информация, отображаемая с помощью символов
(букв, цифр, знаков операций и др.).
Символьная информация в алгоритмах и программах описывается данными двух типов:
символьным и литерным. Они отличаются друг от друга тем, что значением символьной
переменной является один символ, а литерной – строка символов.
Данные символьного типа описываются с помощью идентификатора Char.
Данные литерного типа (строковые данные) описываются с помощью идентификатора String.
Для данных символьного и литерного типов применимы операции сцепки (соединения,
конкатенации) и сравнения (<, >, ≤, ≥, =, ≠). Операция сравнения осуществляется следующим
образом: из двух символов меньше тот, который встречается в таблице ASCII раньше.
Значения символьных переменных задаются в апострофах.
Функции и команды обработки строк:
Процедуры
 Delete(Var S: string; N,M: integer)
Удаляет М символов из строки S, начиная с позиции N.
 Insert(SubS: String; Var S:String; N:Intger)
Вставляет подстроку SubS в строку S, начиная с позиции N.
19


Str(X:Integer; Var S:String)
Возвращает представление числа X в его символьной форме S.
Val(S:String; Var X, Code: Integer)
Возвращает представление символов строки S в ее числовой форме X. Параметр Code
содержит признак ошибки преобразования (если Code = 0, то ошибки нет).
Функции
 Chr(X:Byte):Char
Возвращает символ с заданным порядковым номером X.
 Concat(S1[, S2, …, SN]):String
Выполняет сцепку (конкатенацию) последовательности строк.
 Copy(S:String; N, M:Integer):String
Возвращает подстроку из строки S, начиная с позиции N и длиной M символов.
 Length(S:Sring):Byte
Возвращает количество символов в строке S.
 Ord(X:char):LongInt
Возвращает порядковый номер символа X в таблице кодов символов.
Pos(SubS, S: Sring):Byte
Возвращает номер позиции, начиная с которой в строке S располагается подстрока SubS (если
значение функции равно нулю, то S не содержит SubS).
Задания:
1. Дано название города. Определить, четно или нет количество символов в нем.
2. Написать программу вывода последовательности символов
АABABCABCD…..AB…YZ.
3. Написать программу вывода последовательности символов ZYYXXX…A…AA.
4. Написать программу определения количества слов в заданном тексте. Слова разделены
одним пробелом.
5. Определить, сколько раз встречается заданный символ в некотором фрагменте текста.
6. Подсчитать количество запятых в заданном тексте.
7. Что напечатает компьютер после выполнения программы?
Program Primer;
Var a,b,c,d: string;
Begin
a := ‘лекарство’;
Delete(a,3,5);
Writeln(a);
Delete(a,3,1);
b := ‘т’;
Insert(b,a,3);
Writeln(a);
c:= ‘кот’;
d := ‘мпо’;
Insert(d,c,3);
Writeln(c);
End.
8. Заменить всюду в заданном тексте одного заданного слова на другое заданное слово
такой же длины.
9. Дано предложение, в котором имеется несколько букв «е». Найти порядковый номер
первой из них.
10. Является ли заданное слово «перевертышем». Слово называется «перевертышем», если
совпадает с собой после переворачивания.
20
Список лит ерат уры
1. Информатика. Л.З. Шауцукова
2. Практикум по Турбо Паскалю. И.А. Бабушкина, Н.А. Бушмелева, С.М. Окулов, С.Ю.
Черных.
3. Задачник – практикум. И.Г. Семакин, Е.К. Хеннер.
4. Я иду на урок информатики. Д.М. Златопольский.
5. Контрольные работы по информатике. Е.А. Пономарева.
21
Похожие документы
Скачать