Условия всех задач из категории C1

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

Историческая справка и теоретические сведения

Язык программирования – специальная кодовая система для записи компьютерных программ. Каждый язык программирования обладает определенной семантикой, лексикой и синтаксисом. В мире придумано и реализовано свыше 8000 тысяч языков программирования, но востребованными являются не более 20 – 30 различных языков.

Синтаксис языка – набор правил, определяющий конструкции языка и формат их представления.

Семантика языка – набор правил, определяющий содержание и смысл конструкций языка.

Наиболее популярные языки программирования:

  • C;

  • C++;

  • C#;

  • Java;

  • Basic;

  • Pascal;

  • Delphi;

  • Oberon;

  • Ada;

  • Fortran;

  • Assembler.

Абсолютное большинство задач из данной категории реализуют какой-либо элементарный алгоритм (нахождение корней квадратного уравнения, попадание заданной точки в заштрихованную область и т. п.), имеющий от 2 до 7 неточностей. Как правило, ошибки проявляются в записи условных выражений, заголовков циклов, выхода индексов элементов массива за допустимые границы.

 

Расстояние между двумя точками на плоскости вычисляется по следующей формуле:

 

Натуральное число - число, возникающие естественным образом при счёте (как в смысле перечисления, так и в смысле исчисления).
Пример натуральных чисел: 23, 90, 8934, 2.
Для справки: ноль к натуральным числам не относится.

Цифра - составляющая любого числа, то есть любой число состоит из цифр (разрядов).
Пример: число 128 состоит из трех цифр (трех разрядов), причем существует следующая градация цифр. Относительно числа 128 имеем:

  • 1 - количество сотен;

  • 2  - количество десяток;

  • 8 - количество единиц.

128 = 1 · 100 + 2 · 10 + 8 = 100 + 20 + 8 = 128

 

Минимальный элемент - элемент массива, имеющий наименьшее значение среди всех элементов массива.
Если массив содержит несколько элементов, имеющих наименьшее значение, то имеет смысл говорить о нескольких минимальных элементах.

Массив - упорядоченный набор данных, для хранения данных однородного типа, идентифицируемых с помощью одного или нескольких индексов.
Каждый элемент массива характеризуется двумя параметрами:

  • значение;

  • номер (индекс).

Графическая интерпретация одномерного символьного массива, состоящего из 10 элементов:

TRABERITTZзначение
12345678910номер

 

Массивы имеют широкую классификацию, поэтому приведем, лишь наиболее популярные из них.
Классификация массивов по количеству измерений:

  • одномерные;

  • двухмерные;

  • трехмерные;

  • многомерные.

Классификация массивов по типу используемой памяти:

  • статические массивы;

  • динамические массивы.

 

Методические указания

Для успешного решения задач из данной категории вы должны:

  1. проанализировать данный фрагмент программного кода;

  2. провести графическую интерпретацию запрограммированного алгоритма;

  3. выяснить допущенные ошибки программистом при создании кода;

  4. подобрать некоторые входные данные, на которых программа выдает некорректный результат;

  5. исправить все неточности в программе, чтобы она корректно работала при любых входных данных.

 
 
 
 

Задача №1

Дано:
окружность на плоскости задана координатами центра и радиусом. Даны две окружности. Требовалось определить, имеют ли они точку касания. Программист торопился и написал программу неправильно.

  1. var
  2.     x1, y1, r1, x2, y2, r2 : real;
  3. begin
  4.     clrscr;
  5.     writeln;
  6.     write('Введите координаты и радиус 1 - й окружности: ');
  7.     readln(x1, y1, r1);
  8.     write('Введите координаты и радиус 2 - й окружности: ');
  9.     readln(x2, y2, r2);
  10.     if (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = r1 + r2) or
  11.         (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = abs(r1 - r2)) then
  12.         write('Да')
  13.     else
  14.         write('Нет');

 

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

  1. приведите пример таких исходных данных, при которых программа работает неправильно;

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

 
 
 
 
 
 

Задача №2

Дано:
требовалось написать программу нахождения количества цифр в записи натурального числа А. Программист торопился и написал программу неправильно.

Код программы:

  1. var
  2.     a, s : longint;
  3. begin
  4.     writeln(‘Введите число:);
  5.     readln(a);
  6.     s := 0;
  7.     while a ≥ 10 do
  8.         a := a div 10;
  9.     s := s + 1;
  10.     writeln(s);
  11. end.

 

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

  1. приведите пример таких исходных данных, при которых программа работает неправильно;

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

 
 
 
 
 
 

Задача №3

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

  1. const
  2.     N = 10;
  3. var
  4.     a : array[1..N] of integer;
  5.     i, min, k : integer;
  6. begin
  7.     writeln('Введите элементы массива');
  8.     for i := 1 to N do
  9.         readln(a[i]);
  10.     min := a[1];
  11.     for i := 2 to N do
  12.         if(a[i] <= min) then
  13.         begin
  14.             k := i;
  15.             min := a[i];
  16.         end;
  17.     writeln(k);
  18. end.

 

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

  1. приведите пример таких исходных данных, при которых программа работает неправильно;

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

 

 
 
 
 
 
 

Задача №4

Дано:
из заданного натурального числа А получить число В, поменяв порядок цифр на обратный. Программист торопился и написал программу неправильно:

  1. var
  2.     a, b: integer;
  3. begin
  4.     write(‘Введите натуральное число‘);
  5.     read(a);
  6.     b := a mod 10;
  7.     if a > 10 then
  8.         while a > 10 do
  9.         begin
  10.             a := a div 10;
  11.             b := b*10 + a mod 10;
  12.         end;
  13.     write(‘Новое число  ‘, b);
  14. end.

 

Найти:

  1. приведите    пример    таких    исходных    данных,   при которых программа работает неправильно;

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

 
 
 
 
 
 
© 2011-2019 ООО "СтадиМен". Все права сохранены.
Перепечатка и использование материалов с данного сайта, разрешена только по согласию с владельцем.
Владелец оставляет за собой право воспользоваться 146 статьей УК РФ при нарушении авторских и смежных прав.
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?