Рекомендации по проведению занятий 10
Вид материала | Контрольные вопросы |
- Методические рекомендации преподавателя по проведению практических занятий по курсу, 73.83kb.
- Рекомендации по проведению мониторинга образовательных достижений учащихся 1 классов, 849.83kb.
- Рекомендации по проведению практических занятий 8 ч Характеристика материалов, 35.02kb.
- В. И. Дихтяр Сетевые технологии в сксит учебно-методический комплекс, 318.51kb.
- Методические рекомендации для учителей с. 25 -28 Приложение, 2745.89kb.
- Методические рекомендации для учителей с. 25 -28 Приложение, 2951.98kb.
- Методические рекомендации по проведению занятий по безопасности дорожного движения, 104.57kb.
- Методические рекомендации по проведению уроков, внеклассных занятий, посвященных 15-летию, 410.71kb.
- Рабочая программа Тематика и планы практических занятий Тематика рефератов График текущего, 181.07kb.
- Методические рекомендации по проведениЮ аудита бухгалтерской (финансовой) отчетности, 449.96kb.
Program Example_l;
Пояснения к программе
Имя этой программы Example_1. Из разделов описаний имеется лишь один - раздел переменных. Он начинается со служебного слова Var, после которого идет последовательность объявления переменных. После описательной части идет раздел операторов, начинающийся со служебного слова Begin, после которого идут операторы языка. Первый встречающийся оператор - это Writeln (' текст'); - записать (вывести) на экран текст, заключенный между апострофами, ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы. Следующий оператор - это Readln (a,b) ; - читать данные с клавиатуры. В данном случае необходимо ввести два целых числа через пробел, тогда переменной а присваивается значение, равное первому введенному числу, а переменной b присваивается значение, равное второму введенному числу. Например, вы ввели числа 12 и 45, тогда а = 12, a b = 45. В конце этого оператора также можно ставить ln.
После этих двух операторов стоит оператор присваивания: rez:=a*b; (:= - это знак присваивания в языке Паскаль). При выполнении этого оператора переменная rez получит значение, равное произведению числа а на число b.
Следующий оператор - это снова оператор writeln('текст',rez) - он выведет на экран текст, заключенный между апострофами, а за ним значение переменной rez. Затем следующий оператор writeln выведет на экран сообщение: "Нажмите
194
выполнения. В конце раздела операторов стоит служебное слово End, после которого стоит точка.
Провести компиляцию программы командой из меню COMPILE. Добиться успешной компиляции, исправляя указанные системой ошибки.
- Запустить программу на выполнение командой из меню RUN. На экране появляется сообщение:
^ Введите два целых числа через пробел.
Наберите на клавиатуре два целых числа через пробел и нажмите
Произведение равно...
Нажмите
Вместо точек будет написано значение переменной rez, то есть число, равное произведению первого введенного числа на второе. А теперь попробуйте выполнить следующие задания:
- а) измените программу для нахождения суммы двух чисел;
- б) измените программу для нахождения суммы четырех чисел;
- в) найдите значение выражения (а + (d - 12)3)(c - 5k), где значения переменных a, d, с и k вводятся с клавиатуры.
Сохраните текст программы в виде файла с помощью команд File/Save as. Например: c:\priml_l.pas; здесь c:\ - это название диска, на котором будем сохранять файл.
Задания для самостоятельной работы
Найдите периметр:
- а) прямоугольника (ширину и длину вводить с клавиатуры);
- б) треугольника (длины всех сторон вводить с клавиатуры);
- в) произвольного четырехугольника.
Вычислите значение выражения:
- а) y= 15x2+ 8x - 9;
- б) а = (b + c)d - k.
Вычислите рациональным способом, то есть за минимальное число операций:
- а) у = x5 (y = (x2)2x, то есть за три операции);
- б) у = x6 (y = (x3)2 = (x2x)2, то есть за три операции);
- в) у = x8 (y = ((x2)2)2, тоже за три операции).
Найдите значение выражения:
- а) у = |x| + x4, при x = -3; x = 3;
- б) а = |x| + 4x3 - 7x2, при x = 2; x = -2;
- в) z = |x - 2| + 3х8, при x = -2; x = 1;
- г) а = 6b2 + |b - 3|3 - 15 , при b = 9; b = -3.
Напишите программу вычисления значения выражения:
- a) y = (3x3 + 18x2)x + 12x2 - 5;
- б) а = (d + с + b)e - 5k - 1;
- в) d =3с3+|с2 - 4с + 7|3 - 5с;
195
- г) с = |x + 4| - |x2 - 3x + 6|.
Поменяйте местами значения переменных x и у:
- а) у с использованием промежуточной переменной (t:=x; x:=y; y:=t;);
- б) без использования промежуточной переменной (x:=x-y; y:=x+y; x:=y-x;).
Упражнение № 2. Целый и логический типы данных. Условный оператор
Разберите несколько примеров на использование целых и логических типов данных, условного оператора.
Пример 2. Вывести на экран большее из двух данных чисел.
- Program Example_2;
- Var x,у: Integer;
- Begin
- Writeln('Введите 2 числа');
- Readln(x,y); {вводим два целых числа через пробел}
- If x>y Then Writeln(x) {если (If)x больше у, то (Then) выводим x}
- Else Writeln(y); {иначе (Else) выводим y}
- Readln;
- End.
Пример 3. Даны целые числа a, b, с. Если a≤b≤c, то все числа заменить их квадратами, если a >b >c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.
Решение.
Условие задачи перепишем следующим образом:
- a = a2, b = b2, с = с2, если a <= b <= с,
- а = с, b = с, если а > b > с,
- а = -a, b = -b, с = -с, в остальных случаях.
- Program Example_3;
- Var a,b,c: Integer;
- Begin
- Writeln('Введите числа a, b, с');
- Readln(a,b,с);
- If (a<=b) And (b<=c) Then
- Begin a:=sqr(a); b:=sqr(b); c:=sqr(c) End
- Else If (a>b) And (b>c) Then Begin a:=c; b:=c End
- Else Begin a:=-a; b:=-b; c:=-c End;
- Writeln (a:3,b:3,c:3);
- Readln;
- End.
Задания для самостоятельной работы
Какими будут значения переменных j, k после выполнения условного опеpaтоpa: if j>k Then j:=k-2 Else dec(k,2); если исходные значения переменных равны a) j = 3, k = 5; б) j = 3, k = 3; в) j = 3, k = 2.
- Запишите условный оператор, в котором значение переменной вычисляется по формуле: а + b, если а - нечетное и ab, если а - четное.
196
Вычислите значение функции:
{x2 + 5 при x > 3,
x - 8 при x ≤ 3.
Найдите наибольшее из трех данных чисел.
- Выведите на экран номер четверти, которой принадлежит точка с координатами (x,y), при условии, что x и у отличны от 0.
- Вычислите значение функции:
{x - 12 при x >
0, 5 при х = 0,
x2 при х < 0.
Даны три целых числа, найдите среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.
- Напишите фрагмент программы, подсчитывающий сумму только положительных из трех данных чисел.
- Даны три числа. Напишите фрагмент программы, подсчитывающий количество чисел, равных нулю.
- После выполнения операторов
a:=0;
If a<>0 Then; a:=2
значение переменной равно двум. Объясните почему.
Используя составной оператор, упростите следующий фрагмент программы:
If a>b Then c:=l;
If a>b Then d:=2;
If a<=b Then c:=3;
If a<=b Then d:=4.
Составьте программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.
- Если целое число М делится нацело на целое число N, то вывести на экран частное отделения, в противном случае - сообщение "M на N нацело не делится".
- Найдите количество положительных (отрицательных) чисел среди четырех целых чисел А, В, С и D.
- Чему равны значения переменных а и b после выполнения последовательности действий:
- а) а:= 15 Div (16 Mod 7); b:= 34 Mod a*5 - 29 Mod 5*2;
- б) а:= 4*5 Div 3 Mod 2; b:= 4*5 Div (3 Mod 2);
- в) a:= a*b; b:= b*b.
Составьте программу, которая определяла бы вид треугольника (если данные отрезки позволяют его построить).
- Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго по абсолютной величине.
- Составьте программу вычисления выражения:
- a) max(x + y + z, xyz) + 3;
- б) min(x2 + y2, y2 + z2) - 4,
197
если x, у, z введены с клавиатуры.
Составьте программу, которая из трех введенных с клавиатуры чисел возводит в квадрат положительные, а отрицательные оставляет без изменения.
Упражнение № 3. Целый тип данных. Цикл с параметром
Пример 4. Составить программу вычисления значения выражения
у = ((...(202 - 192)2 - 182)2-...-12)2.
Решение. В данном случае целесообразно организовать цикл с параметром, изменяющимся от 20 до 1, то есть шаг изменения параметра равен -1.
Обозначим: у - очередное значение квадрата числа; n - параметр цикла. Учитывая это, составим программу:
- Program Example_4;
- Var у, n: Integer;
- Begin
- y:=sqr(20);
- For n:=19 Downto 1 Do y:=sqr(y-sqr(n));
- Writeln('Значение выражения равно');
- Writeln(у);
- End.
Пример 5. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0 < n < 18).
Решение. Обозначим: k - это просматриваемое число, p1 - это первая цифра числа k, p2 - это вторая цифра числа k, s - это сумма цифр данного числа k. Число k будем выписывать только в том случае, когда сумма p1 и p2 будет равна s.
- Program Example_5;
- Var k, n, pl, p2, s:Integer;
- Begin
- Writeln('Введите целое число');
- Readln(n); {вводим целое число}
- For k:=10 To 99 Do (для(For) k от 10 до(То) 99 делать(Dо)}
- Begin
- p1:=k Div 10; {выделяем первую цифру}
- p2:=k Mod 10; {выделяем вторую цифру}
- s:=p1+p2; {находим сумму цифр}
- If s=n Then Writeln(k); {если сумма равна n, то выводим K}
- End;
- Readln;
- End.
Задания для самостоятельной работы
Сколько раз будут выполнены операторы из тела циклов в следующих фрагментах программ:
- а) For k:=-l To 1 Do ...
- б) For k:=10 To 20 Do ...
- в) For k:=20 To 10 Do ...
- г) k:=5; r:=15;
- д) For i:=k+l To r-l Do ...
- e) k:=5;r:=15;
198
- ж) For i:=0 To k*r Do ...
- 3) k:=r;
- и) For i:=k To r Do ...
Определите значение переменной s после выполнения следующих операторов:
s:=0; n:=10;
For i:=2 To n Do s:=s+100 Div i;
Составьте программу возведения натурального числа в квадрат, используя следующую закономерность:
- 12= 1
- 22 = 1 + 3
- 32 = 1 + 3 + 5
- 42 = 1 + 3 + 5 + 7
- n2 = 1 + 3 + 5 + 7 + 9 + ... + (2n-1)
Определите количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N.
- Составьте программу вычисления суммы кубов чисел от 25 до 125.
- Среди двузначных чисел найдите те, сумма квадратов цифр которых делится на 13.
- Напишите программу поиска двузначных чисел, таких, что если к сумме цифр этого числа прибавить квадрат этой суммы, получится это число.
- Квадрат трехзначного числа оканчивается тремя цифрами, которые как раз и составляют это число. Напишите программу поиска таких чисел.
- Напишите программу поиска четырехзначного числа, которое при делении на 133 дает в остатке 125, а при делении на 134 дает в остатке 111.
- Найдите сумму положительных нечетных чисел, меньших 100.
- Найдите сумму целых положительных чисел из промежутка от А до В, кратных 4 (значения переменных А и В вводятся с клавиатуры).
- Найдите сумму целых положительных чисел, больших 20, меньших 100, кратных 3 и заканчивающихся на 2, 4 или 8.
Упражнение № 4. Отладка. Пошаговая детализация
Загрузите файл c:\Example_5.pas.
- Откройте окно Watches и введите переменные pl, p2, k, s.
- Проследите работу программы в пошаговом режиме и составьте следующую таблицу для значений k от 10 до 15:
k | p1 | p2 | s |
| | | |
Примечание. Для удобства следует уменьшить размеры окна Watch и поместить его в удобное для Вас место экрана.
Пример 6. Дано число п. Каким образом можно построить "перевертыш" данного числа ?
Решение. Обозначим: n - вводимое число, т - дубликат числа я, а - перевертыш числа n, i - переменная цикла для создания перевертыша.
199
- Program Example_6;
- Var n,m,a,i:Integer;
- Begin
- Writeln('Введите целое число, не большее 9999');
- Readln(n); {вводим целое число}
- m:=n; a:=0;
- {создание перевертыша}
- For i:=l To 4 Do {так как число четырехзначное}
- Begin
- a:=a*10+m Mod 10; m:=m Div 10;
- End;
- If a=n Then Writeln('ДА! ') Else Writeln ( 'HET! ! ! ');
- {если перевертыш равен данному числу, то выводим "ДА", иначе - "НЕТ"}
- Readln;
- End.
Трассировка примера
Рассмотрим выполнение этой программы в пошаговом режиме для числа 3994. Так как значение переменной а не равно значению переменной я, то на экране появится слово "НЕТ!!!".
i | п | т | а - это перевертыш |
- | 3994 | 3994 | 0 |
1 | 3994 | 399 | 0·10 + 3994 mod 10 =0 + 4 = 4 |
2 | 3994 | 39 | 4·10 + 399 mod 10 = 40 + 9 = 49 |
3 | 3994 | 3 | 49·10 +39 mod 10 =490 + 9 = 499 |
4 | 3994 | 0 | 499·10 +3 mod 0 =4990 + 3 = 4993 |
Пример 7. ^ Даны натуральные числа п, k (п, k≤9999). Из чисел от п до k выбрать те, запись которых содержит ровно три одинаковые цифры. Например, числа 0006, 0060, 6766, 5444, содержат ровно три одинаковые цифры.
Решение. Если данное число содержит ровно три одинаковых цифры, то только одна из цифр отличается от остальных, т.е. возможны четыре случая.
В первом случае отличается последняя цифра, во втором - третья, в третьем - вторая, а в четвертом - первая. Для каждого числа выполняется только одно из условий.
^ Фрагмент решения
| 1 | 2 | 3 | 4 | |
1 | X | X | X | | - первое условие |
2 | X | X | | X | - второе условие |
3 | X | | X | X | - третье условие |
4 | | X | X | X | - четвертое условие |
200
- Begin {Exaraple_7};
- Writeln('Bвeдитe два числа, не больших 9999');
- Readln(n, k); For i:=n To k Do
- Begin
- m:=i;
- {выделение цифр: al - первая, a2 - вторая,аЗ - третья, a4 четвертая}
- a4:=m Mod 10; m:=m Div 10;
- a3:=m Mod 10; m:=m Div 10;
- a2:=m Mod 10; al:=m Div 10;
- {проверка условий}
- If ((al=a2) And (al=a3) And (al<>a4)) Or
- {первое условие}
- ((al=a2) And (al=a4) And (al<>a3)) Or {второе условие}
- ((al=a3) And (al=a4) And (al<>a2)) Or {третье условие}
- ((a2=a3) And (a2=a4) And (a2<>al) {четвертое условие}
- Then Writeln(i:5);
- End;
- Readln;
- End.
Трассировка примера
Рассмотрим выполнение программы для числа 3733.
n | m | а1 | а2 | а3 | а4 |
3733 | 3733 | - | - | - | 3 |
3733 | 373 | - | - | 3 | 3 |
3733 | 37 | 3 | 7 | 3 | 3 |
Для данного числа выполняется третье условие, поэтому на экране появится число 3733.
Задания для самостоятельной работы
При решении задач следует использовать метод пошаговой отладки программы.
Составьте программу возведения данного натурального числа а в степень п. Исследовать для различных а максимальное значение п.
- Даны натуральные числа a, b. Вычислите произведение ab, используя в программе лишь операции "+", "-", "=".
- Пусть п - натуральное число и пусть n!! означает 1 · 3 · 5 ·... · п для нечетного п и 2*4*...*n для четного п. Для заданного натурального п вычислите n!! и (-1)n+1·n!!
- Даны натуральные числа п, a1, a2, ..., an
- а) определите число членов ak последовательности a1, а2, ..., an, имеющих четные порядковые номера и являющихся нечетными числами;
- б) получите сумму тех чисел данной последовательности, которые удовлетворяют условию | ai| < i2;
201
- в) верно ли, что в последовательности больше отрицательных членов, чем положительных;
- г) min(a2,a4,...) + max(a1, a3, ...).
Даны натуральные n, b0, b1, ...,bn Вычислите f(b0) + f(b1) + ... + f(bn), где
Дано натуральное число п. Получите все его натуральные делители.
- Даны натуральные числа т, п. Получите все кратные им числа, меньшие m · n.
- Среди четырехзначных чисел выбрать те, у которых все четыре цифры различны.
- Дано четырехзначное число п. Выбросите из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 1509 должно получиться 19.
- Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в п-ю степень, равна самому числу (например, 153 = 13 + 53 + 33). Получите все числа Армстронга, состоящие из трех и четырех цифр.
- Дана последовательность из 20 целых чисел. Определите количество чисел в наиболее длинной подпоследовательности из подряд идущих нулей.
Упражнение № 5. Циклы с условиями
Пример 8. Цикл с предусловием. Дано натуральное число п. Подсчитайте количество цифр данного числа.
Решение. Подсчет количества цифр начнем с последней цифры числа. Увеличим счетчик цифр на единицу. Число уменьшим в 10 раз (тем самым мы избавляемся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т.д., пока число не станет равным нулю.