Написать программу вычисляющую значение - Написать программу вычисляющую значение выражений - Turbo Pascal

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

Идет k-я секунда суток. Определите, сколько целых часов h и целых минут m прошло с начала суток. На вход программе подается целое число k 0 k Выведите на экран фразу: Вместо многоточия программа должна выводить значения h и m, отделяя их от слов ровно одним пробелом. Кроме того, данное задание закрепляет умение пользоваться оператором печати с параметрами разного типа в данном случае строковыми константами и переменными.

Приведем основной фрагмент решения:. Часовая стрелка повернулась с начала суток на d градусов. Определите, сколько сейчас целых часов h и целых минут m. Определите, является ли не более чем четырехзначное число k симметричным например, или Выдайте 1 при положительном ответе на вопрос задачи и любое другое целое число — в противном случае. Помимо выделения цифр в числе, здесь мы впервые сталкиваемся с задачей, которую хотелось бы решать с использованием условного оператора, однако можно обойтись и без него.

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

По введенному номеру дня d и номеру урока l найдите порядковый номер этого урока в неделе. Эта задача достаточно важная. Аналогичные рассуждения приходится производить при вычислении порядкового номера элемента в двумерной таблице.

Порядковый номер дня можно вычислить так: При составлении тестов обязательно нужно проверить ответ для первого урока, проходящего в понедельник ответ на этот тест 1, а у школьников часто получается 0. Аналогично важными для проверки являются последний урок понедельника, первый урок произвольного дня недели и последний урок в пятницу.

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

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

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

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

Поэтому остаток от деления на 3 надо брать не от числа n, а от числа n — 1, что и приводит нас к желаемому результату. Составление подобных таблиц полезно и при решении других задач. Обозначим дни недели числами от 1 — понедельник до 7 — воскресенье соответственно. По известному m — дню недели первого числа текущего месяца — определите день недели числа n. Приведем основной оператор присваивания, определяющий решение этой задачи:. Единица товара стоит a рублей b копеек. Было куплено n штук этого товара.

Сколько рублей и копеек пришлось заплатить за всю покупку? На вход программе подаются три целых числа: Выведите два искомых числа. Эта задача неожиданно вызывает затруднения, если ее неаккуратно решать для приведенных в условии ограничений на входные данные. Дело в том, что наиболее естественный способ ее решения — перевести исходную сумму в копейки, умножить ее на n и выделить число рублей и копеек, в данном случае не подходит.

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

Решая эту задачу, школьники учатся правильно округлять вещественные числа. Так, следующий способ выделения целого числа копеек из вещественной цены товара r на специально подобранных тестах может оказаться неверным:. Дело в том, что вещественные числа в компьютере могут представляться точно, с избытком или с недостатком 1 грубо говоря, вместо 0. Поэтому умножение на и отбрасывание дробной части может привести к неверному результату: В данной задаче для решения этой проблемы можно использовать функцию round , но в общем случае это не так.

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

В Borland Pascal при этом надо использовать тип данных longint не только для результата, но и для описания входных значений часов, минут и секунд см.

На вход программе подаются два целых числа: Если m делится на n или n делится на m, то требуется вывести 1, в противном случае — любое другое число. Если значение только одного из введенных чисел равно 0, то результатом должна быть 1 0 делится на любое другое число , а если оба числа равны 0, то ответ должен быть иным 0 на 0 не делится. Для того чтобы избавиться при делении от 0, добавим к делителю n следующее выражение: В результате одно из возможных решений задачи выглядит так:. Последнее слагаемое результата отлично от нуля, только когда и n, и m одновременно равны 0.

Если m n , то требуется вывести 1, в противном случае — любое другое число. Для произвольных целых чисел с использованием модуля решение имеет вид:.

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

Вещественную арифметику не использовать. В первую очередь обратите внимание на порядок ввода переменных — он отличен от традиционного. Но если не следовать описанному в условии порядку, то автоматическая проверка задачи будет невозможна. В момент их совпадения n 0 часов m 0 минут будет выполняться следующее равенство: Поэтому, если в рамках текущего часа минутная стрелка еще не обогнала часовую 60 n 0 11 m 0 , то ответом на вопрос задачи будет выражение 60 n div 11 — m , в противном же случае стрелки встретятся уже во время следующего часа, и ответ выглядит так: В окончательном решении производится совмещение этих формул:.

На вход программе подаются два числа не обязательно целые, но не более чем с двумя знаками после десятичной точки. Распечатайте их в порядке возрастания. Например, минимальное из двух чисел выражается так:. На вход программе подается вещественное число x. Получите и выведите целое значение функции sign x — знак числа x. Для учета нуля воспользуемся практически тем же выражением, что и для целых чисел: Следует также помнить, что результат должен быть присвоен переменной целого типа.

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

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

Значения x 0 , y 0 вводятся с клавиатуры. В качестве ответа программа выдает на экран true, если точка с введенными координатами x 0 , y 0 принадлежит заштрихованной фигуре, и false , если точка x 0 , y 0 не принадлежит ей.

Условный оператор не использовать. Логические выражения в том виде, в каком они используются в программировании, школьникам немного непривычны. Данное задание как раз и предназначено для этой цели. Кроме того, подобные задания включены в варианты ЕГЭ по информатике задача С1. Границы заштрихованных фигур в данном задании не анализируются сознательно.

Это позволяет использовать логическую операцию not при описании части плоскости, находящейся по другую сторону от границы фигуры. Если логической переменной с присвоить соответствующее логическое выражение c: Однако, если границу круга учитывать, такое использование переменной с для описания внешней области круга становится неправомерным.

Там же опубликованы различные варианты задания. Сложность задания в данном случае — рисунка варьируется согласно уровню математической подготовки учащихся. Еще один важный момент, который отрабатывается на этом задании, — порядок выполнения операций. Заметим, что в различных языках программирования этот порядок различный. Например, в языке С операции сравнения имеют больший приоритет, чем логические связки и скобки в логических выражениях, аналогичных выражениям из упражнения 1 урока 4, не нужны.

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

Так, в выражении с целочисленными переменными a и b. Напишите программу, которая будет считывать значения целых переменных a , b и с и распечатывать их в порядке возрастания. Значения a , b и с по модулю не превосходят 30 Приведем фрагменты решения для каждого из требуемых вариантов решения:. При реализации первого способа решения отрабатывается умение использовать вложенные условные операторы. Обратите внимание, что во втором способе решения задачи фрагменты программы повторяются.

Иногда школьники ограничиваются только двумя обменами значений переменных или в третий раз сравнивают значения не тех переменных. После реализации каждого из способов предложите школьникам протестировать свои программы самостоятельно на всех шести принципиальных случаях перестановках трех различных чисел, например, 1, 2 и 3. Учтите, что a может принимать любые значения, в том числе и 0. На вход программе подаются целые числа a, b , по модулю не превосходящие Требуется вывести целый корень уравнения, если он существует и единственный.

