Информатика исправить ошибки в программе

Автор материалов — Лада Борисовна Есакова.
Самая распространенная ошибка, которую нужно найти и исправить – это неправильное использование вложенных условных операторов. Для усложнения поиска возможно неправильное форматирование текста (неправильно поставленные отступы).

Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора if и else.

Помним, что часть else относится к ближайшему if. При этом наличие части else не обязательно.

Кроме того, часто присутствует ошибка при вводе или выводе. Обязательно нужно проверить, та ли информация выводится на экран.

Особого внимания требует инициализация переменных.

Формат книги не позволяет рассмотреть все основные типы задач 2 части, рассмотрим лишь те, которые встречались на проверочных и экзаменационных работах последних двух лет.

Пример 1.

На об­ра­бот­ку по­сту­па­ет по­ло­жи­тель­ное целое число, не пре­вы­ша­ю­щее 109. Нужно на­пи­сать про­грам­му, ко­то­рая вы­во­дит на экран сумму цифр этого числа, мень­ших 7. Если в числе нет цифр, мень­ших 7, тре­бу­ет­ся на экран вы­ве­сти 0. Про­грам­мист на­пи­сал про­грам­му не­пра­виль­но. Ниже эта про­грам­ма для Ва­ше­го удоб­ства при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

 Бей­сик

Python

DIM N, DIGIT, SUM AS LONG

INPUT N

SUM = 0

WHILE N > 0

DIGIT = N MOD 10

IF DIGIT < 7 THEN

SUM = SUM + 1

END IF

N = N 10

WEND

PRINT DIGIT

N = int(input())

sum = 0

while N > 0:

digit = N % 10

if digit < 7:

sum = sum + 1

N = N // 10

print(digit)

Пас­каль

Ал­го­рит­ми­че­ский язык

var N, digit, sum: longint;

begin

readln(N);

sum := 0;

while N > 0 do

begin

digit := N mod 10;

if digit < 7 then

sum := sum + 1;

N := N div 10;

end;

writeln(digit)

end.

алг

нач

цел N, digit, sum

ввод N

sum := 0

нц пока N > 0

digit := mod(N,10)

если digit < 7 то

sum := sum + 1

все

N := div(N,10)

кц

вывод digit

кон

Си

#include

int main()

{

int N, digit, sum;

scanf(«%d», &N);

sum = 0;

while (N > 0)

{

digit = N % 10;

if (digit < 7)

sum = sum + 1;

N = N / 10;

}

printf(«%d»,digit);

return0;

}

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 456.

2. При­ве­ди­те при­мер та­ко­го трёхзнач­но­го числа, при вводе ко­то­ро­го про­грам­ма выдаёт вер­ный ответ.

3. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Из­вест­но, что каж­дая ошиб­ка за­тра­ги­ва­ет толь­ко одну стро­ку и может быть ис­прав­ле­на без из­ме­не­ния дру­гих строк. Для каж­дой ошиб­ки:

1) вы­пи­ши­те стро­ку, в ко­то­рой сде­ла­на ошиб­ка;

2) ука­жи­те, как ис­пра­вить ошиб­ку, т.е. при­ве­ди­те пра­виль­ный ва­ри­ант стро­ки.

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

Решение:

Ре­ше­ние ис­поль­зу­ет за­пись про­грам­мы на Пас­ка­ле. До­пус­ка­ет­ся ис­поль­зо­ва­ние про­грам­мы на любом из четырёх дру­гих язы­ков.

1. Про­грам­ма вы­ве­дет число 4.

2. При­мер числа, при вводе ко­то­ро­го про­грам­ма выдаёт вер­ный ответ: 835.

Про­грам­ма ра­бо­та­ет не­пра­виль­но из-за не­вер­ной вы­во­ди­мой на экран пе­ре­мен­ной и не­вер­но­го уве­ли­че­ния суммы. Со­от­вет­ствен­но, про­грам­ма будет ра­бо­тать верно, если в числе стар­шая цифра (край­няя левая) равна сумме цифр, мень­ших 7.

3. В про­грам­ме есть две ошиб­ки.

Пер­вая ошиб­ка. Не­вер­ное уве­ли­че­ние суммы.

Стро­ка с ошиб­кой:

sum := sum + 1;

Вер­ное ис­прав­ле­ние:

sum := sum + digit;

Вто­рая ошиб­ка. Не­вер­ный вывод от­ве­та на экран.

Стро­ка с ошиб­кой:

writeln(digit)

Вер­ное ис­прав­ле­ние:

writeln(sum)

Пример 2.

Для за­дан­но­го по­ло­жи­тель­но­го ве­ще­ствен­но­го числа A не­об­хо­ди­мо найти мак­си­маль­ное целое число K, при ко­то­ром вы­пол­ня­ет­ся не­ра­вен­ство

(при K = 0 сумма счи­та­ет­ся рав­ной 0).

Для ре­ше­ния этой за­да­чи уче­ник на­пи­сал такую про­грам­му.

 Бей­сик

Python

DIM A, S AS DOUBLE

DIM K AS INTEGER

INPUT A

K = 1

S = 1

WHILE S < A

S = S + 1.0/K

K = K + 1

WEND

PRINT K

END

a = float(input())

k = 1

s = 1

while s < a:

s = s + 1.0/k

k = k + 1

print(k)

Ал­го­рит­ми­че­ский язык

Пас­каль

алг

нач

вещ a, s

цел k

ввод a

k := 1

s := 1

нц пока s<a

s := s + 1.0/k

k := k + 1

кц

вывод k

кон

var a, s: real;

k: integer;

begin

read(a);

k := 1;

s := 1;

while s<a do begin

s := s + 1.0/k;

k := k + 1;

end;

write(k);

end.

Си

#include <stdio.h>

int main(){

double a, s;

int k;

scanf(«%lf»,&a);

k = 1;

s = 1;

while (s<a) {

s = s + 1.0/k;

k = k + 1;

}

printf(«%d», k);

return 0;

}

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 1.2.

2. При­ве­ди­те при­мер числа, при вводе ко­то­ро­го про­грам­ма даст вер­ный ответ.

3. Най­ди­те в про­грам­ме все ошиб­ки (их может быть одна или не­сколь­ко).

Для каж­дой ошиб­ки вы­пи­ши­те стро­ку, в ко­то­рой она до­пу­ще­на, и при­ве­ди­те эту же стро­ку в ис­прав­лен­ном виде.

Об­ра­ти­те вни­ма­ние: вам нужно ис­пра­вить при­ведённую про­грам­му, а не на­пи­сать свою. Вы мо­же­те толь­ко ис­прав­лять оши­боч­ные стро­ки; уда­лять стро­ки или до­бав­лять новые стро­ки нель­зя. По­ста­рай­тесь также не вне­сти новые ошиб­ки – за это оцен­ка сни­жа­ет­ся.

Решение:

Ре­ше­ние ис­поль­зу­ет за­пись про­грам­мы на Пас­ка­ле. До­пус­ка­ет­ся ис­поль­зо­ва­ние про­грам­мы на дру­гих язы­ках.

1. При вводе числа 1.2 про­грам­ма вы­ве­дет число 2.

2. При­ме­ры чисел, при вводе ко­то­рых про­грам­ма вы­во­дит вер­ный ответ: 1.6, 2.05.

Про­грам­ма со­дер­жит две ошиб­ки, одна из ко­то­рых при­во­дит к уве­ли­че­нию от­ве­та, дру­гая – к умень­ше­нию.

В не­ко­то­рых слу­ча­ях эти ошиб­ки ком­пен­си­ру­ют друг друга, и ответ ока­зы­ва­ет­ся пра­виль­ным. Это про­ис­хо­дит, если зна­че­ние A по­па­да­ет в один из сле­ду­ю­щих диа­па­зо­нов: 1.5 < A < 1.83, 2 < A < 2.08.

3. Про­грам­ма со­дер­жит две ошиб­ки.

1) Не­вер­ная ини­ци­а­ли­за­ция. На­чаль­ное зна­че­ние S долж­но быть равно нулю.

В при­ведённом ва­ри­ан­те вы­чис­лен­ная сумма ока­зы­ва­ет­ся на 1 боль­ше пра­виль­но­го зна­че­ния.

Стро­ка с ошиб­кой:

s := 1;

Пра­виль­ная стро­ка:

s := 0;

2) Не­вер­ное опре­де­ле­ние от­ве­та. При­ведённая про­грам­ма на­хо­дит не мак­си­маль­ное K, при ко­то­ром вы­пол­ня­ет­ся не­ра­вен­ство, а ми­ни­маль­ное, при ко­то­ром оно не вы­пол­ня­ет­ся, то есть уве­ли­чи­ва­ет вер­ное зна­че­ние на 1.

Кроме того, ис­поль­зо­ван­ный по­ря­док дей­ствий в цикле (уве­ли­че­ние K после уве­ли­че­ния S) при­во­дит к уве­ли­че­нию ещё на 1. Это можно было бы ис­пра­вить, из­ме­нив по­ря­док дей­ствий в цикле и умень­шив K после за­вер­ше­ния цикла, но эти дей­ствия не раз­ре­ше­ны по усло­вию за­да­чи.

По­это­му для ис­прав­ле­ния ошиб­ки можно про­сто скор­рек­ти­ро­вать зна­че­ние при вы­во­де.

Стро­ка с ошиб­кой:

write(k);

Пра­виль­ная стро­ка:

write(k-2);

Спасибо за то, что пользуйтесь нашими материалами.
Информация на странице «Задача №24. Исправление ошибок в программе.» подготовлена нашими редакторами специально, чтобы помочь вам в освоении предмета и подготовке к ЕГЭ и ОГЭ.
Чтобы успешно сдать нужные и поступить в высшее учебное заведение или техникум нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими статьями из разделов нашего сайта.

Публикация обновлена:
07.06.2023

Цели урока:

Образовательная –


  • закрепить изученный материал: синтаксис
    программ, основные операторы;
  • изучить новый материл – ошибки и отладка
    программ.

Деятельностная –

  • сформировать у учащихся способности к анализу,
    нахождению, обобщению и приему нужной информации
    через решение задач;
  • отработать навыки нахождения и исправления
    ошибок;
  • развить коммуникативные навыки, память.

Воспитательная – воспитать уверенность в
собственных силах, стремление к познанию.

Задачи урока:


  • Изучить новый материал:
  • Поиск ошибок и отладка программ.
  • Закрепить и проконтролировать ЗУН учащихся при
    работе с ошибками:
    1) Умение определять ошибки по указанному коду.
    2) Умение переводить ошибки с русского языка на
    язык программирования.
    3) Нахождение ошибок в программе.
    4) Умение проводить отладку программ.

Оборудование урока: раздаточный материал,
экран, проектор, тетрадь, ПК.

Междисциплинарные связи: английский язык +
информатика + математика.

Метапредметные связи: Постановка вопроса.

Тип урока: Урок открытия нового знания,
комбинированный.

Ход урока

1. Мотивация учебной деятельности.

Урок сегодня я хотела бы начать с фрагмента из
мультфильма “Вовка в тридевятом царстве”.
Вопрос: “Почему Двое из ларца не смогли
выполнить указания Вовки?” – слайд 2 (2 мин.)

(Потому что Вовка неправильно давал указания,
неверно использовал Систему Команд Исполнителя,
а потом не смог исправить ошибки в своей же
программе.) Мы с вами жители Российского
государства, а не тридевятого, поэтому
постараемся сегодня научиться исправлять свои
ошибки, а заодно научим и Вовку.

2. Актуализация знаний.

3.

“Корзина идей – Системные слова и синтаксис”
– называю системные слова и синтаксис программы
на Pascal учащимся, получаю ответ. (2 мин.) – слайд 3.

  • С какого системного слова начинается программа?
  • Чем заканчивается каждая строка?
  • Какой знак ставится в конце всей программы?
  • Как будет “ввести текст”?
  • Как будет “считать переменную”?
  • С чего начинается описание переменных?
  • Какие типы данных вы знаете?
  • Как записывается условие?
  • Как записывается присваивание переменных?
  • Как записывается текст при выводе результата?

4. Изучение нового материала.

4.1. ПРОБНОЕ ДЕЙСТВИЕ:

4.1.1. Перед вами на экране представлена
программа. Я хотела бы, чтобы вы определили,
сколько в ней ошибок, и какие именно ошибки вы
обнаружили? (Обсуждение 1 мин.) – слайд 4.
4.1.2. Теперь давайте обратимся к системным словам
и ошибкам. Давайте посмотрим и проанализируем
системные слова с точки зрения английского
языка. (Обсуждение 2 мин.) Слайд 5.
4.1.3. А кто теперь сможет назвать, как правильно
данные ошибки выдал бы нам отладчик Pascal?
(Обсуждение 2 мин.) Слайд 6

4.2. ФИКСАЦИЯ ЗАТРУДНЕНИЙ

С вариантами ошибок возникли затруднения.
Почему? Потому что чаще мы обращаемся к помощи
учителя или пытаемся исправить программу
самостоятельно, проводя долгий поиск ошибок. (1
мин.)

4.3. ПРИЧИНА ЗАТРУДНЕНИЯ

Мы не знаем коды ошибок, не обращаем внимание на
перевод, не анализируем информацию, которую нам
выдает отладчик. (1 мин.)

4.4. ФОРМУЛИРОВКА ЦЕЛИ ЦЕЯТЕЛЬНОСТИ

Давайте попробуем сегодня с вами поиграть в
игру “Своя игра” и, используя критическое
мышление, определить различные варианты ошибок,
узнать, что же они означают и как их можно
исправить. Итак, мы подошли к теме нашего
сегодняшнего урока. Кто может ее сформулировать?
Правильно! “Ошибки. Отладка программ”. (1 мин.)
Слайд 7.

4.5. ПЛАН ОТКРЫТИЯ Слайд 8. (1 мин.)

4.5.1. Открыть нужную ячейку
4.5.2. Определить тип ошибки, применяя критическое
мышление, знания, полученные раннее на уроках
английского языка и информатики
4.5.3. Решить поставленные задачи

4.6. РЕАЛИЗАЦИЯ ПОСТРОЕННОГО ПРОЕКТА

Предлагаю вам для первого раза разделиться на
три команды. Вытаскиваем жетончик и делимся по
цвету (Физкультминутка).

Запускается игра. СЛАЙД 9.

Еще раз напоминаются правила игры. Первая
команда выбирает категорию и цену вопроса. Если
отвечает, то получает указанное количество
баллов, если нет – баллы снимаются. Дальше идет
выбор вопроса и цены, желающая команда дает
ответ. Баллы также начисляются или снимаются. (2
мин.)

5. Первичное закрепление во внешней
речи
(1мин.).

5.1. Ну что ж, как сказал Фредерик Брукс-мл “Чтобы
обнаруживать ошибки, программист должен иметь
ум, которому доставляет удовольствие находить
изъяны там, где, казалось, царят красота и
совершенство”. С ошибками в программах вы будете
сталкиваться столько, сколько будете
программировать. Но не ошибается тот, кто ничего
не делает.

5.2. А значит давайте пробовать и учиться на
своих ошибках.

6. Играем в игру “Своя
игра” (23 мин.).

7. А теперь давайте выполним рефлексию
нашей учебной деятельности (5 мин.)
Слайд
10.

“Я попрошу вас составить синквейн на тему
“Ошибка”. Кто знает, что такое синквейн? Чтобы
вам было проще, я приготовила вам заготовку.

1 существительное Ошибка
2 прилагательных  
3 глагола  
Свое отношение  

Заключение в форме
существительного (ассоциации с первым словом –
свое отношение)

 

8. Итог урока. Подведение результатов,
награждение команд при желании. (1 мин.).

Приложение 1 (презентация)

Приложение 2

Приложение 3

Приложение 4

Добавил:

Upload

Опубликованный материал нарушает ваши авторские права? Сообщите нам.

Вуз:

Предмет:

Файл:

Pascal.doc

Скачиваний:

26

Добавлен:

12.03.2016

Размер:

3.29 Mб

Скачать

Сообщения
об ошибках.
Ошибки в
программах делятся на те, которые
Паскаль замечает, и на те, что не замечает
и в принципе заметить не может. К первым
относятся все синтаксические погрешности,
например,BIGINвместоBEGIN.
Их Паскаль замечает еще на стадии
компиляции. На стадии выполнения он
замечает такие ошибки, какSqrt(-25),
то есть квадратный корень из ‑25. Но
вот, если вы, желая возвести числоa
в куб, вместоa*a*aпишетеa*a,
то этого не заметит ни один язык в мире.

Обнаружив
грамматическую ошибку, Паскаль выдает
золотыми буквами на красном фоне краткое
описание ошибки и ставит курсор в то
место программы, где, по его мнению, она
находится.

Обнаружив ошибку
на стадии выполнения, Паскаль выдает
белыми буквами на черном фоне окна
пользователя сообщение Runtime
error
и иногда золотыми буквами
на красном фоне краткое описание ошибки
и ставит курсор в то место программы,
где, по его мнению, она находится.

Вот наиболее
типичные для начинающих сообщения об
ошибках того и другого рода:

Сообщение

Перевод

Вероятная
причина ошибки

Unexpected end of file

Неожиданный
конец файла

Вы забыли
поставить точку после последнего
END.
Или не совпадает количествоbeginи количествоend

“;” expected

Ждал точку с
запятой

Вы забыли
поставить точку с запятой после
предыдущего оператора

“,” expected

Ждал запятую

Вы указали
слишком мало параметров в обращении
к подпрограмме

“)” expected

Ждал скобку “)”

Вы указали
слишком много параметров в обращении
к подпрограмме

Unknown identifier

Неизвестное
имя

Вы забыли описать
это имя в разделе описаний

Неправильно
записали стандартное имя, например,
ReedLnвместоReadLn

Type mismatch

Несовпадение
типов

В вашей программе
встречаются примерно такие «сладкие
парочки»: VAR c:String; … c:=1+2илиVAR
h:Integer; … h:=9/7

Duplicate identifier

Дубль имени

Одно и то же имя
описано два раза. Например,
VAR a, c, a :String;

Syntax error

Синтаксическая
ошибка

Паскаль
затрудняется назвать причину ошибки.
Часто причина в том, что вы забыли
взять строковую константу в кавычки

BEGIN
expected

Ждал BEGIN

Возможно, не
совпадает количество beginи количествоend

END
expected

Ждал
END

Возможно, не
совпадает количество beginи количествоend

String
constant exeeds line

Строковая
константа превышает допустимую длину

Вы забыли закрыть
кавычки в строковой константе

Line too long

Строчка слишком
длинна

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

Disk full

Диск заполнен

На вашем диске
не осталось места. Надо что-то стереть

Lower bound greater than
upper bound

Нижняя граница
диапазона больше верхней

Например, вы
вместо array[2..5]написалиarray[5..2].

Invalid floating point
operation

Неправильная
операция с вещественным результатом

Sqrt(-25)илиa/0или что-нибудь в этом роде

Ordinal expression
expected

Ждал выражение
порядкового типа

Например, вы
вместо for
i:=1
to
8
написали
for
i:=1
to
8.5

Error in expression

Ошибка в выражении

Например, вы
вместо k:=а*8написалиk:=а**8

Range check error

Ошибка проверки
диапазона

Переменная
в процессе выполнения программы
вышла за пределы допустимого диапазона,
как например, в 1.9

Constant out of range

Константа не в
диапазоне

Величина
константы в программе превосходит
допустимый диапазон

Invalid numeric format

Неправильный
числовой формат

Если, например,
вы по оператору ReadLn(k)в программеVAR
k:Integer; …. ReadLn(k) …
пытаетесь
ввести число 25.3

Более подробное
описание некоторых ошибок вы найдете
в 0.3.

Понять смысл
многих других сообщений об ошибках вам
поможет перевод некоторых часто
встречающихся в сообщениях слов:

expected
ждал

identifier
имя

invalid
неправильный

operation операция

error
ошибка

variable переменная

Невозможно создать
компилятор, который бы всегда точно
находил место и причину ошибки. Поэтому
приготовьтесь к тому, что некоторые
сообщения вы будете долго разглядывать
в недоумении. Считайте их не реальными
ошибками, а намеками на реальные ошибки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Всего: 44    1–20 | 21–40 | 41–44

Добавить в вариант

Задания Д24 C1 № 3640

Требовалось написать программу, которая решает уравнение «a |x| = b» относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.

Бейсик Python

INPUT a, b, x

IF a = 0 THEN

IF b = 0 THEN

PRINT «любое число»

ELSE

PRINT «нет решений»

ENDIF

ELSE

IF b = 0 THEN

PRINT «x =0»

ELSE

PRINT «x =»,b/a, «или x =»,-b/a

ENDIF

ENDIF

END

a = float(input())

b = float(input())

x = float(input())

if a == 0:

    if b == 0:

        print(‘любое число’)

    else:

        print(‘нет решений’)

else:

    if b == 0:

        print(‘x = 0’)

    else:

        print(‘x =’, b/a, ‘или x =’,-b/a)

Паскаль Алгоритмический язык

var a,b,x: real;

begin

readln(a,b,x);

if a = 0 then

    if b = 0 then

        write (‘любое число’)

    else

        write (‘нет решений’)

else

    if b = 0 then

        write(‘x = 0’)

    else

        write(‘x =’,b/a,’ или x =’,-b/a);

end.

алг

нач

    вещ a,b,x

    если a = 0 то

        если b = 0 то

            вывод «любое число»

        иначе вывод «нет решений»

        все

    иначе

        если b = 0 то

            вывод «x = 0»

        иначе

            вывод «x =», b/a, «или x =»,-b/a

    все

кон

Си++

#include <iostream>

using namespace std;

int main(void)

{float a,b,x;

cin >> a >> b >> x;

if (a==0)

if (b==0)

cout << «любое число»;

else

cout << «нет решений»;

else

if (b==0)

cout << «x = 0»;

else

cout << «x=» << b/a << «или x=» << -b/a << endl;

}

Последовательно выполните три задания:

1)  Приведите пример таких чисел a, b, x, при которых программа неверно решает поставленную задачу.

2)  Укажите, какая часть программы является лишней.

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


Задания Д24 C1 № 4568

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (x  — действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно.

Бейсик Паскаль

INPUT x

IF x>=-3 THEN

IF x<=9 THEN

IF x>1 THEN

PRINT «не принадлежит»

ELSE

PRINT «принадлежит»

ENDIF

ENDIF

ENDIF

END

var x: real;

begin

readln(x);

if x>=-3 then

if x<=9 then

if x>1 then

write(‘не принадлежит’)

else

write(‘принадлежит’)

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main(void)

{

float x;

cin >> x;

if(x>=-3)

if(x<=9)

if(x>1)

cout << «не принадлежит»;

else

cout << «принадлежит»;

}

алг

нач

вещ x

ввод x

если x>=-3 то

если x<=9 то

если x>1 то

вывод ‘не принадлежит’

иначе

вывод ‘принадлежит’

все

все

все

кон

Python

x = float(input())

if x >= -3:

    if x <= 9:

        if x > 1:

            print(«не принадлежит»)

        else:

            print(«принадлежит»)

Последовательно выполните следующее.

1.  Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –3, 1, 5 и 9) принадлежат заштрихованным областям (B и D соответственно).

В столбцах условий укажите «Да», если условие выполнится; «Нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».

2.  Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

Область Условие 1
(x >= –3)
Условие 2
(x <= 9)
Условие 3
(x > 1)
Программа выведет Область обрабатывается верно
A
B
C
D
E

Задания Д24 C1 № 5288

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.

Бэйсик Паскаль

INPUT х

IF х<=30 THEN

IF х<=20 THEN

IF х<=10 THEN

PRINT «не принадлежит»

ELSE

PRINT «принадлежит»

END IF

END IF

END IF

END

var х: real;

begin

readln(х);

if х<=30 then

if x<=20 then

if x<=10 then

write(‘не принадлежит’)

else

write(‘принадлежит’)

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

float x;

cin >> x;

if (x<=30) if (x<=20)

if (x<=10)

cout << «He принадлежит»;

else

cout << «принадлежит»;

алг

нач

вещ х

ввод х

если х<=30 то

если х<=20 то

если х<=10 то

вывод ’не принадлежит’

иначе

вывод ‘принадлежит’

все

все

все

кон

Python

x = int(input())

if х <= 30:

    if x <= 20:

        if х <= 10:

            print(«не принадлежит»)

        else:

            print(«принадлежит»)

Последовательно выполните следующее.

1.  Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.

Область Условие 1
(x<=30)
Условие 2
(x<=20)
Условие 3
(x<=10)
Программа
выведет
Область
обрабатывается
верно
A
B
C
D
E

В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».

2.  Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)


Задания Д24 C1 № 5320

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.

Бэйсик Паскаль

INPUT х

IF х<=30 THEN

IF х<=20 THEN

IF х<=10 THEN

PRINT «не принадлежит»

ELSE

PRINT «принадлежит»

END IF

END IF

END IF

END

var х: real;

begin

readln(х);

if х<=30 then

if x<=20 then

if x<=10 then

write(‘не принадлежит’)

else

write(‘принадлежит’)

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

float x;

cin >> x;

if (x<=30) if (x<=20)

if (x<=10)

cout << «He принадлежит»;

else

cout << «принадлежит»;

}

алг

нач

вещ х

ввод х

если х<=30 то

если х<=20 то

если х<=10 то

вывод ’не принадлежит’

иначе

вывод ‘принадлежит’

все

все

все

кон

Python

x = int(input())

if х <= 30:

    if x <= 20:

        if х <= 10:

            print(«не принадлежит»)

        else:

            print(«принадлежит»)

Последовательно выполните следующее.

1.  Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.

Область Условие 1
(x<=30)
Условие 2
(x<=20)
Условие 3
(x<=10)
Программа
выведет
Область
обрабатывается
верно
A
B
C
D
E

В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».

2.  Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)


Задания Д24 C1 № 5468

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = N mod 10

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := N mod 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = N % 10;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := mod(N, 10)

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = n % 10

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 532.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5500

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N > 9

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N 10

WEND

PRINT max digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N > 9 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max_digit = 9;

    while (N > 9)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N /10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N > 9

         digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

    N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 9

while n > 9:

    digit = n % 10

    if max_digit < digit:

        max_digit = digit

    n //= 10;

print(max_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 738.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5596

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = 0

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := 0;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = 0;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := 0

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = 0

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 429.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5692

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 10

WHILE N >= 10

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main ()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max digit = 10;

    while (N >= 10)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N / 10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 10

    нц пока N >= 10

        digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 10

while n >= 10:

    digit = n % 10

    if max_digit < digit:

        max_digit = digit

    n //= 10

print(max_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 528.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5852

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 0

WHILE N > 0

    digit = N MOD 10

    IF digit > min_digit THEN

        min_digit = digit

    END IF

    N = N 10

WEND

PRINT min_digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit > min_digit then

            min_digit := digit;

        N := N div 10;

    end;

    writeln(min_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main ()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit > min_digit)

            min_digit = digit;

        N = N / 10;

    }

    cout « min_digit « endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 0

    нц пока N > 0

        digit := mod(N, 10)

        если digit > min_digit то

            min_digit := digit

        все

        N := div(N, 10)

    кц

    вывод min_digit

кон

Python

N = int(input())

min_digit = 0

while N > 0:

    digit = N % 10

    if digit > min_digit:

        min_digit = digit

    N //= 10;

print(min_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 461.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5884

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit < min_digit THEN

        digit = min_digit

    END IF

    N = N 10

WEND

PRINT min_digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit < min_digit then

            digit := min_digit;

        N := N div 10;

    end;

    writeln(min_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit < min_digit)

            digit = min_digit;

        N = N / 10;

    }

    cout << min_digit << endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit < min_digit то

            digit := min_digit

        все

        N := div(N, 10)

    кц

    вывод min_digit

кон

Python

n = int(input())

min_digit = 9

while n >= 10:

    digit = n % 10

    if digit < min_digit:

        digit = min_digit

    n //= 10

print(min_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 823.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5948

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 0

WHILE N > 0

    digit = N MOD 10

    IF digit < min_digit THEN

        min_digit = digit

    END IF

    N = N 10

WEND

PRINT digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit < min_digit then

            min_digit := digit;

        N := N div 10;

    end;

    writeln(digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit < min_digit)

            min_digit = digit;

        N = N / 10;

    }

    cout « digit « endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 0

    нц пока N > 0

        digit := mod(N, 10)

        если digit < min_digit то

            min_digit := digit

        все

        N := div(N, 10)

    кц

    вывод digit

кон

Python

n = int(input())

min_digit = 0

while n > 0:

    digit = n % 10

    if digit < min_digit:

        min_digit = digit

    n //= 10

print(digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 862.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5980

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 9

WHILE N >= 10

digit = N MOD 10

IF digit < min_digit THEN

min_digit = digit

END IF

N = N 10

WEND

PRINT digit

END

var N: longint;

digit, min_digit: integer;

begin

readln(N);

min_digit := 9;

while N >= 10 do

begin

digit := N mod 10;

if digit < min_digit then

min_digit := digit;

N := N div 10;

end;

writeln(digit);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int digit, min_digit;

cin >> N;

min_digit = 9;

while (N >= 10)

{

digit = N % 10;

if (digit < min_digit)

min_digit = digit;

N = N / 10;

}

cout « digit « endl;

}

алг

нач

цел N, digit, min_digit

ввод N

min_digit := 9

нц пока N >= 10

digit := mod(N, 10)

если digit < min_digit то

min_digit := digit

все

N := div(N, 10)

кц

вывод digit

кон

Python

N = int(input())

min_digit = 9

while N >= 10:

    digit = N % 10

    if digit < min_digit:

        min_digit = digit

    N //= 10

print(digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 547.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 6014

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit > max_digit THEN

        max_digit = digit

    END IF

    N = N 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit > max_digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit > max_digit)

            max_digit = digit;

        N = N /10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit > max_digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 9

while n >= 10:

    digit = n % 10

    if digit > max_digit:

        max_digit = digit

    n //= 10

print(max_digit)

Последовательно выполните следующее.

1.   Напишите, что выведет эта программа при вводе числа 423.

2.   Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 6968

Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры  — единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.

Программист торопился и написал программу неправильно.

Бейсик Паскаль

DIM N, R, T AS LONG

DIM d AS INTEGER

INPUT N

R = 0

T = 1

WHILE N > 0

d = N MOD 10

IF d <> 1 THEN

R = R + d * T

T = T + 1

END IF

N = N 10

WEND

PRINT T

END

var N, R, T: longint;

d: integer;

begin

readln(N);

R:=0;

T:=1;

while N>0 do begin

d := N mod 10;

if d<>1 then begin

R := R + d*T;

T := T+1

end;

N := N div 10;

end;

writeln(T);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N, R, T;

int d;

cin >> N;

R = 0;

T = 1;

while (N > 0) {

d = N % 10;

if (d != 1) {

R = R + d*T;

T = T+1;

}

N = N / 10;

}

cout << T;

}

алг

нач

цел N, R, T, d

ввод N

R := 0

T := 1

нц пока N > 0

d := mod(N, 10)

если d <> 1 то

R := R + d*T

T := T+1

все

N := div(N, 10)

кц

вывод T

кон

Python

N = int(input())

R=0

T=1

while N > 0:

    d = N % 10

    if d != 1:

        R = R + d*T

        T = T+1

    N //= 10

print(T)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 314.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  Выпишите строку, в которой сделана ошибка.

2)  Укажите, как исправить ошибку  — приведите правильный вариант строки.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.


Задания Д24 C1 № 7000

Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех пятёрок, порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 192012. Число, в котором все цифры – пятёрки и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.

Программист торопился и написал программу неправильно.

Бейсик Паскаль

DIM N, R, T AS LONG

DIM d AS INTEGER

INPUT N

R = 0

T = 1

WHILE N > 0

d = N MOD 10

IF d <> 5 THEN

R = R + d * T

T = T + 1

END IF

N = N 10

WEND

PRINT T

END

var N, R, T: longint;

d: integer;

begin

readln(N);

R:=0;

T:=1;

while N>0 do begin

d := N mod 10;

if d<>5 then begin

R := R + d*T;

T := T+1

end;

N := N div 10;

end;

writeln(T);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N, R, T;

int d;

cin >> N;

R = 0;

T = 1;

while (N > 0) {

d = N % 10;

if (d != 5) {

R = R + d*T;

T = T+1;

}

N = N / 10;

}

cout << T;

}

алг

нач

цел N, R, T, d

ввод N

R := 0

T := 1

нц пока N > 0

d := mod(N, 10)

если d <> 5 то

R := R + d*T

T := T+1

все

N := div(N, 10)

кц

вывод T

кон

Python

n = int(input())

R=0

T=1

while n > 0:

    d = n % 10

    if d != 5:

        R += d*T

        T += 1

    n //= 10;

print(T)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 354.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  Выпишите строку, в которой сделана ошибка.

2)  Укажите, как исправить ошибку  — приведите правильный вариант строки.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.


Задания Д24 C1 № 7469

i

На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

Бейсик Python

CONST n = 4

count = 0

maximum = 999

FOR I = 1 TO n

INPUT x

IF x mod 2 <> 0 THEN

count = count + 1

IF x > maximum THEN

maximum = I

END IF

END IF

NEXT I

IF count > 0 THEN

PRINT count

PRINT maximum

ELSE

PRINT «NO»

END IF

n = 4

count = 0

maximum = 999

for i in range(1, n + 1):

    x = int(input())

    if x % 2 != 0:

        count += 1

        if x > maximum:

            maximum = i

if count > 0:

    print(count)

    print(maximum)

else:

    print(«NO»)

Паскаль Алгоритмический язык

const n = 4;

var i, x: integer;

var maximum, count: integer;

begin

count := 0;

maximum := 999;

for i := 1 to n do

begin

read(x);

if x mod 2 <> 0 then

begin

count := count + 1;

if x > maximum then

maximum := i

end

end;

if count > 0 then

begin

writeln(count);

writeln(maximum);

end

else

writeln(‘NO’)

end.

алг

нач

цел n = 4

цел i, x

цел maximum, count

count := 0

maximum := 999

нц для i от 1 до n

ввод x

если mod(x, 2) <> 0 то

count := count + 1

если x > maximum то

maximum := i

все

все

кц

если count > 0 то

вывод count, нс

вывод maximum

иначе

вывод «NO»

все

кон

Си++

#include <iostream>

using namespace std;

int main(void)

{

const int n = 4;

int i, x, maximum, count;

count = 0;

maximum = 999;

for (i = 1; i <= n; i++) {

cin >> x;

if (x % 2 != 0) {

count++;

if (x > maximum)

maximum = i;

}

}

if (count > 0) {

cout << count << endl;

cout << maximum << endl;

}

else

cout << «NOn»;

}

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе последовательности: 2 9 4 3

2.  Приведите пример такой последовательности, содержащей хотя бы одно нечётное число, что, несмотря на ошибки, программа печатает правильный ответ.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е приведите правильный вариант строки.

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


Задания Д24 C1 № 7681

Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.

Бейсик Python

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 0

D = N MOD 10

N = N 10

sum = d

WEND

PRINT sum

END

N = int(input())

sum = 1

while N > 0:

    d = N%10

    N = N // 10

    sum = d

print(sum)

Паскаль Алгоритмический язык

var N: longint;

sum, d: integer;

begin

readln(N);

sum := 1;

while N > 0 do

begin

d := N mod 10;

N := N div 10;

sum := d;

end;

writeln(sum);

end.

алг

нач

цел N, d, sum

ввод N

sum := 1

нц пока N > 0

d := mod(N, 10)

N := div(N, 10)

sum := d

кц

вывод sum

кон

Си++

#include <iostream>

using namespace std;

int main() {

long int N;

int sum, d;

cin >> N;

sum = 1;

while (N > 0) {

d = N%10;

N = N / 10;

sum = d;

}

cout « sum « endl;

return 0;

}

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 256.

2.  Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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


Задания Д24 C1 № 7708

Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.

Бейсик Python

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 0

D = N MOD 10

N = N 10

sum = sum + 1

WEND

PRINT sum

END

N = int(input())

sum = 1

while N > 0:

    d = N%10

    N = N // 10

    sum = sum + 1

print(sum)

Паскаль Алгоритмический язык

var N: longint;

sum, d: integer;

begin

readln(N);

sum := 1;

while N > 0 do

begin

d := N mod 10;

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

алг

нач

цел N, d, sum

ввод N

sum := 1

нц пока N > 0

d := mod(N, 10)

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Си++

#include

int main() {

long int N;

int sum, d;

cin >> N;

sum = 1;

while (N > 0) {

d = N%10;

N = N / 10;

sum = sum + 1;

}

cout « sum « endl;

return 0;

}

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 256.

2.  Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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


Задания Д24 C1 № 7769

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

Бейсик Python

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + x MOD 2

x = x 10

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+x % 2

    x = x // 10

print(cnt)

Паскаль Алгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + x mod 2;

x := x div 10

end;

writeln(cnt);

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+mod(x,2)

x := div(x, 10)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + x%2;

x = x /10;

}

cout « cnt « endl;

}

Последовательно выполните следующее:

1.  Напишите, что выведет эта программа при вводе числа 15.

2.  Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.

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

Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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


Задания Д24 C1 № 7796

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

Бейсик Python

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + 1

x = x MOD 2

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+1

    x = x % 2

print(cnt)

Паскаль Алгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + 1;

x := x mod 2

end;

writeln(cnt)

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+1

x := mod(x, 2)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + 1;

x = x % 2;

}

cout « cnt « endl;

}

Последовательно выполните следующее:

1.  Напишите, что выведет эта программа при вводе числа 6.

2.  Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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

Всего: 44    1–20 | 21–40 | 41–44

Учитель информатики Еланцев А.Н. и математики Каштанова И.А.

Урок по информатике:

Исправление ошибок в простой программе с условными операторами С1.

Тип урока: применение знаний на практике

Форма урока: практикум; интегрированный.

Цель данного типа урока — применение знаний на практике.

Задачи:

  • образовательные: научить применять полученные знания на практике; оперировать имеющимся потенциалом в конкретной ситуации; закрепить умения и навыки работы с функциями, закрепить правила построения программы на Паскале; научить составлять сложные условия для реализации программы; продолжить работу над понятийным аппаратом (условный оператор); научить отстаивать свою точку зрения; закрепить умения вычленять проблемы.

  • воспитательные: вовлечь в активную деятельность; формировать культуру, в том числе и экологическую, формировать гуманные качества личности учащихся; совершенствовать навыки общения.

  • развивающие: совершенствовать умения работы с источниками знаний; совершенствовать навыки анализа, обобщения и т.п.; умения выступать и защищать свою точку зрения; развивать творческие способности; развивать коммуникативные навыки работы в группах; развивать познавательный интерес к окружающей жизни.

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

Тема урока: Исправление ошибок в простой программе с условными операторами С1.

Цели и задачи урока:

-образовательные

  • способствовать формированию навыков решения практических задач уровня С1 по информатике с использованием знаний свойств и графиков функций;

  • обеспечить в ходе урока формирование навыков работы с графиками функций;

  • повторить свойства функций;

  • закрепить правила построения программы на Паскале;

  • научить составлять сложные условия для реализации программы; продолжить работу над понятийным аппаратом (условный оператор);

-воспитательные

  • воспитывать навыки культуры работы с компьютером;

  • формировать навыки самоконтроля и самопроверки;

-развивающие

  • показать неразрывную связь между науками;

  • развивать чувство ответственности и навыки самостоятельного труда и самоконтроля;

  • развивать логическое мышление, кругозор учащихся;

  • вырабатывать умение классифицировать и обобщать;

Оборудование:

  • мультимедийный проектор;

  • мультимедийная презентация урока;

  • персональные компьютеры;

  • раздаточный материал, тригонометрические круги.

Структура урока

1 этап: организационный, постановки цели.

Тема урока: Исправление ошибок в простой программе с условными операторами С1.

Урок будут вести два учителя математики и информатики. Работать на уроке вы будете в группе по 4 человека, в конце работы коротко представите результаты своей работы.

2 этап: актуализации знаний.

Для решения задач 1 части С необходимо обладать знаниями не только в области программирования, но и в области математики, так как она является основой для составления неравенств и решения задач этого типа.

Для разминки разберем следующие задания по математике, повторим методы решения неравенств. Решите неравенства.

Бейсик Паскаль

INPUT x

IF x>=-3 THEN

IF x<=9 THEN

IF x>1 THEN

PRINT «не принадлежит»

ELSE

PRINT «принадлежит»

ENDIF

ENDIF

ENDIF

END

var x: real;

begin

readln(x);

if x>=-3 then

if x<=9 then

if x>1 then

write(‘не принадлежит’)

else

write(‘принадлежит’)

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main(void)

{

float x;

cin >> x;

if(x>=-3)

if(x<=9)

if(x>1)

cout << «не принадлежит»;

else

cout << «принадлежит»;

}

алг

нач

вещ x

ввод x

если x>=-3 то

если x<=9 то

если x>1 то

вывод ‘не принадлежит’

иначе

вывод ‘принадлежит’

все

все

все

кон

Python

x = float(input())

if x >= -3:

    if x <= 9:

        if x > 1:

            print(«не принадлежит»)

        else:

            print(«принадлежит»)

Последовательно выполните следующее.

1.  Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –3, 1, 5 и 9) принадлежат заштрихованным областям (B и D соответственно).

В столбцах условий укажите «Да», если условие выполнится; «Нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».

2.  Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

Область Условие 1
(x >= –3)
Условие 2
(x <= 9)
Условие 3
(x > 1)
Программа выведет Область обрабатывается верно
A
B
C
D
E

Задания Д24 C1 № 5288

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.

Бэйсик Паскаль

INPUT х

IF х<=30 THEN

IF х<=20 THEN

IF х<=10 THEN

PRINT «не принадлежит»

ELSE

PRINT «принадлежит»

END IF

END IF

END IF

END

var х: real;

begin

readln(х);

if х<=30 then

if x<=20 then

if x<=10 then

write(‘не принадлежит’)

else

write(‘принадлежит’)

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

float x;

cin >> x;

if (x<=30) if (x<=20)

if (x<=10)

cout << «He принадлежит»;

else

cout << «принадлежит»;

алг

нач

вещ х

ввод х

если х<=30 то

если х<=20 то

если х<=10 то

вывод ’не принадлежит’

иначе

вывод ‘принадлежит’

все

все

все

кон

Python

x = int(input())

if х <= 30:

    if x <= 20:

        if х <= 10:

            print(«не принадлежит»)

        else:

            print(«принадлежит»)

Последовательно выполните следующее.

1.  Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.

Область Условие 1
(x<=30)
Условие 2
(x<=20)
Условие 3
(x<=10)
Программа
выведет
Область
обрабатывается
верно
A
B
C
D
E

В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».

2.  Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)


Задания Д24 C1 № 5320

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.

Бэйсик Паскаль

INPUT х

IF х<=30 THEN

IF х<=20 THEN

IF х<=10 THEN

PRINT «не принадлежит»

ELSE

PRINT «принадлежит»

END IF

END IF

END IF

END

var х: real;

begin

readln(х);

if х<=30 then

if x<=20 then

if x<=10 then

write(‘не принадлежит’)

else

write(‘принадлежит’)

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

float x;

cin >> x;

if (x<=30) if (x<=20)

if (x<=10)

cout << «He принадлежит»;

else

cout << «принадлежит»;

}

алг

нач

вещ х

ввод х

если х<=30 то

если х<=20 то

если х<=10 то

вывод ’не принадлежит’

иначе

вывод ‘принадлежит’

все

все

все

кон

Python

x = int(input())

if х <= 30:

    if x <= 20:

        if х <= 10:

            print(«не принадлежит»)

        else:

            print(«принадлежит»)

Последовательно выполните следующее.

1.  Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.

Область Условие 1
(x<=30)
Условие 2
(x<=20)
Условие 3
(x<=10)
Программа
выведет
Область
обрабатывается
верно
A
B
C
D
E

В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».

2.  Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)


Задания Д24 C1 № 5468

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = N mod 10

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := N mod 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = N % 10;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := mod(N, 10)

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = n % 10

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 532.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5500

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N > 9

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N 10

WEND

PRINT max digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N > 9 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max_digit = 9;

    while (N > 9)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N /10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N > 9

         digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

    N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 9

while n > 9:

    digit = n % 10

    if max_digit < digit:

        max_digit = digit

    n //= 10;

print(max_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 738.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5596

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = 0

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := 0;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = 0;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := 0

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = 0

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 429.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5692

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 10

WHILE N >= 10

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main ()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max digit = 10;

    while (N >= 10)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N / 10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 10

    нц пока N >= 10

        digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 10

while n >= 10:

    digit = n % 10

    if max_digit < digit:

        max_digit = digit

    n //= 10

print(max_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 528.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5852

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 0

WHILE N > 0

    digit = N MOD 10

    IF digit > min_digit THEN

        min_digit = digit

    END IF

    N = N 10

WEND

PRINT min_digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit > min_digit then

            min_digit := digit;

        N := N div 10;

    end;

    writeln(min_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main ()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit > min_digit)

            min_digit = digit;

        N = N / 10;

    }

    cout « min_digit « endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 0

    нц пока N > 0

        digit := mod(N, 10)

        если digit > min_digit то

            min_digit := digit

        все

        N := div(N, 10)

    кц

    вывод min_digit

кон

Python

N = int(input())

min_digit = 0

while N > 0:

    digit = N % 10

    if digit > min_digit:

        min_digit = digit

    N //= 10;

print(min_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 461.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5884

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit < min_digit THEN

        digit = min_digit

    END IF

    N = N 10

WEND

PRINT min_digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit < min_digit then

            digit := min_digit;

        N := N div 10;

    end;

    writeln(min_digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit < min_digit)

            digit = min_digit;

        N = N / 10;

    }

    cout << min_digit << endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit < min_digit то

            digit := min_digit

        все

        N := div(N, 10)

    кц

    вывод min_digit

кон

Python

n = int(input())

min_digit = 9

while n >= 10:

    digit = n % 10

    if digit < min_digit:

        digit = min_digit

    n //= 10

print(min_digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 823.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5948

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бэйсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 0

WHILE N > 0

    digit = N MOD 10

    IF digit < min_digit THEN

        min_digit = digit

    END IF

    N = N 10

WEND

PRINT digit

END

var N: longint;

    digit, min_digit: integer;

begin

    readln(N);

    min_digit := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit < min_digit then

            min_digit := digit;

        N := N div 10;

    end;

    writeln(digit);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, min_digit;

    cin >> N;

    min_digit = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit < min_digit)

            min_digit = digit;

        N = N / 10;

    }

    cout « digit « endl;

}

алг

нач

    цел N, digit, min_digit

    ввод N

    min_digit := 0

    нц пока N > 0

        digit := mod(N, 10)

        если digit < min_digit то

            min_digit := digit

        все

        N := div(N, 10)

    кц

    вывод digit

кон

Python

n = int(input())

min_digit = 0

while n > 0:

    digit = n % 10

    if digit < min_digit:

        min_digit = digit

    n //= 10

print(digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 862.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 5980

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

min_digit = 9

WHILE N >= 10

digit = N MOD 10

IF digit < min_digit THEN

min_digit = digit

END IF

N = N 10

WEND

PRINT digit

END

var N: longint;

digit, min_digit: integer;

begin

readln(N);

min_digit := 9;

while N >= 10 do

begin

digit := N mod 10;

if digit < min_digit then

min_digit := digit;

N := N div 10;

end;

writeln(digit);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int digit, min_digit;

cin >> N;

min_digit = 9;

while (N >= 10)

{

digit = N % 10;

if (digit < min_digit)

min_digit = digit;

N = N / 10;

}

cout « digit « endl;

}

алг

нач

цел N, digit, min_digit

ввод N

min_digit := 9

нц пока N >= 10

digit := mod(N, 10)

если digit < min_digit то

min_digit := digit

все

N := div(N, 10)

кц

вывод digit

кон

Python

N = int(input())

min_digit = 9

while N >= 10:

    digit = N % 10

    if digit < min_digit:

        min_digit = digit

    N //= 10

print(digit)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 547.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 6014

i

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик Паскаль

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit > max_digit THEN

        max_digit = digit

    END IF

    N = N 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit > max_digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

    long int N;

    int digit, max_digit;

    cin >> N;

    max_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit > max_digit)

            max_digit = digit;

        N = N /10;

    }

    cout « max_digit « endl;

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit > max_digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

Python

n = int(input())

max_digit = 9

while n >= 10:

    digit = n % 10

    if digit > max_digit:

        max_digit = digit

    n //= 10

print(max_digit)

Последовательно выполните следующее.

1.   Напишите, что выведет эта программа при вводе числа 423.

2.   Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку,  — приведите правильный вариант строки.

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


Задания Д24 C1 № 6968

Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры  — единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.

Программист торопился и написал программу неправильно.

Бейсик Паскаль

DIM N, R, T AS LONG

DIM d AS INTEGER

INPUT N

R = 0

T = 1

WHILE N > 0

d = N MOD 10

IF d <> 1 THEN

R = R + d * T

T = T + 1

END IF

N = N 10

WEND

PRINT T

END

var N, R, T: longint;

d: integer;

begin

readln(N);

R:=0;

T:=1;

while N>0 do begin

d := N mod 10;

if d<>1 then begin

R := R + d*T;

T := T+1

end;

N := N div 10;

end;

writeln(T);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N, R, T;

int d;

cin >> N;

R = 0;

T = 1;

while (N > 0) {

d = N % 10;

if (d != 1) {

R = R + d*T;

T = T+1;

}

N = N / 10;

}

cout << T;

}

алг

нач

цел N, R, T, d

ввод N

R := 0

T := 1

нц пока N > 0

d := mod(N, 10)

если d <> 1 то

R := R + d*T

T := T+1

все

N := div(N, 10)

кц

вывод T

кон

Python

N = int(input())

R=0

T=1

while N > 0:

    d = N % 10

    if d != 1:

        R = R + d*T

        T = T+1

    N //= 10

print(T)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 314.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  Выпишите строку, в которой сделана ошибка.

2)  Укажите, как исправить ошибку  — приведите правильный вариант строки.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.


Задания Д24 C1 № 7000

Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех пятёрок, порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 192012. Число, в котором все цифры – пятёрки и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.

Программист торопился и написал программу неправильно.

Бейсик Паскаль

DIM N, R, T AS LONG

DIM d AS INTEGER

INPUT N

R = 0

T = 1

WHILE N > 0

d = N MOD 10

IF d <> 5 THEN

R = R + d * T

T = T + 1

END IF

N = N 10

WEND

PRINT T

END

var N, R, T: longint;

d: integer;

begin

readln(N);

R:=0;

T:=1;

while N>0 do begin

d := N mod 10;

if d<>5 then begin

R := R + d*T;

T := T+1

end;

N := N div 10;

end;

writeln(T);

end.

Си++ Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N, R, T;

int d;

cin >> N;

R = 0;

T = 1;

while (N > 0) {

d = N % 10;

if (d != 5) {

R = R + d*T;

T = T+1;

}

N = N / 10;

}

cout << T;

}

алг

нач

цел N, R, T, d

ввод N

R := 0

T := 1

нц пока N > 0

d := mod(N, 10)

если d <> 5 то

R := R + d*T

T := T+1

все

N := div(N, 10)

кц

вывод T

кон

Python

n = int(input())

R=0

T=1

while n > 0:

    d = n % 10

    if d != 5:

        R += d*T

        T += 1

    n //= 10;

print(T)

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 354.

2.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  Выпишите строку, в которой сделана ошибка.

2)  Укажите, как исправить ошибку  — приведите правильный вариант строки.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.


Задания Д24 C1 № 7469

i

На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

Бейсик Python

CONST n = 4

count = 0

maximum = 999

FOR I = 1 TO n

INPUT x

IF x mod 2 <> 0 THEN

count = count + 1

IF x > maximum THEN

maximum = I

END IF

END IF

NEXT I

IF count > 0 THEN

PRINT count

PRINT maximum

ELSE

PRINT «NO»

END IF

n = 4

count = 0

maximum = 999

for i in range(1, n + 1):

    x = int(input())

    if x % 2 != 0:

        count += 1

        if x > maximum:

            maximum = i

if count > 0:

    print(count)

    print(maximum)

else:

    print(«NO»)

Паскаль Алгоритмический язык

const n = 4;

var i, x: integer;

var maximum, count: integer;

begin

count := 0;

maximum := 999;

for i := 1 to n do

begin

read(x);

if x mod 2 <> 0 then

begin

count := count + 1;

if x > maximum then

maximum := i

end

end;

if count > 0 then

begin

writeln(count);

writeln(maximum);

end

else

writeln(‘NO’)

end.

алг

нач

цел n = 4

цел i, x

цел maximum, count

count := 0

maximum := 999

нц для i от 1 до n

ввод x

если mod(x, 2) <> 0 то

count := count + 1

если x > maximum то

maximum := i

все

все

кц

если count > 0 то

вывод count, нс

вывод maximum

иначе

вывод «NO»

все

кон

Си++

#include <iostream>

using namespace std;

int main(void)

{

const int n = 4;

int i, x, maximum, count;

count = 0;

maximum = 999;

for (i = 1; i <= n; i++) {

cin >> x;

if (x % 2 != 0) {

count++;

if (x > maximum)

maximum = i;

}

}

if (count > 0) {

cout << count << endl;

cout << maximum << endl;

}

else

cout << «NOn»;

}

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе последовательности: 2 9 4 3

2.  Приведите пример такой последовательности, содержащей хотя бы одно нечётное число, что, несмотря на ошибки, программа печатает правильный ответ.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е приведите правильный вариант строки.

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


Задания Д24 C1 № 7681

Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.

Бейсик Python

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 0

D = N MOD 10

N = N 10

sum = d

WEND

PRINT sum

END

N = int(input())

sum = 1

while N > 0:

    d = N%10

    N = N // 10

    sum = d

print(sum)

Паскаль Алгоритмический язык

var N: longint;

sum, d: integer;

begin

readln(N);

sum := 1;

while N > 0 do

begin

d := N mod 10;

N := N div 10;

sum := d;

end;

writeln(sum);

end.

алг

нач

цел N, d, sum

ввод N

sum := 1

нц пока N > 0

d := mod(N, 10)

N := div(N, 10)

sum := d

кц

вывод sum

кон

Си++

#include <iostream>

using namespace std;

int main() {

long int N;

int sum, d;

cin >> N;

sum = 1;

while (N > 0) {

d = N%10;

N = N / 10;

sum = d;

}

cout « sum « endl;

return 0;

}

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 256.

2.  Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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


Задания Д24 C1 № 7708

Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.

Бейсик Python

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 0

D = N MOD 10

N = N 10

sum = sum + 1

WEND

PRINT sum

END

N = int(input())

sum = 1

while N > 0:

    d = N%10

    N = N // 10

    sum = sum + 1

print(sum)

Паскаль Алгоритмический язык

var N: longint;

sum, d: integer;

begin

readln(N);

sum := 1;

while N > 0 do

begin

d := N mod 10;

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

алг

нач

цел N, d, sum

ввод N

sum := 1

нц пока N > 0

d := mod(N, 10)

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Си++

#include

int main() {

long int N;

int sum, d;

cin >> N;

sum = 1;

while (N > 0) {

d = N%10;

N = N / 10;

sum = sum + 1;

}

cout « sum « endl;

return 0;

}

Последовательно выполните следующее.

1.  Напишите, что выведет эта программа при вводе числа 256.

2.  Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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


Задания Д24 C1 № 7769

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

Бейсик Python

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + x MOD 2

x = x 10

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+x % 2

    x = x // 10

print(cnt)

Паскаль Алгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + x mod 2;

x := x div 10

end;

writeln(cnt);

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+mod(x,2)

x := div(x, 10)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + x%2;

x = x /10;

}

cout « cnt « endl;

}

Последовательно выполните следующее:

1.  Напишите, что выведет эта программа при вводе числа 15.

2.  Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.

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

Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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


Задания Д24 C1 № 7796

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

Бейсик Python

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + 1

x = x MOD 2

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+1

    x = x % 2

print(cnt)

Паскаль Алгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + 1;

x := x mod 2

end;

writeln(cnt)

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+1

x := mod(x, 2)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + 1;

x = x % 2;

}

cout « cnt « endl;

}

Последовательно выполните следующее:

1.  Напишите, что выведет эта программа при вводе числа 6.

2.  Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.

3.  Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1)  выпишите строку, в которой сделана ошибка;

2)  укажите, как исправить ошибку, т. е. приведите правильный вариант строки.

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

Всего: 44    1–20 | 21–40 | 41–44

Учитель информатики Еланцев А.Н. и математики Каштанова И.А.

Урок по информатике:

Исправление ошибок в простой программе с условными операторами С1.

Тип урока: применение знаний на практике

Форма урока: практикум; интегрированный.

Цель данного типа урока — применение знаний на практике.

Задачи:

  • образовательные: научить применять полученные знания на практике; оперировать имеющимся потенциалом в конкретной ситуации; закрепить умения и навыки работы с функциями, закрепить правила построения программы на Паскале; научить составлять сложные условия для реализации программы; продолжить работу над понятийным аппаратом (условный оператор); научить отстаивать свою точку зрения; закрепить умения вычленять проблемы.

  • воспитательные: вовлечь в активную деятельность; формировать культуру, в том числе и экологическую, формировать гуманные качества личности учащихся; совершенствовать навыки общения.

  • развивающие: совершенствовать умения работы с источниками знаний; совершенствовать навыки анализа, обобщения и т.п.; умения выступать и защищать свою точку зрения; развивать творческие способности; развивать коммуникативные навыки работы в группах; развивать познавательный интерес к окружающей жизни.

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

Тема урока: Исправление ошибок в простой программе с условными операторами С1.

Цели и задачи урока:

-образовательные

  • способствовать формированию навыков решения практических задач уровня С1 по информатике с использованием знаний свойств и графиков функций;

  • обеспечить в ходе урока формирование навыков работы с графиками функций;

  • повторить свойства функций;

  • закрепить правила построения программы на Паскале;

  • научить составлять сложные условия для реализации программы; продолжить работу над понятийным аппаратом (условный оператор);

-воспитательные

  • воспитывать навыки культуры работы с компьютером;

  • формировать навыки самоконтроля и самопроверки;

