Никакая система не совершенна, а человек так тем более. Все мы испытываем такой человеческий фактор, как совершение ошибок. Мы делаем это всегда, даже в подсчётах каких-нибудь чисел.
Так может ошибаться и компьютер. Например, мы зададим компьютеру таков алгоритм, что на каждую ячейку коробки положим ровно 1 конфету. Мы напишем алгоритм для устройства ("умной руки"), и где-нибудь в алгоритме случайно используем итератор ("счётчик конфет или ячеек"), который может повлиять на работу.
Например, у нас есть N ячеек. Мы (или компьютер - такое тоже случается) случайно присвоили другое значение, тогда алгоритм будет работать уже с изменённой переменной: может класть конфеты в пустое пространство, ведь ячейки кончились, а может класть по 2 конфеты в 1 ячейку.
Другой пример - математические вычисления. Например, мы зададим компьютеру посчитать простые числа от 1 до N. С алгоритмов мы реализуем проверку на простоту, но забудем про какую-нибудь важную операцию (например, в сравнении: поставим не "ЧИСЛО ДОЛЖНО БЫТЬ МЕНЬШЕ ИЛИ РАВНО", а "ЧИСЛО ДОЛЖНО БЫТЬ МЕНЬШЕ МЕНЬШЕ"), из-за чего программа может выводить абсолютно не те числа. Поэтому в таких случаях нужна проверка и анализ результата выполнения работы.
1. Как выше уже сказали, имя файла ОБЫЧНО состоит и правда из двух частей. Это придумали еще давно, сначала просто для удобства, чтобы понимать, что за информация содержится внутри (текст, звук и т. д.) . Впоследствии операционные системы стали использовать расширение для распознавания содержимого и запуска необходимого приложения для обработки файла, или распознавала, что файл является программой и запускается сам (это в Windows и DOS файлы с расширением *.exe, *.bat, *.com) а вот в Линуксе исполняемый файл может иметь любое расширение, или вообще его не иметь. В Windows ( а ранее в DOS) использовалось расширение с ограничениями, в три знака. Сейчас Windows использует и больше знаков для работы (например *.docx). В принципе имя файла может состоять хоть из одной, хоть из десяти частей. Главное его открыть нужной программой, чтобы прочитать.
Program Massivi; var i: Byte; c: array [1..10] of Integer; a, b: array [1..5] of Integer; begin // Zapolnee massiva c: for i:=1 to 10 do begin // Wtire('C['+IntToStr(i)+']='); ReadLn(C[i]); end;
// Formirovanie massivov a i b. for i:=1 to 10 do // if i mod 2 = 0 then a[i div 2]:=c[i] else b[i div 2 + 1]:=c[i];
// Write('Massiv a: '); // for i:=1 to 5 do Write(IntToStr(a[i])+', '); // WriteLn('');
// Write('Massiv b: '); // for i:=1 to 5 do Write(IntToStr(b[i])+', '); // WriteLn('');
// Write('Massiv c: '); // for i:=1 to 10 do Write(IntToStr(c[i])+', '); end.
Никакая система не совершенна, а человек так тем более. Все мы испытываем такой человеческий фактор, как совершение ошибок. Мы делаем это всегда, даже в подсчётах каких-нибудь чисел.
Так может ошибаться и компьютер. Например, мы зададим компьютеру таков алгоритм, что на каждую ячейку коробки положим ровно 1 конфету. Мы напишем алгоритм для устройства ("умной руки"), и где-нибудь в алгоритме случайно используем итератор ("счётчик конфет или ячеек"), который может повлиять на работу.
Например, у нас есть N ячеек. Мы (или компьютер - такое тоже случается) случайно присвоили другое значение, тогда алгоритм будет работать уже с изменённой переменной: может класть конфеты в пустое пространство, ведь ячейки кончились, а может класть по 2 конфеты в 1 ячейку.
Другой пример - математические вычисления. Например, мы зададим компьютеру посчитать простые числа от 1 до N. С алгоритмов мы реализуем проверку на простоту, но забудем про какую-нибудь важную операцию (например, в сравнении: поставим не "ЧИСЛО ДОЛЖНО БЫТЬ МЕНЬШЕ ИЛИ РАВНО", а "ЧИСЛО ДОЛЖНО БЫТЬ МЕНЬШЕ МЕНЬШЕ"), из-за чего программа может выводить абсолютно не те числа. Поэтому в таких случаях нужна проверка и анализ результата выполнения работы.