Если уравнение не имеет корней, то вывести no solution. Если уравнение имеет больше одного целого корня, то вывести many solutions 3. Несмотря на кажущуюся простоту, данное задание редко выполняется школьниками полностью правильно. Предложите им сначала решить задачу математически, а затем уже написать соответствующую программу.

Учтите, что ученики 7—9-х классов практически не знакомы с методами решения задач с параметрами. Общая схема решения такая: Затем уравнение переписывается уже с нулевым значением a: Проанализировать последний случай также не у всех получается корректно. Обратите внимание, что в задаче требуется найти только целочисленное решение. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. По введенным координатам двух полей k, l и m, n выясните, угрожает ли ферзь, находящийся на поле k, l , полю m, n?

В данной задаче наиболее сложная часть — построить компактное логическое выражение, описывающее нахождение двух фигур на одной диагонали. Приведем основной фрагмент решения задачи:. По введенным координатам двух полей k, l и m, n выясните, являются ли эти поля полями одного цвета? Решение основано на том, что сумма координат клеток одного цвета обладает одной и той же четностью для одних клеток эта сумма четна, а для клеток другого цвета — нечетна:.

По введенному номеру года — положительному целому числу, не превосходящему 10 , требуется определить, является ли данный год високосным. Напомним, что високосными являются года, номера которых кратны 4, но не кратны , а также года, номера которых кратны Выведите YES или NO в зависимости от ответа на вопрос задачи. Задачи, связанные с календарем, встречаются достаточно часто, однако вызывают затруднения у школьников несомненно, это связано с достаточно сложным устройством календаря.

На примере данного задания предлагается научить школьников отделять високосный год от не високосного. За многие годы заточения узник замка Иф проделал вилкой в стене прямоугольное отверстие размером D x E. Замок Иф сложен из кирпичей размером A x B x C. Узник хочет узнать, сможет ли он выкидывать кирпичи в море из этого отверстия, для того чтобы сделать подкоп.

Помогите ему, считая, что стороны кирпича будут параллельны сторонам отверстия. В данной задаче нужно понять, что достаточно найти две минимальных стороны кирпича, упорядочить D и E по возрастанию и проверить, что меньшая сторона не больше D, и вторая по величине сторона не больше E. Даны три натуральных числа — длины стороны треугольника. Найдем сначала максимальную из трех сторон и обозначим ее a. После этого в решении фактически анализируется знак косинуса угла, лежащего напротив стороны a:.

На вход программе подаются a, b, c a, b, c целые, по модулю не превосходят Выдать код ситуации и значения корней:. Несмотря на стандартную для школьников постановку задачи, ее решение обычно вызывает сложности, как с точки зрения выделения различных случаев, так и при записи программы. Рассуждать проще всего так. Если a 0, то для нахождения корней используются известные формулы, при этом существование корней зависит от знака дискриминанта квадратного уравнения проверка равенства дискриминанта нулю корректна только для целых коэффициентов уравнения.

Поэтому, если c действительно равно 0, то все действительные числа являются корнями данного уравнения, в противном случае — корней нет. Из возможных ошибок, которые допускают школьники, необходимо обратить внимание на следующую: Поэтому при составлении набора тестов учителем очень важно предусмотреть случаи, в которых a 0 и a 1. На столе лежат коробка размера A 1 x B 1 x C 1 и коробка размера A 2 x B 2 x C 2.

Задача лишь немного сложнее уже рассмотренной задачи 9. Достаточно упорядочить размеры каждой из коробок так, чтобы A B C, а затем проверить, что A 1 A 2 , B 1 B 2 и С 1 С 2 или A 2 A 1 , B 2 B 1 и С 2 С 1. Яша плавал в бассейне размером N?

M метров и устал. В этот момент он обнаружил, что находится на расстоянии x метров от одного из длинных бортиков не обязательно от ближайшего и y метров от одного из коротких бортиков. Какое минимальное расстояние должен проплыть Яша, чтобы выбраться из бассейна на бортик? Данная задача предлагалась в году на Московской командной олимпиаде по программированию для восьмиклассников.

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

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

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

На ввод программе подаются 6 чисел: Все числа целые, по модулю не превосходят Они задают 3 точки плоскости: Следует определить взаимное расположение точек и выдать на экран код ситуации:.

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

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

На вход программе подаются 6 чисел: Выдать на экран описание решения в следующем виде:. Вывести с с точностью до двух знаков после десятичной точки;. Сначала решим задачу для общего случая: В последнем случае решений будет или бесконечно много, или не будет совсем. Разобрать получающиеся случаи помогает графическая интерпретация решения данной системы уравнений: С учениками математических классов решение данной задачи нужно разобрать обязательно.

По заданным вещественному значению x и целому значению n вычислите x n операция возведения в степень в языке Pascal отсутствует. Как сказано в условии задачи, операция возведения в степень в языке Pascal отсутствует. И это не случайно. Дело в том, что для реализации этой операции в других языках программирования используется тождество: И то и другое представляет собой суммирование соответствующего ряда.

Для целых степеней это неэффективно и ведет к потере точности. Простое возведение x в целую неотрицательную степень n:. Найдите сумму цифр введенного целого числа. На каждом шаге выделяется последняя цифра числа, а затем число делится на Процесс повторяется, пока число не станет равным 0.

Данную задачу обязательно нужно разобрать со школьниками. Она служит примером решения различных задач, связанных с выделением цифр из числа. Приведем основную часть ее решения без комментариев. На вход программе подается натуральное число n 10 9. Проверьте, является ли оно простым. Для чисел 1, 2, а также всех четных чисел ответ можно выписать сразу. Проверку нечетного числа на простоту будем осуществлять с помощью деления на числа, меньшие n.

Обратите внимание учащихся, что проверку следует осуществлять только до. На вход программе подаются 4 целых числа: Максимальное время работы программы на одном тесте — 1 секунда. При d 0 все корни уравнения, отличные от 0, являются делителями числа d. То есть решение сводится к перебору положительных и отрицательных делителей числа d и подстановки их в исходное уравнение. Для вычисления значения многочлена при конкретном значении x при использовании схемы Горнера можно либо все операции проводить в вещественном типе данных extended , либо игнорировать переполнение целого типа, так как, если значение многочлена равно 0, то все промежуточные значения окажутся не больше 10 9.

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

В случае положительного ответа во второй строке выведите два числа, сумма квадратов которых равна n. Числа следует выводить в порядке неубывания. Максимальное время работы программы на одном тесте — 0,1 секунды.

При решении большое внимание следует обращать на точность вычислений и правомочное округление вещественных чисел. Приведем основную часть решения:. Вкладчик положил на банковский счет n рублей. Начисленные проценты добавляются к сумме вклада. Через сколько лет сумма вклада станет не менее m рублей?

Задачи 7—8 позволяют показать школьникам, в каком случае лучше использовать цикл с предусловием, а в каком — с постусловием. Так как в данном случае сумма может сразу быть не меньше m , то лучше использовать цикл while: Вкладчик положил на банковский счет некоторую сумму n.