-развивающие

  • показать неразрывную связь между науками;

  • развивать чувство ответственности и навыки самостоятельного труда и самоконтроля;

  • развивать логическое мышление, кругозор учащихся;

  • вырабатывать умение классифицировать и обобщать;

Оборудование:

  • мультимедийный проектор;

  • мультимедийная презентация урока;

  • персональные компьютеры;

  • раздаточный материал, тригонометрические круги.

Структура урока

1 этап: организационный, постановки цели.

Тема урока: Исправление ошибок в простой программе с условными операторами С1.

Урок будут вести два учителя математики и информатики. Работать на уроке вы будете в группе по 4 человека, в конце работы коротко представите результаты своей работы.

2 этап: актуализации знаний.

Для решения задач 1 части С необходимо обладать знаниями не только в области программирования, но и в области математики, так как она является основой для составления неравенств и решения задач этого типа.

Для разминки разберем следующие задания по математике, повторим методы решения неравенств. Решите неравенства.

Можно рассмотреть

В заданиях по информатике типа С1 вы тоже работаете с пересечением множеств решений, с их геометрическим изображением. Для того чтобы верно найти ошибку в программе, надо знать некоторые параметры, ограничивающие заштрихованную область.

3 этап: Повторение знаний по математике для успешного выполнения заданий по информатике.

Так как очень часто в задании типа С1, содержится тригонометрическая функция синус или косинус, то повторим свойства тригонометрических функций.

График функции y=sin x

Свойства функции y=sin x

D(f)= R;

E(f)=[-1;1]

при x=π/2+2πn, n∈Z принимает наибольшее значение y=1,

при x=-π/2+2πn, n∈Z принимает наименьшее значение y=-1;

периодическая с основным периодом 2π;

нечетная;

пересекает ось абсцисс в точках (π+πn;0), n∈Z

ось ординат в точке (0;0);

График функции y=cos x

Свойства функции y=cos x

D(f)= R;

E(f)=[-1;1]

при x=0+2πn, n∈Z принимает наибольшее значение y=1,

при x=π+2πn принимает наименьшее значение y=-1;

периодическая с основным периодом 2π;

четная;

пересекает ось абсцисс в точках (π/2+πn;0), n∈Z

ось ординат в точке (0;1);

Рекомендации для выполнения заданий С1.

По математике

Для функций вспомни:

Область определения

Множество значений

Максимум и минимум функции

Периодичность

Четность(симметрия графика)

Точки пересечения графика функции с осями

Точки пересечения с другими графиками

Значения функции в точках, ограничивающих заштрихованную область

Уравнения предложенной функции

…………………………………Информатика………………………………………….

В задачах С1 содержится решение, но как правило, оно является неполным.

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

Как же искать такую ошибку в программе? Самый правильный путь – это решить задачу самостоятельно, рассмотрев все возможные случаи, изначально не опираясь на исходный код программы. После этого соотнести написанную самостоятельно программу с её исходным кодом. И после этого написать код по всем правилам, которые будут присущи данной программе. Но для того, что бы выполнить эти операции, давайте повторим с вами:

Условный оператор (ветвления)

Полная и неполная форма условного оператора.

Условный оператор(ветвление)

ветвление – это выбор одного из двух возможных вариантов действий в зависимости от того, выполняется ли некоторое условие;

на блок-схеме алгоритма ветвление изображается в виде блока-ромба с одним входом и двумя выходами:

условный оператор может иметь полную или неполную форму; вот фрагменты программы, реализующие ветвления, показанные на рисунках 1 и 2:

полная форма:

неполная форма:

if a = b then begin

{ блок-1 }

end

else begin

{ блок-2 }

end;

if a = b then begin

{ блок-1 }

end;

Рассмотрим задачу: Пример задания:

Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:

var x,y: real;

begin

readln(x,y);

if y

if x = 0 then

if y = sin(x) then

write(‘принадлежит’)

else write(‘не принадлежит’)

end.

Последовательно выполните следующее: 1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу. 2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы) .

ПО РИСУНКУ КОММЕНТИРУЕТ УЧИТЕЛЬ МАТЕМАТИКИ СОВМЕСТНО С УЧАЩИМИСЯ.

Решение:

сначала лучше отложить в сторону программу и попытаться написать условие, которым должны отвечать точки, попавшие в выделенную область

заштрихованная область ограничена по координате , она находится

справа от оси , что равносильно условию (с учетом границы здесь и далее получаем нестрогие неравенства)

слева от первого максимума функции ; из математики мы знаем, что эта функция достигает максимума при , поэтому получаем второе условие

заштрихованная область ограничена с двух сторон по координате : она находится

ниже линии , откуда следует третье условие

выше линии , что дает четвертое условие

НЕ ЗАБЫТЬ ПРО ПЕРИОД!!!!!!!!

итак, точка находится в заданной области, если все эти четыре условия выполняются одновременно; можно предположить, что в программе нужно использовать четыре вложенных условных оператора или один условный оператор, в котором четыре простых условия (отношения , , и ) связаны с помощью логической операции and («И», одновременное выполнение всех условий)

теперь смотрим на программу: здесь три (а не четыре!) вложенных условных оператора с простыми отношениями, поэтому явно какое-то условие не учтено; легко найти, что «забыли» условие

оператор write(‘принадлежит’) помещен внутрь всех трех условных операторов, то есть, он выполнится тогда, когда три (а не четыре!) условия истинны;

отметим на рисунке область, где выполняются все нужные условия, кроме (красная зона);

для всех точек, которые находятся в «красной» зоне программа выдаст сообщение «принадлежит», хотя в самом деле эти точки не принадлежит заданной области; одна из таких точек имеет координаты

теперь выясним, когда программа выдает сообщение «не принадлежит»

if y

if x = 0 then

if y = sin(x) then

write(‘принадлежит’)

else write(‘не принадлежит’)

судя по записи «лесенкой», else относится к самому первому оператору if, однако в самом деле это не так; перед словом else нет end, поэтому ищем ближайший if: это самый внутренний оператор, правильная запись «лесенкой» выглядит так:

if y

if x = 0 then

if y = sin(x) then

write(‘принадлежит’)

else write(‘не принадлежит’)

этот фрагмент программы соответствует блок-схеме, которая

показана на рисунке справа:

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

итак, первая часть ответа такова

примеры входных данных, на которых программа работает неверно:
(x=3.14, y=0.5) (неправильно определяет принадлежность точки области)
(x=0, y=1) или (x=-1, y=0) (не выдает вообще никакого сообщения)

остается исправить эту программу;
начнем с самого «лобового способа»: добавим в программу четвертый (вложенный) условный оператор, проверяющий условие , и еще три блока else, чтобы выводить строку «не принадлежит» в том случае, когда хотя бы один из них не сработал:

if x

if y

if x = 0 then

if y = sin(x) then

write(‘принадлежит’)

else write(‘не принадлежит’)

else write(‘не принадлежит’)

else write(‘не принадлежит’)

else write(‘не принадлежит’);

обратите внимание, что точка с запятой есть только после самого последнего оператора write, так как остальные стоят перед ключевым словом else, перед которым точка с запятой не ставится

хотя приведенный выше метод дает работоспособную программу, она получается слишком длинная и некрасивая для такой простой задачи; достаточно сказать, что оператор
write(‘не принадлежит’) повторяется в тексте 4 раза

более элегантное решение формулируется на словах так: «точка принадлежит области, если выполняются одновременно 4 приведенных выше условия, а иначе – не принадлежит»; а вот реализация на Паскале (приведем программу-ответ целиком):

var x,y: real;

begin

readln(x,y);

if (x = 0) and (x

(y = sin(x)) then

write(‘принадлежит’)

else write(‘не принадлежит’);

end.

здесь использовано сложное условие, в котором 4 отношения связаны операциями and («И», требуется одновременное выполнение всех условий)

4 этап: оперирования знаниями, умениями и навыками при решении практических задач, составление отчета о выполнении работы.

Учащиеся получают задания и работают по 4 человека в группе. При этом 2 отвечают за математическую сторону и 2 за информатику. Учителя в это время консультируют.

3)

5 этап: отчет о выполнении работы с комментариями.

6 этап: Выведение рекомендаций для работы с заданиями С1.

Понравилась статья? Поделить с друзьями:
  • Инфинити fx35 ошибка vdc и slip
  • Инфекционная безопасность способы экстренной профилактики часто встречающие ошибки
  • Интуитивная логика ошибки интуитивной логики
  • Интуитивная логика ошибки интуитивной логики
  • Интонация в речи это ошибки