Логотип
вентилятор
Волк

ОГЭ по информатике - Задание 6 (Анализируем программу)



Пришло время 6 задания из ОГЭ по информатике 2023.


В этом задании нужно проанализировать программу на одном из языков программирования и ответить на поставленный вопрос.


Перейдём к примерным задачам из ОГЭ по информатике.





Задача (Союз ИЛИ)

Ниже приведена программа, записанная на 5 языках программирования.



БейсикПаскаль
DIM s, t AS INTEGER
INPUT s
INPUT t
IF s > 8 OR t > 8 THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t: integer;
begin
readln(s);
readln(t);
if (s >  8) or (t >  8)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    if (s > 8 || t > 8)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t
ввод s
ввод t
если s > 8 или t > 8
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
if (s > 8) or (t > 8):
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (5, 6); (9, 5); (6, 8); (10, 9); (–9, –10); (–9, 10); (–10, 9); (8, 8); (8, 6).


Сколько было запусков, при которых программа напечатала «YES»?





Решение:

Разберём программы на Питоне и на Паскале.


ОГЭ по информатике - Задание 6 (Анализ программы)

Чтобы программа напечатала "YES", нужно, чтобы в паре было хотя бы одно число, которое больше 8, т.к. в условии стоит союз ИЛИ (or).


Подходят пары: (9, 5); (10, 9); (-9, 10); (–10, 9); . Всего получается 4 запуска.


Ответ: 4



Задача (Союз ИЛИ, закрепление)

Ниже приведена программа, записанная на 5 языках программирования.



БейсикПаскаль
DIM s, t AS INTEGER
INPUT s
INPUT t
IF s < 5 OR t > 5 THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t: integer;
begin
readln(s);
readln(t);
if (s <  5) or (t >  5)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    if (s < 5 || t > 5)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t
ввод s
ввод t
если s < 5 или t > 5
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
if (s < 5) or (t > 5):
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (2, 5); (5, 2); (4, 4); (2, -2); (3, 1); (8, 3); (9, -7); (7, 7); (4, 6).


Сколько было запусков, при которых программа напечатала «YES»?



Решение:

Чтобы программа напечатала "YES", нужно, чтобы в паре первое число s было меньше 5 ИЛИ второе число t было больше 5, или оба условия выполнились одновременно.


Подходят пары: (2, 5); (4, 4); (2, -2); (3, 1); (7, 7); (4, 6); Всего получается 6 запусков.


Ответ: 6



Задача (Союз И)

Ниже приведена программа, записанная на 5 языках программирования.



БейсикПаскаль
DIM s, t AS INTEGER
INPUT s
INPUT t
IF s >= 8 AND t >= 10 THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t: integer;
begin
readln(s);
readln(t);
if (s >=  8) and (t >=  10)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    if (s >= 8 && t >= 10)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t
ввод s
ввод t
если s >= 8 и t >= 10
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
if (s >= 8) and (t >= 10):
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (6, 8); (9, 10); (9, 5); (-10, 9); (5, 6); (9, -10); (10, 9); (8, 10); (17, 10).


Сколько было запусков, при которых программа напечатала «YES»?



Решение:

В этот раз в условии стоит союз И (and). В этом случае, чтобы распечаталось YES, нужно, чтобы два условия одновременно сработали. Т.е. первое число должно быть s >= 8, а второе t >= 10, тогда мы пару будем засчитывать.


Подходят пары: (9, 10); (8, 10); (17, 10); Всего получается 3 запуска.


Ответ: 3



Задача (Союз И, закрепление)

Ниже приведена программа, записанная на 5 языках программирования.



БейсикПаскаль
DIM s, t AS INTEGER
INPUT s
INPUT t
IF s >  6 AND t < 7 THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t: integer;
begin
readln(s);
readln(t);
if (s >  6) and (t <  7)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    if (s > 6 && t < 7)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t
ввод s
ввод t
если s > 6 и t < 7
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
if (s > 6) and (t < 7):
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (7, 3); (2, 7); (6, 10); (5, 3); (5, 4); (-11, 4); (-8, 9); (7, 3); (9, 1).


Сколько было запусков, при которых программа напечатала «NO»?



Решение:

Здесь нужно определить сколько раз распечатается "NO". В подобных случаях удобно всё равно считать сколько раз распечатается "YES", а потом вычислить сколько раз будет распечатано "NO".


В условии стоит союз И. Значит, первое число должно s быть больше 6 и одновременно с этим второе число t должно быть меньше 7.

Подходят пары: (7, 3); (7, 3); (9, 1); Всего получается 3 запуска.


Но нам нужно было найти, сколько раз выведется "NO". Поэтому ответ будет 9-3=6.


Ответ: 6



Задача (Целочисленное деление)

Ниже приведена программа, записанная на 5 языках программирования.



БейсикПаскаль
DIM s, t AS INTEGER
INPUT s
INPUT t
IF s \ 2 = t THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t: integer;
begin
readln(s);
readln(t);
if s div 2 = t
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    if (s / 2 == t)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t
ввод s
ввод t
если div(s, 2) = t
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
if s // 2 == t:
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (1, 1); (8, 4); (14, 10); (20, 1); (7, 3); (10, 5); (10, 2); (4, 1); (1, 0).


Сколько было запусков, при которых программа напечатала «NO»?



Решение:

Команда div в Паскале или двойной слеш в Питоне обозначает целочисленное деление!


Как это работает ? Например 5:2 = 2,5, но если мы сделаем 5 // 2 = 2. Т.е. дробная часть просто отбрасывается. Не округляется, а просто отбрасывается. Или другими словами происходит округление в меньшую сторону.


В нашей программе будет печататься "YES", когда применяется целочисленное деление на 2 к первому числу, и получается второе число. Посмотрим в каких парах будет выведено "YES".


Это пары: (8, 4); (7, 3); (10, 5); (1, 0). Четыре запуска. Значит, "NO" распечатается в 5 (9-4) случаях.


Ответ: 5



Задача (С параметром)

Ниже приведена программа, записанная на 5 языках программирования.


БейсикПаскаль
DIM s, t, A AS INTEGER
INPUT s
INPUT t
INPUT A
IF s > A OR t > 12 THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t, A: integer;
begin
readln(s);
readln(t);
readln(A);
if (s > A) or (t > 12)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t, A;
    cin >> s;
    cin >> t;
    if(s > A || t > 12)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t, A
ввод s
ввод t
если s > A или t > 12
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
A = int(input())
if s > A or t > 12:
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (13, 2); (11, 12); (-12, 12); (2, -2); (-10, -10); (6, -5); (2, 8); (9, 10); (1, 13).


Укажите наименьшее целое значение параметра A, при котором при указанных входных данных программа напечатает "YES" 3 раза.





Решение:

В условии стоит союз ИЛИ. Посмотрим, сколько пар подойдёт, если обращать внимание только на переменную t. Она должна быть больше 12. Тогда получается одна пара: (1, 13).


Ещё нужно набрать 2 пары. Это сделаем с помощью переменной s. Понимаем, что A должно быть равно 10, тогда ещё две пары подойдут по первому числу (13, 2) и (11, 12).


Но нас просили A найти как можно меньше. При значении 9 так же останутся три пары, но A будет ещё меньше. Значит, ответ будет 9. Ели попробовать взять A=8, то подойдёт ещё одна пара (9, 10), и их будет уже 4.


Ответ: 9

Задача (С параметром, закрепление)

Ниже приведена программа, записанная на 5 языках программирования.


БейсикПаскаль
DIM s, t, A AS INTEGER
INPUT s
INPUT t
INPUT A
IF s > A OR t > 12 THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t, A: integer;
begin
readln(s);
readln(t);
readln(A);
if (s > A) or (t > 12)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t, A;
    cin >> s;
    cin >> t;
    if(s > A || t > 12)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t, A