Через сколько лет сумма вклада как минимум удвоится? На вход программе подаются два натуральных числа 4: Выведите одно число — количество лет, через которое сумма вклада как минимум удвоится. Заметим, что при отсутствии округления при вычислении процентов можно было бы не указывать начальную сумму вклада — любая сумма удваивалась бы за один и тот же срок, и вычислить его можно было бы по формуле.

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

На вход программе подаются два натуральных числа: Выведите их наибольший общий делитель. Для решения задачи используйте алгоритм Евклида, основанный на следующем тождестве: Алгоритм Евклида является одним из важнейших целочисленных алгоритмов, обязательно разберите его с учащимися. Приведем наиболее короткую его реализацию:. Заметим, что в решении не нужно проверять, какое из чисел больше — n или m. На вход программе подается последовательность целых чисел, заканчивающаяся 0.

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

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

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

Задача решается аналогично предыдущей. Типичные ошибки — учет числа ноль при подсчете количества чисел, а также использование неверной рекуррентной формулы для подсчета среднего арифметического: Программа получает на вход последовательность целых чисел, по модулю не превосходящих 10 9.

Признак окончания последовательности — число —2x10 9. Программа должна определить вид последовательности — возрастающая, убывающая, случайная или постоянная. Ответ следует выдать в следующем формате — в 1-й строке напечатать количество элементов последовательности без учета —2?

WEAKLY ASCENDING нестрого возрастающая, то есть неубывающая ;. WEAKLY DESCENDING нестрого убывающая, то есть невозрастающая ;. Так как массив в программе использовать нельзя, будем хранить в двух переменных соседние элементы входной последовательности.

Будем также считать, что, помимо последнего барьерного элемента, который не надо учитывать в решении, в последовательности есть по крайней мере 2 элемента. Тогда решение может выглядеть так:. Обратите внимание, что после анализа последовательности проверять признаки на истинность в произвольном порядке нельзя.

Так, если последовательность является слабо возрастающей, то она же может оказаться и постоянной, обратное же неверно, поэтому признаки слабого возрастания и слабого убывания проверяются в последнюю очередь. На вход программе подается натуральное число n 10 Выведите с точностью 6 значащих цифр после десятичной точки значение указанного выражения. Подобная задача рассматривалась в материалах урока, поэтому приведем решение без комментариев:. В последовательности a 1 , a 2 , На вход программе сначала подается натуральное число n 10 6.

Далее следуют n целых чисел, по модулю не превосходящих 30 , — сами члены последовательности. Выведите номер максимального числа.

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

Дана последовательность, состоящая из n чисел. Выяснить, сколько раз в ней встречается минимальное число. Выведите число, которое является ответом на вопрос задачи. Отсутствие массива в решении указывает в этой задаче на то, что решить ее нужно за один просмотр данных решение за два просмотра очевидно. Тем не менее и при таких ограничениях решение не становится намного сложнее:.

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

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

По заданному натуральному числу n и вещественному x вычислить. На вход программе подаются натуральное n и вещественное x , по модулю не превосходящее Выведите значение указанного выражения с точностью 6 значащих цифр после десятичной точки. В задачах на суммирование числовых рядов важно научить учеников определять, как изменяется очередное слагаемое или его части по сравнению с предыдущим.

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

Процесс вычислений тогда заканчивается, когда очередное слагаемое оказывается меньше интересующей нас точности вычислений.

На вход программе подаются натуральные n и m Данная задача является примером задачи на рекуррентные соотношения другого вида. В виде рекуррентного соотношения условие задачи можно записать так: Требуется найти s 1. Программа для решения этой задачи оказывается совсем простой, однако на ее примере можно вспомнить правила использования цикла с down to:.

Числа Фибоначчи определяются следующими формулами: На вход программе подается целое неотрицательное n Выведите n -е число Фибоначчи. Числа Фибоначчи и в математике, и в программировании используются достаточно часто.

Поэтому познакомиться с ними полезно. Для того чтобы решить задачу без использования массива, нам придется завести три переменных для хранения трех соседних чисел Фибоначчи и аккуратно их переопределять по мере вычислений. Заметим, что е число Фибоначчи заведомо невозможно найти с использованием типа integer языка Borland Pascal. Кроме того, необходимо следить за тем, чтобы программа корректно находила и первое, и нулевое числа Фибоначчи:.

Найти в ней два самых маленьких числа.

Решение: Написать программу вычисляющую значение выражений - Turbo Pascal

Выведите минимальное число и второе по величине число оно может совпадать с минимальным. Единственная сложность при решении данной задачи — аккуратная обработка входной последовательности за один просмотр:. На вход программе сначала подается целое неотрицательное число n Затем вещественное число x 0 , по модулю не превосходящее Выведите значение полинома с точностью до трех значащих цифр после десятичной точки.

Без массива данную задачу можно решать с помощью схемы Горнера только в случае, когда коэффициенты полинома задаются в порядке: Минимизируйте количество условий, которые используются в программе. Указанное в предыдущей публикации ограничение на n, видимо, необходимо уменьшить, например, до 30 В противном случае решение, в котором не используется формула, будет работать более одной секунды.

Тем не менее программу можно написать так, что и без применения условных операторов будут генерироваться все необходимые тройки:. Подсчитайте и выведите число счастливых билетов с различными номерами от до Подсчитайте число счастливых билетов с различными n-значными номерами ведущие нули в номерах возможны, но номера, состоящего из одних нулей, не существует.

На примере задачи a можно просто поучиться писать вложенные циклы в данном случае их будет 6, каждый от 0 до 9. Номер, состоящий из одних нулей, исключать из перебора не нужно, гораздо проще от полученного ответа отнять единицу.

Окончательным ответом на данную задачу является число 52 Задача б является практически олимпиадной. Основная идея ее решения. Подсчитаем сумму цифр у левой половины номера. Счастливыми окажутся все билеты, у которых сумма правых цифр будет такой же. Так, для шестизначного билета, если мы обозначим количество трехзначных чисел, сумма цифр у которых равна, например, 15, за S 15 , то количество счастливых билетов, сумма первых трех цифр которых равна сумме трех последних и равна 15, выражается формулой S 15 x S Для произвольных четных n ответ получается аналогично.

Для нечетных n ответ получается домножением ответа, полученного для n — 1, на 10 средняя цифра может быть любой, в том числе и нулевой и прибавлением 9 билеты, у которых все цифры, за исключением средней, равны 9.

В этом случае однозначные билеты не являются исключением. Их количество просто равно 9, и все они счастливые. Приведем возможную реализацию данного решения:. Заметим, что с использованием массивов n 1 [ Обратите также внимание, что ответ не умещается в целый тип longint , поэтому для нахождения результата используется вещественный тип extended. Так, 5 рублей можно выплатить четырьмя различными способами:. Задача решается перебором всех возможных вариантов выдачи сдачи. Однако после того, как мы зафиксировали количество рублевых купюр и монет в 5 и 2 рубля, количество рублевых монет определяется однозначно, поэтому мы перебираем только три старших номинала денежных единиц.

Возможно, в условие задачи можно добавить и рублевые купюры. Но увеличение n до и добавление более крупных купюр и рублей могут привести к тому, что ответ уже нельзя будет получить перебором вариантов.

Приведем решение задачи в изначальной формулировке:. На вход программе подается натуральное n 30 Выведите его разложение на простые множители, располагая их в порядке неубывания так, как показано в примерах. Задача относится к числу задач базовых проблем, которые можно рекомендовать для обязательного рассмотрения. Алгоритм решения задачи следующий. Возьмем первое простое число — 2. Пока n делится на 2, будем делить его на 2 и двойки сразу печатать.

Если число на 2 уже не делится, будем пытаться делить его на 3 и т. Интересно, что проверять при этом делители на простоту не нужно! Дело в том, что если число уже разделили на 2 и на 3 максимально возможное число раз, то ни на 4, ни на 6, ни на 9 оно не разделится автоматически.

Поэтому делители можно проверять подряд, но делать это только до квадратного корня из исходного числа n. Если оставшееся число больше единицы, то оно тоже простое и его нужно напечатать. Основную техническую сложность представляет в данном случае аккуратный вывод результата. Приведем возможный вариант решения:. Найдите число из диапазона от 1 до n с максимальной суммой своих делителей включая непростые делители, 1 и само число.

Если таких чисел несколько, выведите минимальное из них. Эта задача просто закрепляет умение работать со вложенными циклами.

Приведем ее без комментариев:. Цифровой корень натурального числа получается следующим образом. Складываются все цифры данного числа. Процесс повторяется, пока в результате не будет получено однозначное число, которое и называется цифровым корнем числа. Напишите программу для подсчета числа точек c целочисленными координатами, находящихся внутри и на границе круга c центром в начале координат и заданным радиусом r.

На вход программе подается целое неотрицательное число r 1 Выведите количество искомых точек в этом круге. Перебрать все точки в данном случае не удастся. Решим задачу для четверти круга. Целочисленные точки будем суммировать по столбцам. На оси координат Oy выше оси Ox лежит ровно r целочисленных точек круга. В каждом следующем столбце будет либо столько же целочисленных точек круга, либо меньше см. На сколько меньше — проще всего выяснить, вычитая точки по одной и подставляя результат в уравнение окружности на самом деле в неравенство, которое позволяет определить, лежит ли точка внутри круга.

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

Экспериментальным путем определите, факториал каких чисел может быть точно вычислен в битном целом типе integer в Delphi и longint в Borland Pascal , битном целом типе int64 в Delphi и comp в Borland Pascal и типе extended.

Затем напишите программу, которая будет работать следующим образом. Сначала запрашивается число K — количество факториалов, которые надо вычислить K Затем K раз считывается значение N N , для очередного N сразу вычисляется значение N! Если точно факториал в стандартной компьютерной арифметике вычислить невозможно, то выводится только 0. Задачу действительно можно рассматривать как проблему для проведения вычислительного эксперимента. Сначала определим диапазоны значений факториала, для которых вычисления можно проводить точно в каждом из перечисленных типов, а потом напишем диалоговую программу, решающую поставленную задачу.

Для значений целых типов ответ получить не сложно — достаточно сравнивать результат вычислений в таком типе с результатом вычислений в типе extended.

Для анализа последнего достаточно заметить, что при последовательном получении факториалов после домножения 22! Соответственно максимальное n, для которого в стандартной компьютерной арифметике можно вычислить факториал точно, равно Ведь в первом из них на хранение мантиссы цифр числа отводятся те же 64 бита. Дело в том, что факториалы, записанные в двоичной системе счисления, начиная с 2!

Поэтому в мантиссе будут записываться двоичные цифры, начиная с правой единицы, а количество нулей в конце числа будет учтено в его порядке. По заданным вещественному значению x и целому неотрицательному значению n вычислите x n операция возведения в степень в языке Pascal отсутствует. Для решения задачи используйте алгоритм эффективного возведения в степень. В свою очередь, произвольное n можно представить как сумму степеней двойки фактически перевести в двоичную систему счисления: Так как алгоритм решения задачи изложен в ее условии, просто приведем его реализацию:.

По заданным натуральным числам n и m вычислите. На вход программе подается натуральное m Выведите значение указанного выражения с точностью 6 значащих цифр после десятичной точки известно, что это выражение, состоящее из бесконечного числа вложенных корней, для всех указанных значений m конечно. Задача отличается от задачи 7 предыдущего урока тем, что количество корней теперь не ограничено. Однако если указанное выражение сходится к конечному числу, то, начиная с некоторого количества корней, требуемое количество цифр результата меняться уже не будет.

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

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

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

Эта задача достаточно проста. Школьникам необходимо лишь придумать, как программным путем определять, что какая-то клавиша была нажата два раза подряд. Массивы в этой программе использовать нецелесообразно количество вводимых символов по условию не ограничено. Возможный вариант решения задачи:. Напишите программу, которая будет вводить двузначное шестнадцатеричное число и выводить его десятичный аналог. Цифры шестнадцатеричных чисел в языке Pascal можно считать только в символьный тип, а потом перевести в числовой аналог.

В этой задаче впервые отрабатывается такое умение:. В наиболее элегантном решении данной задачи не используются числовые переменные и знание того, что в латинском алфавите 26 букв:. Определите, сколько раз в последовательности символов, заканчивающейся точкой, встречаются цифры и сколько — латинские буквы. Дана непустая последовательность слов, состоящих из латинских букв.

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

Для введенного натурального числа k от 1 до напечатайте фразу:. Учтите, что при некоторых значениях k слово лет надо заменить на слово год или года.

Помогите, пожалуйста, написать программу на с++

В программе обязательно используйте оператор case. Фразу надо выводить в кодировке Windows Соблюдайте регистр при выводе символов и разделяйте слова ровно одним пробелом. Решение этой задачи дает единый ключ к пониманию того, как грамотно распечатать результат работы программы на русском языке. Это касается, например, и денежных расчетов рубль, рубля, рублей , причем правила выбора нужного падежа остаются неизменными.

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

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

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

Во-первых, мы оказываемся привязанными к знанию конкретной кодовой таблицы, во-вторых, программа становится менее понятной. Приведем основной фрагмент решения данной задачи:. Корабль шел по курсу k1 тип direction , ему был дан приказ p тип curs. Определить значение курса тип direction , которое получит корабль в результате выполнения приказа. Задачу следует решать путем непосредственных операций над переменными перечислимого типа без использования их числовых аналогов.

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

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

Подсчитайте число пятниц, приходящихся на е числа в XX веке, если известно, что 13 января года было воскресенье. Переберите последовательно все е числа XX века, для каждого такого числа определяя его день недели через день недели предыдущего тринадцатого числа.

Для учета числа дней в месяце используйте оператор case. Приведем программу, которая соответствует приведенной логике решения задачи. Дни недели будем обозначать с помощью остатков от деления на 7. При этом воскресенье будет обозначаться шестеркой, а пятница — четверкой:. Заполните числовой массив так, чтобы значения элементов были равны квадратам индексов.

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

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

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

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

Задача отрабатывает операции с индексами элементов массива, но является очень простой. Текст на английском языке записан в массиве a[ Помимо английских букв, в нем могут встречаться пробелы и знаки препинания.

При подсчете строчные и прописные буквы не различать. На вход программе сначала подается значение n — количество букв в тексте. В следующей строке входных данных расположены сами буквы без разделителей.

Выдайте 26 чисел — значения элементов массива b. Задачи на подобную идею часто встречаются на ЕГЭ по информатике задачи С4. Кроме того, на примере этой задачи можно наглядно показать, что индексировать элементы массивов иногда очень удобно не числовыми порядковыми величинами. Обратите внимание, что при правильном решении данной задачи текст просматривается ровно один раз, а массив результатов заполняется не по порядку, а по мере прочтения текста. Программа должна также учитывать, что в тексте могут встречаться символы, отличные от букв.

На вход программе подается последовательность чисел от 1 до 9, заканчивающаяся нулем. Всего будет введено не более чисел. Подсчитайте в этой последовательности количество единиц, количество двоек, количество троек и так далее и выдайте результат.

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

Вложенные циклы не используйте. Искомыми числами являются либо два максимальных элемента массива, либо два минимальных это возможно при наличии как минимум двух отрицательных чисел.

Поэтому сначала найдем эти 4 числа, а затем выясним, произведение какой пары чисел больше:. На вход программе сначала подается значение n — количество элементов в массиве. В следующей строке входных данных расположены сами элементы массива — целые числа, по модулю не превосходящие 30 Распечатайте только те значения элементов массива, которые встречаются в нем ровно один раз.

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

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

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

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

Причем операцию извлечения корня надо заменить на возведение в квадрат простого числа и сравнения результата с проверяемым числом:. Определите, сколько раз число n! Задача носит олимпиадный характер и действительно не очень простая. Разложим число K на простые множители. Тогда, если , то если N! Единственная оставшаяся проблема — как для простого числа P найти максимальную его степень, на которую делится N!.

Для решения этой проблемы применим следующие соображения: Каждое из этих чисел даст по одному простому множителю P в N!. Но, кроме того, чисел дадут еще по одному P , — еще по одному и т. Заметим, что суммирование можно остановить, когда очередное слагаемое равно 0. Задан массив, содержащий несколько нулевых элементов. Порядок ненулевых элементов между собой не менять. Дополнительный массив не использовать. В этой задаче требуется изменить массив, а не просто распечатать ненулевые элементы.

Последнее сделать существенно проще. Эта задача понятная, но технически ее нужно выполнять аккуратно. Приведем возможный вариант ее решения:. Дан массив натуральных чисел a 1 , a 2 , …, a n , по модулю не превосходящих , и натуральные числа k и m.

Если такого значения нет, то выведите 0. Вложенные циклы не использовать. В одномерном массиве, заполненном произвольными целыми числами, за один проход найдите непрерывный кусок, сумма чисел в котором максимальна. Фактически требуется найти такие i и j i j , что сумма всех элементов массива от a i до a j включительно будет максимальна.

Эта задача подробно разбирается в брошюре Я. Заданы два неупорядоченных массива целых чисел, по модулю не превосходящих 10 Будем рассматривать их как множества с повторяющимися элементами.

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

Возможно, например, такое решение данной задачи. Будем последовательно просматривать элементы первого массива и считать, сколько элементов, равных рассматриваемому, расположены в первом массиве до него. Затем подсчитаем, сколько элементов с таким же значением во втором массиве.

Если их не меньше, то рассматриваемый элемент можно распечатывать. Приведем следующую реализацию этого алгоритма:. Другой способ решения задачи основан на том, что элементы массива не превосходят 10 Поэтому мы можем помечать использованные элементы, прибавляя к ним число 20 После решения задачи это число надо снова вычесть из значений тех переменных, которые превосходят 10 Напишите эффективную программу, которая будет циклически сдвигать заданный массив на k элементов вправо.

Дополнительные массивы и рекурсию не использовать. Красивое решение этой задачи предложено в книге А. Там эта задача формулируется в следующем виде: Числовая последовательность называется пилообразной, если каждый ее элемент кроме первого и последнего либо больше обоих своих соседей, либо меньше обоих соседей. Любая последовательность из одного элемента является пилообразной. Последовательность из двух элементов является пилообразной, если ее элементы не равны.

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

Например, последовательность 1 2 3 4 3 1 5 преобразуется в 1 4 1 5. Тогда решение может выглядеть так: Комментарии и решения задач урока 10 2. Распечатайте в виде треугольной таблицы элементы матрицы, стоящие на местах, обозначенных цифрами 3 и 4. В кинотеатре n рядов по m мест в каждом. В соответствующем двумерном массиве хранится информация о проданных билетах на определенный сеанс единицы означают, что на данные места билеты уже проданы, нули — что данные места еще свободны.

Поступил запрос на продажу k билетов на соседние места в одном ряду. Определить, можно ли удовлетворить такой запрос. В первой строке входных данных находятся числа n, m, k В следующих n строках входных данных расположены по m чисел 0 и 1 , разделенных пробелами. Задача скорее техническая, нежели алгоритмическая, поэтому просто приведем ее решение:. Треугольник Паскаля строится следующим образом.

Первая строка состоит из одной единицы. Каждая следующая содержит на одно число больше, чем предыдущая. Первое и последнее из этих чисел равны 1, а все остальные вычисляются как сумма числа, стоящего в предыдущей строке над ним, и числа, стоящего в предыдущей строке слева от него. По введенному n 30 выведите n первых строк треугольника Паскаля. Задача предназначена для отработки умения индексировать соседние элементы матрицы. Но она важна и сама по себе. Полученные числа i -й строки соответствуют числу сочетаний из i элементов по j элементов где j — номер соответствующего столбца.

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

По введенным значениям n, m 1 n 20, 1 m 20 заполните массив размерностью n x m числами от 1 до mn , расположив их по спирали, закрученной по часовой стрелке, так, как показано в примере. Идея решения в следующем: После этого направление меняется:. При возможности использовать дополнительный массив задача становится несложной:.

В двумерном массиве размерностью n x m , все элементы которого различны, найти такие элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце.

Если искомых элементов нет, то выведите 0. Комментарии и решения задач урока 11 1. В строке имеется несколько слов, разделенных одним или несколькими пробелами. Требуется убрать из текста лишние пробелы: Если не ставить цель написать самую эффективную программу, решающую поставленную задачу, то решение может выглядеть достаточно элегантно:.

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

Требуется определить, является ли введенная фраза палиндромом. Для русских букв, записанных в кодировке Win do ws, можно считать, что коды заглавных и строчных букв отличаются на Русские и латинские буквы переведем из заглавных в строчные, уберем пробелы и проверим полученную строку на симметричность:. Слово называется палиндромом, если оно читается одинаково как слева направо, так и справа налево.

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

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

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

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

Слова разделяются одним или несколькими пробелами. Подобная подзадача встречается в задачах ЕГЭ по информатике задачи С4. Тогда признаком окончания очередного слова всегда будет являться пробел. Дана строка, содержащая по крайней мере один не ведущий пробел, за которым следует отличный от пробела символ. За счет изменения групп пробелов внутри строк количества пробелов между словами добиться того, чтобы в начале и в конце каждой из строк пробелы отсутствовали.

Количество пробелов в разных группах внутри одной строки должно различаться не более чем на единицу. Количество символов в строке должно остаться неизменным. Если количество пробелов между словами отличается, то сначала должны идти группы пробелов минимального размера, а затем — на единицу большего размера. Поэтому именно столько пробелов разместим в первой группе, а далее сведем задачу к задаче меньшей размерности: Тогда на последнем шаге n будет равно 1 и все оставшиеся пробелы будут напечатаны.

Легко показать, что при таком подходе мы получим необходимое разбиение. Приведем основную часть реализации изложенной идеи:. Напишите модификацию функции pos, которая находит все вхождения искомой подстроки в данной строке. В первой строке вводится исходная строка, в следующей — подстрока.

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

Выведите число 0, если искомая подстрока не найдена, или искомые номера символов, с которых начинается подстрока в строке. Заметим, что удалять найденные вхождения из строки или из ее копии нельзя, так как тогда не все вхождения образца, например aaa, могут быть найдены. Кроме того, при удалении подстроки нумерация символов будет нарушена.

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

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

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

ЯП_Си_Лаб_01

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

Программа оказывается достаточно сложной, если в ней учитывать, что результат выполнения любой из арифметических операций может состоять уже из нескольких цифр. Текст был зашифрован следующим образом. Сначала определяется количество букв в самом длинном слове, его длину обозначим К словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов. Затем каждая английская буква заменяется на букву, стоящую в алфавите на K букв ранее алфавит считается циклическим, то есть перед буквой A стоит буква Z , оставив другие символы неизменными.

Строчные буквы при этом остаются строчными, а заглавные — заглавными. Подобные задачи встречались в демоверсии ЕГЭ по информатике задача С4. У Васи на клавиатуре не работает клавиша пробел. Поэтому все тексты он теперь набирает слитно. Напишите программу, которая будет разделять набранный Васей текст на слова из данного словаря. На вход программе сначала подается текст, введенный Васей, — строка из не более чем латинских строчных букв. В следующей строке записано количество слов в словаре N — натуральное число, не превосходящее В следующих N строках записаны слова из словаря?

Слова записаны в алфавитном порядке. Выведите Васин текст с пробелами между словами пробел после последнего слова допустим. Если возможно несколько вариантов разбиения строки на слова, выведите один любой из них. Гарантируется, что хотя бы один способ разбиения строки на словарные слова существует. Данная задача предлагалась в году на Московской олимпиаде по информатике для 7—9-х классов в качестве наиболее сложной задачи олимпиады.

Она решается методом динамического программирования. Пусть мы знаем, разбивается ли на слова из словаря начало нашей строки длины 1, 2, …, i. Сложность такого алгоритма равна L 2? Здесь L — длина исходной строки. Время поиска в словаре зависит от выбранного алгоритма. Так, бинарный поиск будет иметь сложность M log N , где N — количество строк в словаре, а M — средняя длина слов словаря. Комментарии и решения задач урока 12 1. Напишите функцию для нахождения наибольшего общего делителя двух чисел с помощью алгоритма Евклида и используйте ее в программе для нахождения НОД уже N чисел.

Как запрограммировать сам алгоритм Евклида, уже было рассказано в решении задачи 9 урока 5. В результате основная программа может выглядеть так:. Используя эту процедуру, нарисуйте на экране елочку.

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

С помощью данной задачи отрабатывается передача массивов в качестве параметра процедур или функций. Покажем это на примере процедуры печати массива:.

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

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

Заметим, что и другие способы обмена значений двух переменных местами без использования третьей переменной приводят к такому же результату. Параметрами такой функции должны быть сама функция f функцию тоже можно передавать как параметр , вещественные значения a и b , а также точность вычислений.

Результатом является значение площади. Покажем, как решить данную задачу методом трапеций. Уменьшаем шаг в 2 раза: В результате функция может выглядеть так:. Используйте один из численных методов например, метод деления пополам или метод хорд.

Параметрами такой функции должны быть сама функция f , вещественные значения a и b , а также точность вычисления корня. Результатом является искомый корень. Приведем пример решения данной задачи методом хорд. Проводим прямую через точки a ; f a и b ; f b. Находим точку пересечения прямой с осью Oх назовем эту точку с. Далее проводим новую прямую, соединяющую точки a и b. Условие окончания алгоритма проверяется до очередного переприсваивания значений a или b: Соответствующая функция может выглядеть так:.

Числа Фибоначчи задаются следующими соотношениями:. Напишите рекурсивную и нерекурсивную функции, вычисляющие n -е число Фибоначчи, и сравните скорость их работы. Попробуйте объяснить результаты сравнения. Рекурсивная функция для нахождения чисел Фибоначчи пишется чрезвычайно просто — буквально следуя определению этих чисел:. Нерекурсивная реализация была приведена в разборе задачи 8 урока 6. Рекурсивная версия будет работать намного дольше.

Объясняется это тем, что одни и те же числа Фибоначчи в ней будут неоднократно перевычисляться. Так, чтобы найти f 6 , приходится находить f 4 и f 5 , в свою очередь, f 5 снова будет вычислять f 4. Количество рекурсивных вызовов при этом растет экспоненциально.

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

Наиболее эффективную ее реализацию можно найти в примерах к Borland Pascal: Опишите рекурсивную функцию, которая определяет, является ли симметричной часть строки S, начиная с i -го элемента и заканчивая j -м. Решите с помощью этой функции задачу 3 к уроку Напишите рекурсивную функцию для перевода десятичного числа в P-ичную систему счисления, не использующую в своей работе массив. Приведем пример процедуры, которая будет печатать результат перевода:.

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

Приведем решение данной задачи для натуральных чисел, но и для произвольных целых чисел она имеет решение:.

Запрограммируйте процедуру, которая будет печатать все сочетания из n первых натуральных чисел по k чисел. Задача относится к базовым олимпиадным алгоритмам. Она может быть решена, например, так:.

В первой строке входных данных записано n — число строчек и m — число столбцов в двумерном массиве. В последующих n строчках записано m чисел, каждое из которых равно либо 0, либо 1.

Требуется вывести количество объектов, состоящих из единичек. Если две единички являются соседями по вертикали или горизонтали, то они принадлежат одному и тому же объекту.

Кроме того, вокруг массива формируется барьер из нулей, которые позволяют не проверять выход рекурсии за границу массива. Дана шахматная доска n? Пусть конь стоит на клетке 1,1. Необходимо найти такую последовательность ходов коня, при которой он побывает на каждой клетке доски ровно по одному разу. Приведем процедуру, которая заполнит двумерный массив соответствующим образом:. Комментарии и решения задач урока 14 2.

Сведения об ученике, записанные в файле f. Число оценок в разных классах может быть разным. Запишите в файл g. Подобные задачи встречаются на ЕГЭ по информатике задача С4. Обратите внимание, что массив для хранения искомых фамилий, а также оценок одного человека не используется. При вычислении среднего арифметического деление заменено умножением. Во входном файле meteo. Формат каждой из строк следующий: Данная информация отсортирована по значению температуры, то есть хронологический порядок нарушен.

Требуется написать программу, которая будет выводить в файл avr. В первой строке вывести среднегодовую температуру. Найденные значения для каждого из месяцев следует выводить в отдельной строке в виде:. Средние значения выводить с точностью до одного знака после десятичной точки. Массив для хранения всех введенных значений не использовать. Приведем решение чуть более простой задачи, в которой просто подсчитываются среднемесячные температуры для каждого месяца:. Даны 2 текстовых файла: В каждом из файлов находится неотрицательное количество целых чисел, отсортированных по неубыванию.

Каждое из чисел по модулю не превосходит 10 6. Получите новый файл output. В данной задаче отрабатывается умение слияния двух упорядоченных последовательностей. Задача должна решаться за время пропорциональное чтению каждого из файлов:.

Ученики, недавно изучающие программирование, употребляют слишком много операторов go to , что является почти недопустимым для структурированной программы. Помогите преподавателю информатики написать программу, которая будет оценивать степень структурированности отлаженной программы школьника на языке Pascal, для начала просто подсчитывая количество операторов goto в ней.

Будем считать, что это единственный вид комментариев. В этих случаях слово goto подсчитывать не нужно. Строчные и прописные буквы в Pascal не различимы. Во входном файле goto. Размер программы не превосходит 64 Кб. В выходном файле goto. В каждом состоянии одни и те же входные символы обрабатываются по-разному. Например, если мы находимся внутри комментария, то автомат просто ждет, когда появится символ, завершающий комментарий. Приведем подобное решение данной задачи:.

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

Неотъемлемой частью ЭЗ является методически продуманная БД задач концентрической структуры, позволяющих обучать школьников современным технологиям программирования и отладки. Целесообразность использования предлагаемой БД задач основана на успешном опыте обучению программированию авторами в течение более 10 последних лет. С одной стороны, многие задачи, включаемые в БД, имеют концентрическую структуру , что позволяет обучать школьников с разным уровнем знаний и умений практически на одинаковых задачах, а с другой стороны, все эти задачи выстроены по определенной методике, суть которой состоит в последовательном достижении основных дидактических целей при изучении каждой конкретной темы.

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

А, как показано Ж. Пиаже, ошибочные теории учеников являются существенной частью процесса овладения мышлением. Поэтому использование ЭЗ в учебном процессе повысит интенсивность, эффективность, а главное — качество обучения. Задачник-сервер находится на преподавательском компьютере, на каждой рабочей станции есть клиентская часть, с которой, собственно, и работает ученик. Система проверки имеет открытую архитектуру, то есть позволяет добавлять к ней произвольное число используемых компиляторов, а также задач, проверка которых в дальнейшем будет производиться с помощью этого же задачника.

В случае, если в сети установлен firewall, для взаимодействия сервера и клиентов на компьютере с сервером должен быть открыт порт 60 Для программирующих на Паскале оптимально, если на компьютере установлен компилятор с языка Delphi. В документации по работе с системой описывается, как изменить или расширить набор компиляторов, например, добавив Visual Basic самое сложное — научить учеников создавать консольные приложения на Visual Basic: Для того чтобы программа была успешно проверена задачным сервером, необходимо, чтобы она удовлетворяла следующим требованиям.

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

Инсталлируйте программное обеспечение на компьютере, на котором предполагается работа задачного сервера. Если на данном компьютере уже установлены системы программирования Delphi или Visual C в том числе и для версии. Ознакомьтесь с руководством по настройке и использованию системы см. Создайте новую группу пользователей и какого-нибудь пользователя в этой группе.

Выберите одну из задач и попробуйте сдать на проверку ее решение, которое можно найти в папке соответствующей задачи. Если возникли сложности с проверкой решения на языке Pascal по умолчанию это делается с помощью компилятора Free Pascal 2. Внесите в решение какие-нибудь ошибки и проверьте, как изменятся результаты проверки. Попробуйте написать свое решение одной из задач, назначить эту задачу и послать ее на проверку.

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

Администрирование системы, то есть регистрация новых пользователей, включение в систему новых заданий и, наконец, назначение конкретным пользователям или группам пользователей задач для решения или контрольных тестов выполняется, как правило, преподавателем.

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

Всей группе классу назначить все задачи, но на уроке сказать, кто что делает. В появившемся в диалоговом окне списке выберите группу пользователей, название которой вы хотите модифицировать. Изменить название группы можно в соответствующем поле ввода Name. Для создания новой группы нажмите New. Если вы введете уже существующее имя группы, то, к сожалению, сообщения об этом выдано не будет. Имена групп можно набирать как латинскими буквами, так и кириллицей. Любая из отображаемых групп может быть удалена или восстановлена кнопки Remove и Show Remove соответственно.

В появившемся диалоговом окне в списке Member Of выберите группу пользователей, которую вы хотите модифицировать. Изменить параметры любого пользователя можно в соответствующих полях ввода name и password.

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

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

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

Здесь следует выбрать каталог, в котором расположены все каталоги добавляемых задач. Каталог также должен быть не просто выделен, а открыт. Данный раздел необходимо изучить лишь в случае, когда задачник предлагается использовать для проверки в режиме on-line задач личных или командных олимпиад по информатике и программированию.

На данной вкладке устанавливается время начала и окончания олимпиады. Члены группы Contest Participants могут посылать свои решения только в указанный здесь промежуток времени. По умолчанию решения членов группы Contest Participants проверяются до первого неудачного теста.

Если решение не прошло эти тесты, то оно не сохраняется на сервере, и никакая дальнейшая проверка не производится. Если же решение прошло предварительные тесты, то оно проверяется на всех основных тестах, вне зависимости от того, успешно ли оно прошло предыдущие. Также эта опция влияет на формирование таблицы рейтинга для членов группы Contest Participants. В режиме team contest рейтинг участника определяется на основании количества полностью решенных задач и на основании времени, затраченного участником на решение задач включая штрафные 20 минут за каждое неверное решение.

В режиме personal contest рейтинг участника определяется только количеством заработанных баллов. Опция Defer Verification позволяет отложить проверку решений, присылаемых во время олимпиады. А именно, решение проверяется только на предварительных тестах. При прохождении предварительных тестов решение сохраняется на сервере, и больше никаких действий не предпринимается. Данная опция полезна в том случае, когда полная проверка решения занимает много времени и вы хотите ее отложить до окончания тура олимпиады.

Опция Use Last Result влияет на то, результат какой из попыток участника учитывается при составлении рейтинга: Опция Keep All Solutions изменяет правила сохранения решений на сервере в случае personal contest.

По умолчанию сохраняются только решения, прошедшие предварительные тесты. При установке данной опции будут сохраняться все программы, посланные участником. Опция Report Type позволяет выбирать уровень детализации отчета, посылаемого участникам. В случае team contest значения данной опции имеют следующий смысл:.

Включается показ содержимого теста, вывода программы и правильного ответа. В случае personal contest пункты 2 и 3 имеют тот же смысл, а minimal означает, что участнику только сообщается, прошло его решение предварительные тесты или нет. Опция Send Rankings указывает, отсылать ли участникам таблицу рейтинга.

Опция Detailed Ranking имеет смысл только для personal contest. В этом случае по умолчанию участники в таблице рейтинга не видят своего распределения по местам, и им указывается только то, прошли их решения предварительные тесты или нет.

При включении данной опции участники будут в рейтинге видеть баллы, которые заработали их решения, и свое распределение по местам. На вкладке Paths вы можете установить имена файлов, в которые проверяющая система записывает отчеты contest log , и файла, в котором сервер хранит информацию о посланных ему решениях results.

Оба имени файла отсчитываются от рабочего каталога сервера практикумов. При этом путь к contest log должен совпадать с путем, установленным в файле. Результаты работы любой из групп пользователей можно посмотреть с помощью элемента меню Info сервера. Меню Ranking позволяет для выбранной группы пользователей посмотреть, сколько и какие задачи решил каждый из них, сколько попыток при этом сделал, а если задача не решена, то сколько первых тестов по ней все же проходят.

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

При этом соответствующие изменения должны быть произведены и в файле. При вызове программы-клиента client. В нем необходимо указать имя пользователя, его пароль и IP-адрес компьютера, на котором работает программа-сервер. Вместо IP-адреса может быть указано имя этого компьютера в локальной сети. Далее следует нажать кнопку Login. На вкладке Problems можно выбрать одну из задач, назначенную данному пользователю учителем. Описание условия задачи можно получить, нажав кнопку Description.

В общем случае клиенту будет переслан файл в формате txt, rtf или doc , который следует сохранить, а затем открыть с помощью стандартного программного обеспечения. Иногда файл открывается автоматически.

Задача, решение которой предполагается сдать, должна быть выделена в списке задач, после чего можно нажать кнопку Submit. В списке Files of type следует выбрать расширение файла с решением, которое фактически привязано к одному из компиляторов.

Затем следует найти соответствующий файл с решением и путем нажатия на кнопку Open послать его на проверку. Результаты проверки можно посмотреть на вкладке Reports:. Вкладка Ranking предназначена в основном для отображения текущих результатов on-line-соревнований. Конфигурационный файл задачи описывает такие параметры проверки, как расположение файлов с входными данными, файлов с правильными выходными данными, время, отводимое решению на прохождение каждого отдельного теста, и т.

Пути в параметрах tests, answers задаются в соответствии со следующими правилами:. В стандартную поставку проверяющей системы входят следующие проверяющие программы:. Можно проводить сравнение на совпадение с заданной точностью. Длина десятичной записи обрабатываемых чисел не ограничена;. Отличие от tokens состоит в том, что файлы предварительно не разбиваются на строки. Возможно сравнение ответов без учета регистра символов;.

Для того чтобы указать, что правильность решения должна проверяться определенным стандартным компаратором, в качестве checker следует указать. Также предоставляется возможность использовать внешние компараторы. Для этого следует в качестве checker указать. Это имя файла отсчитывается относительно каталога задачи. Предположим, что условия тестов хранятся в файлах 1, 2, 3; ответы — в файлах 1.

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

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

Методика внесения нового задания в БД формально — проста, но фактически требует высокого профессионального мастерства. Начинающему учителю рекомендуется использовать ту БД задач, которая будет поставляться в комплекте ЭЗ. Если учитель решит включить какую-либо новую задачу в БД задач ЭЗ, то он обязательно должен продумать систему тестов, прорешать эту задачу и получить ответы на подобранной системе тестов.

Именно наличие всех трех компонент условие задачи с подробным описанием форматов входных и выходных данных, система тестов, ответ к каждому тесту необходимо для включения задачи в ЭЗ. Без сомнения, это большой труд, а главное — творческий.

Например, при подобной работе могут возникнуть ситуации, когда вроде бы всем известная задача при небольшом изменении условия или ограничений на входные данные приобретает методическую значимость по сравнению с первоначальным условием. И эту ситуацию учитель должен уметь увидеть и оценить! Проводя деятельность по включению задачи в БД, учитель проводит жесткий отбор задач в реальной ситуации — сдаче своего решения своей же задачи электронному задачнику.

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

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

Основной функцией учителя является в этот период оказание консультаций, ответы на возникающие вопросы, помощь тем ученикам, которые в ней нуждаются. В силу того, что учитель обладает всей информацией о работе каждого ученика были ли попытки сдачи задания ЭЗ, сколько попыток, сколько заданий выполнено полностью успешно, а сколько — частично , он может ненавязчиво контролировать учебную деятельность учащихся.

Но на этом функции учителя конечно же не исчерпываются. После того как программа ученика была признана ЭЗ правильной, учителю, несомненно, имеет смысл посмотреть текст самой программы и обсудить ее с учеником. Иногда при этом достаточно указать на отдельные недостатки кода, а иногда оказывается, что программа ученика неприемлема по тем или иным причинам, например, задача решена не эффективно хотя и этот факт ЭЗ зачастую может отследить путем ограничения на время работы программы.

Тогда, после обсуждения с учителем, ученик снова начинает работу с ЭЗ. Использование ЭЗ позволяет выстраивать ход урока в соответствии с учебными потребностями конкретного класса. Более того, урок можно построить и таким образом: Поэтому в данном разделе предлагается давать задачу в упрощенной формулировке. Алгоритмизация и программирование в школьном курсе информатики Комментарии и решения задач урока 3 Комментарии и решения задач урока 4 Комментарии и решения задач урока 5 Комментарии и решения задач урока 6 Комментарии и решения задач урока 7 Комментарии и решения задач урока 8 Комментарии и решения задач урока 9 Комментарии и решения задач урока 10 Комментарии и решения задач урока 11 Комментарии и решения задач урока 12 Комментарии и решения задач урока 13 Комментарии и решения задач урока 14 Электронный задачник Комментарии и решения задач урока 3 1.

Приведем основной фрагмент решения: Один час соответствует 30 о , один градус — двум минутам: Впишем в таблицу остатки от деления на 3 первых семи чисел: Приведем основной оператор присваивания, определяющий решение этой задачи: