Практическое занятие 3.1.
МЕТОДИКА ПРЕПОДАВАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
1. Логические операторы.
2. Операции целочисленного деления.
3. Составление программ с использованием языков программирования Pascal ABC, C++, Python.
Логические операторы
Рассмотрим логические операторы в языках программирования Pascal ABC, C++, Python.
Таблица 1.
Логические операторы
Логические операции | Pascal ABC | C++ | Python |
И | and | && | and |
ИЛИ | or | || | or |
НЕ | not | ! | not |
Таблицы истинности для логических операций.
ОПЕРАЦИЯ НЕ
A истинно когда «не А» ложно.
a | a |
ОПЕРАЦИЯ И
«A и B» истинно тогда и только тогда, когда А и B истинны одновременно.
И называется также логическим умножением или конъюнкцией.
a | b | a∧b |
ОПЕРАЦИЯ ИЛИ
«A или B» истинно, когда истинно А или B, или оба вместе.
Можно сказать, что «A или B» ложно тогда и только тогда, когда ложны А и В одновременно.
ИЛИ называют логическим сложением или дизъюнкцией.
a | b | a∨b |
Альтернативные обозначения
· «НЕ» — черта сверху;
· «И» — знак умножения (логическое умножение);
· «ИЛИ» — знак «+» (логическое сложение).
ЗАПОМНИТЕ ПРАВИЛО, КОТОРОЕ ВСЕГДА РАБОТАЕТ!!!
Таблица 2.
Альтернативное правило
1 ∧ 0 = 0 — не очевидно | 1 ⋅ 0 = 0 — очевидно! |
1 ∨ 0 = 1 — не очевидно | 1 + 0 = 1 — очевидно! |
1 ∨ 1 = 1 — не очевидно | 1 + 1 = 1 — не очевидно, но можно смириться |
Итак, таблицы истинности для И и ИЛИ можно не учить, нужно запомнить только одно исключение:
1 + 1 = 1
Для наглядности рассмотрим изображения логических операций в виде операций над множествами
А*В это логическая операция А И В, а А+В это А ИЛИ В.
Таблица 3
Законы де Моргана
Запись с использованием частицы НЕ | Запись с использованием унарного минуса | Запись с использованием черты сверху |
НЕ(НЕ(А))=А | (А)=А | НЕ(А) = А |
НЕ (A И B) = (НЕ A) ИЛИ (НЕ B) | (A∧B) =А V B | A ИЛИB =A ИB |
НЕ (A ИЛИ B) = (НЕ A) И (НЕ B) | (AVB)= =А ∧ B | A ИB =A ИЛИB |
Операции целочисленного деления
Рассмотрим операции целочисленного деления в языках программирования Pascal ABC, C++, Python.
Таблица 4.
Операции целочисленного деления
Операции целочисленного деления | Pascal ABC | C++ | Python |
остаток от деления | mod | % | % |
целая часть от деления | div | / | // |
Операции целочисленного деления div, mod предназначены только для работы с целыми числами. Операция div определяет целую часть от деления, операция mod определяет остаток от деления.
Пример:
15 div 2 = 7
15 mod 2 = 1
Операции целочисленного деления div, mod играют большую роль при составлении программ.
Рассмотрим простые задачи, в которых используются div, mod
Пример № 1.
n школьников делят k яблок поровну, неделящийся остаток остаётся в корзинке. Сколько яблок достанется каждому школьнику?
Входные данные
Два положительных целых числа n и k, не превышающие 1500 - редко в школе бывает больше учеников, да и много яблок тоже кушать вредно...
Выходные данные
Вывести количество яблок, которое достанется каждому школьнику.
program pr1;
var r,k,n:integer;
begin
readln(n,k);
r:=k div n;
writeln(r);
end.
Пример № 2.
n школьников делят k яблок поровну, неделящийся остаток остаётся в корзинке. Сколько яблок останется в корзинке?
Входные данные
Два положительных целых числа n и k, не больших 1500 - редко в школе бывает больше учеников, да и где найти такую корзинку?
Выходные данные
Вывести количество яблок, которое останется в корзинке.
program pr1;
var r,k,n:integer;
begin
readln(n,k);
r:=k mod n;
writeln(r);
end.
Пример № 3.
Найти сумму цифр натурального числа N, где ( 1<=N<=2147483647 ).
Замечание: данная задача является базовой для решения задания ЕГЭ № 24. Каждый школьник должен понимать, как составляется алгоритм решения с использованием операций DIV, MOD.
Решение.
Для разбора алгоритма решения данной задачи построим трассировочную таблицу.
S:=0
№ | Условие | Digit | S | N |
n>0 753>0 | Digit:= n mod 10 Digit= 753 mod 10=3 | S:=S+ Digit S:=0+3 | N:=N div 10 N=753 div 10 =75 | |
75>0 | Digit=75 mod 10=5 | S:=3+5=8 | N=75 div 10 =7 | |
7>0 | Digit=7 mod 10=7 | S:=8+7=15 | N=7 div 10 =0 | |
0>0 | Условие не выполняется, выход из цикла |
program pr2; var digit,n,s:longint; begin writeln ('input n'); readln (n); s:=0; while n>0 do begin digit:= n mod 10 S:=S+ digit; n:=n div 10; end; writeln('summa=',s); end. |
3. Составление программ с использованием языков программирования Pascal ABC, C++, Python.
Рассмотрим пример из основного государственного экзамена для 9 класса, аналогичный заданию № 20.1.
Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 3 и оканчивающихся на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратно 3 и оканчивающиеся на 2. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — количество чисел, кратных 3 и оканчивающихся на 2.
Пример работы программы:
Входные данные | Выходные данные |
Решение на языке программирования Pascal ABC
Program ex1;
var n,i,k,x:integer;
begin
readln(n);
k:=0;
for i:=1 to n do
begin
readln(x);
if (x mod 3= 0) and (x mod 10 =2) then k:=k+1;
end;
writeln(k);
end.
Решение на языке программирования C++
#include <iostream>
using namespace std;
int main() {
int i,n,x,count; /* описание переменных */
count = 0;
cin >> n; /*ввод значения переменной n */
for (i=1; i<=n; i++){
cin >> x; /*ввод значения переменной x */
if (x%3 == 0 && x%10 == 2)
count++;
}
cout << count << endl; /*вывод значения переменной count */
return 0; /* endl означает переход на новую строку */
}
Решение на языке программирования Python
count = 0
n = int(input()) # описание и ввод значения переменной n, тип int
for i in range (1,n+1):
x = int(input()) # описание и ввод значения переменной x, тип int
if (x % 3 == 0) and (x % 10 == 2):
count+=1
print(count) # вывод значения переменной count
В языке программирования Python нет операторных скобок (begin,end) для обозначения отдельных блоков кода. Вместо них в Python используются: и отступы. Количество пробелов в отступах равняется четырем пробелам.
Функции range() в Python
Range(англ.- диапазон)
range() является универсальной функцией Python для создания списков (list) содержащих арифметическую прогрессию. Чаще всего она используется в циклах for. Функция range() может принимать от одного до трех агрументов, при этом аргументами должны быть целые числа (int).
range(старт, стоп, шаг) – так выглядит стандартный вызов функции range() в Python.
По умолчанию старт равняется нулю, шаг единице. Возвращает список целых чисел в форме [старт, старт + шаг, старт + шаг*2...]. Если шаг положительное число, последним элементом списка будет наибольшее старт + i * шаг меньшее числа стоп. Если шаг отрицательное число, то последний элемент будет наименьшее старт + i * шаг большее числа стоп. Шаг не должен равняться нулю, иначе возникнет ValueError.
Примеры использований функции range() в Python:
Пример 1. range(7) [0, 1, 2, 3, 4, 5, 6] Пример 2. range(1,8) [1, 2, 3, 4, 5, 6,7] Пример 3. range(0,20,5) [0, 5, 10, 15] range (0,10,4) (0,4,8) |
Запись k+=i означает k:=k+i
Пример.
k=0
For i in range (0,10,4):
k+=i
Рассмотрим следующие примеры из основного государственного экзамена для 9 класса, аналогичный заданию № 20.1.
Пример № 1.
1. Напишите программу, которая в последовательности натуральных чисел определяет т сумму всех чисел, кратных 6 и оканчивающихся на 4. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число: сумму всех чисел, кратных 6 и оканчивающихся на 4.
Входные данные | Выходные данные |
Решение.
Pascal ABC | C++ | Python |
program pr1; var sum,x:integer; begin readln(x); sum:=0; while x<>0 do begin if (x mod 6 = 0) and (x mod 10 =4) then sum:=sum+x; readln(x); end; writeln(sum); end. | #include <iostream> using namespace std; int main() { int sum,x; /* описание переменных */ sum = 0; cin >> x; /*ввод значения переменной x */ while (x!=0) { if (x%6 == 0 && x%10 == 4) sum+=x; cin >> x; /*ввод значения переменной x */ } cout << sum << endl; /*вывод значения переменной sum */ return 0; /* endl означает переход на новую строку */ } | x = int(input()) sum = 0 while not (x == 0): if (x % 6 == 0) and (x % 10 == 4): sum += x x = int(input()) print (sum) |
Пример № 2.
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000.
program ex1;
var n,i,a,max,k: integer;
begin
k:=0;
max:= 0;
for i:= 1 to 4 do
begin
readln(a);
if (a mod 2 > 0) then
begin
k:=k+1;
if (a > max) then max:= a;
end;
end;
if k=0 then writeln ('NO') else writeln ('k=',k);
writeln ('max=', max);
end.
Вопросы для самоконтроля
1. Логические операторы в языках программирования Pascal ABC, C++, Python.
2. Операции целочисленного деления в языках программирования Pascal ABC, C++, Python.
3. Описание переменных в языках программирования Pascal ABC, C++, Python.
Основная литература
1. Электронный учебник для изучения информатики и ИКТ в 8-9 классах к учебно-методическому комплекту И.Г. Семакин и др. авторов. Тематический каталог ЦОР. – Режим доступа: https://www.krippo.ru/informatika/116
2. Методика подготовки обучающихся к ОГЭ по информатике и ИКТ. Методические рекомендации / Т.В. Киндра – Симферополь: ИП Хотеева Л.В., 2018. – 64 с. – Режим доступа: https://krippo.ru/informatika/120
3. Информатика. Углубленный уровень: учебник для 10 класса: в 2 ч. Ч.1/ И.Г. Семакин, Т.Ю. Шеина, Л.В. Шестакова.- М.: БИНОМ. Лаборатория знаний, 2014.-184 с. – Режим доступа: https://lbz.ru/books/230/8194/
Дополнительная литература
1. Информатика. Учебник для 9 класса. И. Г. Семакин, Л. А. Залогова,
С. В. Русаков, Л. В. Шестакова.- М.: БИНОМ. Лаборатория знаний, 2014.-125 с.
2. Информатика. Углубленный уровень: учебник для 10 класса: в 2 ч. Ч.2/ И.Г. Семакин, Т.Ю. Шеина, Л.В. Шестакова.- М.: БИНОМ. Лаборатория знаний, 2014.-232 с.
3. Кузнецов А.А. Основы общей теории и методики обучения информатике. Учебное пособие – М.: БИНОМ. Лаборатория знаний, 2010.– 207 с.
Электронные образовательные ресурсы
1. 1. Онлайновая система программирования, компиляторы для любого языка программирования. – Электронный ресурс. – Режим доступа: https://ideone.com/
2. Лабораторные работы и задачи по программированию, ЕГЭ по информатике и ИКТ. – Электронный ресурс. – Режим доступа: https://labs.org.ru/
3. Дистанционная подготовка по информатике. – Электронный ресурс. – Режим доступа: https://informatics.mccme.ru
4. Школа программиста. – Электронный ресурс. – Режим доступа: https://acmp.ru
5. ФГБНУ «Федеральный институт педагогических измерений». – Электронный ресурс. – Режим доступа: https://fipi.ru/
6. «РЕШУ ОГЭ, разбор заданий, тренировочные online-тесты по информатике». – Электронный ресурс. – Режим доступа: https://inf.reshuoge.ru
7. ГБОУ ДПО РК КРИППО. – Электронный ресурс. – Режим доступа: www.krippo.ru
8. Методические рекомендации по подготовке обучающихся к ОГЭ по информатике и ИКТ. – Электронный ресурс. – Режим доступа: https://www.krippo.ru/files/Informatika/metod1.pdf
9. Персональный сайт учителя информатики К.Ю. Полякова. – Электронный ресурс. – Режим доступа: https://kpolyakov.spb.ru
Практическое задание
Составить программы с использованием языков программирования Pascal ABC, C++, Python для следующих задач.
1. Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 6. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 6. Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести одно число — сумму чисел, кратных 6.
2. Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, кратное 5. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 5. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — максимальное число, кратное 5.
3. Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, оканчивающихся на 6. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 6. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — количество чисел, оканчивающихся на 6.
4. Напишите программу, которая в последовательности целых чисел определяет количество нечётных чисел, кратных 3. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести два числа: длину последовательности (завершающий 0 не учитывается) и количество нечётных чисел, кратных 3.