ввод s
ввод t
если s > A или t > 12
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
A = int(input())
if s > A or t > 12:
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (13, 2); (11, 12); (-12, 12); (2, -2); (-10, -10); (6, -5); (2, 8); (9, 10); (1, 13).


Укажите количество целых значений параметра A, при которых при указанных входных данных программа напечатает "NO" 5 раз.





Решение:

Будем отталкиваться от количества "YES"ов.


Вновь найдём количество пар, которые печатают "YES" по второму числу, в независимости от параметра A. Получается одна пара (1, 13).


Нужно выбрать параметр A таким, чтобы распечатали "YES" ещё три пары. Здесь уже ориентируемся на первое число s.


Выберем A = 8. Тогда распечатают "YES" ещё три пары: (13, 2) ; (11, 12) ; (9, 10). Это наибольшее значение A, при котором распечатается 5 "NO". Но так же 5 "NO" будет напечатано и при A = 7, 6. При A = 5 добавляется ещё одна пара (6, -5), при которой будет напечатано "YES", и уже условие задачи не выполняется.


Таким образом, ответ получается 3 (А = 8, 7, 6).


Ответ: 3

Задача (Крепкий орешек)

Ниже приведена программа, записанная на 5 языках программирования.


БейсикПаскаль
DIM s, t, A AS INTEGER
INPUT s
INPUT t
INPUT A
IF s > 10 OR t > A THEN
    PRINT "YES"
ELSE
    PRINT "NO"
ENDIF
var s, t, A: integer;
begin
readln(s);
readln(t);
readln(A);
if (s > 10) or (t > A)
then
    writeln("YES")
else
    writeln("NO")
end.
C++Алгоритмический язык
#include 
using namespace std;
int main(){
    int s, t, A;
    cin >> s;
    cin >> t;
    if(s > 10 || t > A)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
алг
нач
цел s, t, A
ввод s
ввод t
если s > 10 или t > A
то вывод "YES"
иначе вывод "NO"
все
кон
Python
s = int(input())
t = int(input())
A = int(input())
if s > 10 or t > A :
    print("YES")
else:
    print("NO")

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t): (1, 2); (11, 2); (1, 12); (11, 12); (-11, -12); (-11, 12); (-12, 11); (10, 10); (10, 5).


Укажите наименьшее целое значение параметра A, при котором при указанных входных данных программа напечатает "NO" 3 раза.





Решение:

Найдём сколько раз программа напечатает "YES", исходя из первого числа s. Получается только две пары: (11, 2) и (11, 12). Значит, 7 раз "NO". Нужно увеличивать количество "YES"ов.


Попробуем взять A=6. В группу "YES" передут ещё 4 пары: (1, 12); (-11; 12); (-12; 11); (10; 10).


В группе "NO" как раз останутся три пары: (1, 2); (-11, -12); (10, 5).


Проверим, является ли число 6 для переменной A минимальным.


Попробуем A=5. Оказывается, три вышеперечисленные пары остаются в группе "NO". Последняя пара тоже не распечатает "YES", ведь неравенство строгое.


Если будет A=4, то последняя пара уже будет печатать "YES", и условие задачи перестанет выполняться.


Ответ: 5

На этом всё, пусть у вас получится решить 6 задание из ОГЭ по информатике без сучка без задоринки.





11-12-2022 в 17:09:32







Поддержать сайт:

Похожая статья:

ОГЭ по информатике - Задание 4 (Карта городов)

Добрый день! Сегодня посмотрим, как "бороться" с 4 заданием из ОГЭ по ...

Категория: ОГЭ  Подкатегория: -
Дата: 27-11-2022 в 15:44:40 0


Комментарии:

Легко
Артем 25-01-2023 в 04:30:42



Оставить коментарий:



Напишите email, чтобы получать сообщения о новых комментариях (необязательно):


Задача против робота. Расположите картинки горизонтально: