Задание 20.2 программирование на языке Pascal

Разбор решения задания 20.2 ГИА в форме ОГЭ по информатике. 9 класс. Пример решения с объяснением на языке Pascal в среде программирования Pascal ABC.Net 3.2

Задание 20.2

Напишите про­грам­му для ре­ше­ния сле­ду­ю­щей задачи. Камера на­блю­дения ре­ги­стри­ру­ет в ав­то­ма­ти­че­ском ре­жи­ме ско­рость про­ез­жа­ю­щих мимо неё автомобилей, округ­ляя зна­че­ния ско­ро­сти до целых чисел. Не­об­хо­ди­мо опре­де­лить ми­ни­маль­ную за­ре­ги­стри­ро­ван­ную ско­рость автомобиля. Если ско­рость хотя бы од­но­го ав­то­мо­би­ля была боль­ше 80 км/ч, вы­ве­ди­те «YES», иначе вы­ве­ди­те «NO».
Программа по­лу­ча­ет на вход число про­ехав­ших ав­то­мо­би­лей N (1 =< N =< 30), затем ука­зы­ва­ют­ся их скорости. Зна­че­ние ско­ро­сти не может быть мень­ше 1 и боль­ше 300.Программа долж­на сна­ча­ла вы­ве­сти ми­ни­маль­ную скорость, затем YES или NO.
Пример ра­бо­ты программы:

Входные данныеВыходные данные
4
74
69
63
96
63
YES

Что необходимо знать для решения задания 20.2 ОГЭ по информатике 9 класс?

  • Типы переменных.
  • Оператор цикла FOR
  • Условный оператор IF



Пример решения верного решения на 2 балла.

var
a, b, c, min: integer; //Объявляем переменные целочисленного типа
d: boolean;//объявляем переменную логического типа. Для определения верности условия (скорость больше 80 км/ч)
begin
//******инициализируем переменные*******
min := 300;//переменная для нахождения минимальной скорости. По условию задачи, скорость не может быть более 300
a := 0;//обнуляем переменную
c := 0;//обнуляем переменную
d := false;//задаём исходное логическое значение 0
readln(a);//чтение с клавиатуры числа количества машин
for b := 1 to a do //задаём цикл от 1 до a количества машин
begin
readln(c);//считываем значение скорости
if c <= min then//Задаём условие, которым будем находить минимальную скорость.
min := c;//Каждый раз присваиваем значение переменной min наименьшую введённую скорость
if c > 80 then//производим проверку была ли скорость больше 80
d := true;//если была скорость более 80, то переменная d меняет логическое значение на true (1)
end;
writeln(min);//Выводим минимальную скорость
if d = true then //Проверяем значение логической переменной
writeln('YES')//Выводим YES, если логическая переменная = true
else writeln('NO');//выводим NO, если логическая переменная не равна true
readln;//Чтобы программа не закрывалась

end.


Скачать исходник программы задание 20.2 ОГЭ:

20.2.pas



Программу можно написать и проще.


Пример решения задания в упрощённой форме.

var
a, b, c,d, min: integer;
begin
min := 300;
readln(a);
for b := 1 to a do
begin
readln(c);
if c <= min then
min := c;
if c > 80 then
d := 1;
end;
writeln(min);
if d = 1 then
writeln('YES')
else writeln('NO');
readln;

end.


В чём разница решений?

Во втором, упрощённом варианте, не инициализированы переменные. Это не обязательно в PascalABC.Net, так как переменные изначально имеют значения "0". Но делать это желательно, так как это считается правилом хорошего тона. Плюс ко всему в других версиях интерпретатора Pascal без инициализации код работать не будет.

Так же, во второй версии программы не использован логический тип переменных. Использовать его не обязательно. Тут решение на усмотрение составителя программы.


Важно!

У проверяющих совсем другие входные данные для проверки вашей программы (не как приведены в задании), поэтому не старайтесь написать программу под конкретные числа.

23:25
16504
Irina
00:36

Задача  может быть решена через одномерный массив. Почему Вы не приводите такой вариант решения?

Если же он, на Ваш взгляд, в данном случае не эффективен, хотелось бы значь, почему?

08:48

Задача может быть решена и через массив. НО! Программа более эффективна по памяти в этом случае. Да и размерность массива придётся задавать сверх огромную. так как нам не известно сколько будет проезжать машин заранее. По-этому такой способ решения более эффективен.

Загрузка...

Подготовка к ГИА


Подпишись