Условия всех задач из категории 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 элементов:
T | R | A | B | E | R | I | T | T | Z | значение |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | номер |
Массивы имеют широкую классификацию, поэтому приведем, лишь наиболее популярные из них.
Классификация массивов по количеству измерений:
одномерные;
двухмерные;
трехмерные;
многомерные.
Классификация массивов по типу используемой памяти:
статические массивы;
динамические массивы.
Методические указания
Для успешного решения задач из данной категории вы должны:
проанализировать данный фрагмент программного кода;
провести графическую интерпретацию запрограммированного алгоритма;
выяснить допущенные ошибки программистом при создании кода;
подобрать некоторые входные данные, на которых программа выдает некорректный результат;
исправить все неточности в программе, чтобы она корректно работала при любых входных данных.
Задача №1
Дано:
окружность на плоскости задана координатами центра и радиусом. Даны две окружности. Требовалось определить, имеют ли они точку касания. Программист торопился и написал программу неправильно.
x1, y1, r1, x2, y2, r2 : real;
begin
clrscr;
writeln;
write('Введите координаты и радиус 1 - й окружности: ');
readln(x1, y1, r1);
write('Введите координаты и радиус 2 - й окружности: ');
readln(x2, y2, r2);
if (sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = r1 + r2) or
(sqrt(sqr(x2 - x1) + sqr(y2 - y1)) = abs(r1 - r2)) then
write('Да')
else
write('Нет');
Найти:
последовательно выполните следующее:
приведите пример таких исходных данных, при которых программа работает неправильно;
укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы.
Задача №2
Дано:
требовалось написать программу нахождения количества цифр в записи натурального числа А. Программист торопился и написал программу неправильно.
Код программы:
a, s : longint;
begin
writeln(‘Введите число: ‘);
readln(a);
s := 0;
while a ≥ 10 do
a := a div 10;
s := s + 1;
writeln(s);
end.
Найти:
последовательно выполните следующее:
приведите пример таких исходных данных, при которых программа работает неправильно;
укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы.
Задача №3
Дано:
требовалось написать программу нахождения местоположения первого из минимальных элементов целочисленного массива (предполагается, что в массиве может быть несколько одинаковых минимальных элементов). Программист торопился и написал программу неправильно.
N = 10;
var
a : array[1..N] of integer;
i, min, k : integer;
begin
writeln('Введите элементы массива');
for i := 1 to N do
readln(a[i]);
min := a[1];
for i := 2 to N do
if(a[i] <= min) then
begin
k := i;
min := a[i];
end;
writeln(k);
end.
Найти:
последовательно выполните следующее:
приведите пример таких исходных данных, при которых программа работает неправильно;
укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы.
Задача №4
Дано:
из заданного натурального числа А получить число В, поменяв порядок цифр на обратный. Программист торопился и написал программу неправильно:
a, b: integer;
begin
write(‘Введите натуральное число‘);
read(a);
b := a mod 10;
if a > 10 then
while a > 10 do
begin
a := a div 10;
b := b*10 + a mod 10;
end;
write(‘Новое число ‘, b);
end.
Найти:
приведите пример таких исходных данных, при которых программа работает неправильно;
укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы.