- •Алгоритмы, структуры данных и программирование
- •Қасымқанұлы Бөрібай, к.Ф.-м. Н., доцент кафедры высшей математики Костанайского государственного педагогического института
- •Работа №1
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •1 Способ:
- •2 Способ:
- •3 Задачи
- •Работа №2
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •4 Тесты
- •3 Задачи
- •4 Тесты
- •Работа №3
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Примеры решения задач
- •3 Задачи
- •4 Тесты
- •Работа №4
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №5
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №6
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №7
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы.
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №8
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Тесты
- •Работа №9
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №10
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №11
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №12
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №13
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №14
- •1. Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2. Пример решения задачи
- •3. Задачи
- •4. Тесты
- •Работа №15
- •1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
- •2 Пример решения задачи
- •3 Задачи
- •4 Контрольные вопросы
- •Ответы к тестовым заданиям
3 Задачи
При решении задач необходимо предусмотреть вывод соответствующего сообщения, если задача не имеет решения, при указанных пользователем параметрах.
4 Тесты
Истина или ложь?
Каждое из представленных ниже утверждений либо верно, либо нет.
Тело цикла с предусловием в Turbo Pascal выполняется до тех пор, пока условие истинно.
По завершении работы оператора цикла с параметром значение считается неопределенным.
В теле цикла с параметром разрешается явно изменять значение параметра цикла.
Тело цикла с постусловием в Turbo Pascal выполняется до тех пор, пока условие истинно.
В операторе цикла repeat условие проверяется до выполнения тела цикла.
В Turbo Pascal не допускается использование вложенных циклов.
Параметр цикла for, а также начальное и конечное значения могут принадлежать любому порядковому типу.
Тело цикла с постусловием следует обязательно заключать в операторные скобки.
Параметр цикла for может изменяться только на единицу.
Если условие истинно, то тело цикла с предусловием не будет выполнено ни разу.
Работа №3
Тема: Задачи целочисленной арифметики
Цель: Научиться составлять алгоритмы задач обработки числовых данных используя условные и циклические операторы
1 Перечень знаний и умений, необходимых для выполнения лабораторной работы
Перед тем, как приступить к выполнению лабораторной работы, студенту необходимо ознакомиться со следующим материалом:
способы объявления стандартных типов данных;
назначение и синтаксис операторов условного и безусловного перехода;
назначение и синтаксис операторов цикла с предусловием;
назначение и синтаксис операторов цикла с постусловием;
назначение и синтаксис операций div, mod;
назначение и синтаксис логических операторов.
2 Примеры решения задач
Существует широкий круг задач, которые оперируют натуральными числами. Подавляющее большинство получаемых значений в таких задачах также являются натуральными числами. Представить такие значения можно с помощью переменных типа integer. Для успешного решения подобных задач необходимо хорошо знать операции, выполняемые над данным типом, а также функции, работающие с такими значениями.
Чаще всего используются арифметические операции + , - , * , div , mod .
Операция div для целых операндов выполняет целочисленное деление, т.е. 5div2=2, 4div3=1, 8div4=2.
Операция mod дает целочисленный остаток от деления: 5mod2=1, 4mod3=1, 8mod3=2,8mod4=0.
Часто в задачах подобного вида необходимо осуществить возведение в степень. Обратите внимание, что в Паскале отсутствует операция возведения в степень. При целочисленном значении показателя степени она может быть заменена умножением, в случае же вещественного показателя для вычисления степени числа используется следующее соотношение: x^y= exp(y*ln(x))
exp(y*ln(x)) - возведение x в степень y
exp(x*ln(10)) - возведение 10 в степень x
Наиболее типичными приемами в ходе решения задач являются:
определение порядка натурального числа;
выделение некоторой цифры числа;
формирование из цифр исходного числа нового числа.
1 пример. Определить порядок и сумму цифр заданного натурального числа.
Порядок числа - это количество цифр в числе, а значит, значение целое. Сумма цифр, очевидно, тоже будет принадлежать к целому типу.
Для решения задачи придется перебрать все цифры числа. Удобнее начать перебор с последней цифры, так как она выделяется как остаток от деления числа на 10.
Рассмотрим число 1234.
1234 mod 10= 4 - первая цифра есть.
Чтобы получить вторую цифру, очевидно цифру 4 надо как-то откинуть. Используем целочисленное деление числа на 10, понижая разрядность числа:
1234 div 10=123
Выделяем следующую цифру:
123 mod 10=3, откидываем 3: 123 div 10=12
Аналогично поступаем далее:
12 mod 10=2 12 div 10=1
1 mod 10=1 1 div 10=0
В результате мы свели число к 0, то есть все цифры числа перебрали.
Таким образом, предложенные действия выполняются до тех пор, пока число не будет сведено к нулю, попутно наращивая каждый раз значение порядка на 1, а сумму - на значение вновь найденной цифры.
Действия реализуются через конструкцию цикла while. Предварительно зададим исходные значения порядка и суммы, равными 0.
var n:integer; {исходное числo}
p,s:integer; {результат - порядок числа и сумма цифр}
p:=0; s:=0;
write(‘введите n=’);
readln(n);
while n>0 do
begin
s:=s+n mod 10;
n:=n div 10;
p:=p+1
end;
writeln(‘порядок числа p =’,p);
writeln(‘сумма цифр s=’,s);
end.
2 пример. Дано натуральное число n. Получить новое число пeреставлением цифр исходного числа в обратном порядке.
Как и в предыдущей задаче, нам необходимо перебрать все цифры исходного числа.
Например,
задано число n=1234, представим его так:
1234 = 1*103 + 2*102 + 3*101 + 4*100
обратное к нему число - это сумма следующего вида:
4321 = 4*103 + 3*103 + 2*101 + 1*100
Представим итоговое число так:
4321= ((((4)*10+3)*10+2)*10+1)
Тогда,
выделяя цифру, сразу помещаем ее в разряд единиц результирующего числа;
повышаем разрядность этого числа, умножая его на 10;
затем повторяем те же действия, пока все цифры не будут выбраны.
-
Исходное число
Цифра числа
обратное число
1234
1234 mod 10=4
s=4
123
123 mod 10=3
s=s*10+3=
4*10+3=43
12
12 mod 10=2
s=s*10+2=
43*10+2=432
1
1 mod 10=1
s=s*10+1=
432*10+1=4321
Программа будет следующей:
var n:integer; { исходное число}
s:integer; {обратное число}
begin
s:=0;
writeln(‘введите n’);
readln(n);
while n>0 do
begin
s:=s*10+n mod 10;
n:=n div 10
end;
writeln(‘обратное число =’,s);
end.
3 пример. Дано натуральное число n. Верно ли, что это простое число.
В качестве ответа ожидается словесное сообщение. Чтобы программа выдала правильный ответ, необходимо определить переменную, которая одним своим значением указывала бы на истинность утверждения, а другим - на ложь. Для этих целей введем некоторую переменную-признак типа Boolean. Ее значение будет равно: False – ложь, True - истина.
Решим задачу, исходя из определения простого числа. Простым называется натуральное число от 2 и более, которое делится на 1 и на само себя, не делясь при этом ни на какое другое число без остатка.
Следовательно, если мы будем делить число n на все числа из диапазона от 1 до n, то без остатка оно разделится ровно два раза. Однако при этом необходимо ввести дополнительную переменную, которая бы подсчитывала количество таких раз.
Сократим диапазон с 1 по n до диапазона с 2 по n-1. В этом диапазоне мы не должны встретить числа, которое бы делило n без остатка. Если же это произошло, то число не простое и переменная-признак примет значение false.
var n: integer; {исходное число}
pr:boolean; {переменная признак: false - число не простое, true - простое}
i:integer;
begin
writeln(‘введите n ‘);
readln(n);
for i:=2 to n do
if n mod i=0 then pr:=false;
if pr=true then
writeln(n,’ число – простое’)
else
writeln(n,’ число - не простое’);
end.
Следует сделать оговорку для примеров 1 и 2. В них введенное исходное число n в ходе решения задачи фактически теряется, в обоих случаях обращаясь в 0. Если исходное значение числа необходимо использовать в дальнейшем, позаботьтесь об этом до его «порчи», продублировав это значение в некоторой дополнительной переменной.
