1.7 Языки программирования Типы данных Основные конструкции языка программирования. Система программирования Основные этапы разработки программ. Разбиение задачи на подзадачи Количество заданий 4 Максимальный первичный балл 9 Процент 25 Программирование Задания 8, 21,24,27
8 (базовый уровень, время – 3 мин) Проверяемые элементы содержания: знание основных конструкций языка программирования, понятия переменной, оператора присваивания Что нужно знать: переменная – это величина, имеющая постоянное имя и значение, которое изменяется в процессе выполнения программы; переменная величина характеризуется типом, который определяет множество допустимых значений этой величины и множество допустимых операций над величиной; оператор присваивания служит для записи значения в переменную;
Основные теоретические знания Что нужно знать: к основным алгоритмическим конструкциям языка программирования относятся: линейная, разветвляющаяся и циклическая; цикл с параметром (со счетчиком): for i:=1 to N do begin { что-то делаем } end; цикл с предусловием: while { условие } do begin { что-то делаем } end; цикл с постусловием: repeat { что-то делаем } until { условие };
Что нужно уметь: выполнять ручную прокрутку программы выделять переменную цикла, от изменения которой зависит количество шагов цикла определять количество шагов цикла определять переменную, которая выводится на экран Что нужно знать: формулу для вычисления n-ого элемента арифметической прогрессии: формулу для вычисления суммы первых членов арифметической прогрессии:
Значение S (переменная цикла) Значение k Проверка условия 000<1024 (да) 0+10=100+1=110<1024 (да) 10+10=201+1=220<1024 (да) 20+10=302+1=330<1024 (да) … = = <1024 (нет) Ответ: /10=103 s:=0; k:=0; while s< 1024 do begin s:=s+10; k:=k+1; end; write(k); Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer; begin k:=5; s:=2; while k < 120 do begin s:=s+k; k:=k+2; end; write(s); end. Ответ: 3598 Значение k (переменная цикла) Значение s Проверка условия 525<120 (да) 5+2=72+5=77<120 (да) 7+2=97+7=149<120 (да) 9+2=1114+9=2323<120 (да) … 119+2=121?121<120 (нет) S=2, S=S a 1 =5, a n =119, d=2, a n =a 1 +(n-1) d, n=58 S=2+(5+119) 58/2=3598
При каком наибольшем введенном числе d после выполнения программы будет напечатано 55? var n, s, d: integer; begin readln(d); n := 0; s := 0; while s <= 365 do begin s := s + d; n := n + 5 end; write(n) end. Ответ: 36 Значение s (переменная цикла) Значение n Проверка условия 000<=365 (да) 0+d=d0+5=5d<=365 (да) d+d=2d5+5=102d<=365 (да) 2d+d=3d10+5=153d<=365 (да) … n d 55 n d<=365 (нет) Количество шагов цикла (55-0)/5=11, S=11 d 10d 365, d 365/11 33,2 34<=d<=36
21 (повышенный уровень, время – 6 мин) Проверяемые элементы содержания: умение анализировать программу, использующую процедуры и функции 1. Понятие подпрограммы. Подпрограмма (от англ. subroutine) это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы, имеющая собственное имя. Подпрограмма записывается один раз, но может использоваться многократно при упоминании ее имени в тексте программы.
2. Назначение подпрограммы Подпрограмма появилась как средство оптимизации программы по объёму занимаемой памяти: каждая подпрограмма описывается в программе один раз, а обращаться к ней можно многократно. Главное назначение подпрограммы: структуризация программы с целью удобства её читаемости и отладки.
Иллюстрация понятия подпрограммы
3. Виды подпрограмм Подпрограммы реализуются в виде функций и процедур. Функция (Function) это подпрограмма, результат выполнения которой есть единственное (скалярное) значение, присваиваемое имени этой функции. Процедура (Procedure) это подпрограмма, имеющая любое количество входных и выходных данных.
4. Описание подпрограммы Подпрограмма описывается в разделе описаний программы. Функция Процедура Function ( ): ; begin ; := end; Procedure ( ); begin end;
5. Обращение к подпрограмме Функция Процедура Имя (список фактических параметров) Обращение к функции включается в качестве операнда в выражение, стоящее в правой части оператора присваивания. Обращение к процедуре является самостоятельным оператором, который называется оператором вызова процедуры.
Оформите в виде подпрограммы-функции алгоритм вычисления тангенса tgx
Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
Ответ: 4
Напишите в ответе наименьшее значение входной переменной k, при котором программа выдает тот же ответ, что и при входном значении k=64. При k=64 программа выведет i=7, так как 7 2 <64. При k=65 программа выведет i=8. При k=49 программа выведет i=6. Вопрос: при каких k, программа выведет 7? Это числа из диапазона [50;64].
24 (повышенный уровень, время – 3- мин) Проверяемые элементы содержания: умение прочесть фрагмент программы и исправить допущенные ошибки Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y - действительные числа) и определяет принадлежность точки заштрихованной на рисунке области, включая ее границы. Программист торопился и написал программу неправильно. var x,y: real; begin readln (x,y); if x*x+y*y>=4 then if x>=2 then if y<=x then write ('принадлежит') else write ('не принадлежит'); end. 1) Приведите пример таких чисел x, y при которых программа неверно решает поставленную задачу. 2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Умение прочесть фрагмент программы на языке программирования и исправить допущенные ошибки Уравнение окружности радиуса r>0 с центром в точке (a;b) в прямоугольной системе координат имеет вид (x-a) 2 +(y-b) 2 =r 2. Если точка с координатами (x;y) лежит вне круга, границей которого является окружность, то (x-a) 2 +(y-b) 2> r 2. Если точка с координатами (x;y) лежит внутри круга, границей которого является окружность, то (x-a) 2 +(y- b) 2< r 2. Прямая ax+by+c=0 разбивает всю координатную плоскость на две полуплоскости, в одной из которых ax+by+c>0, а в другой ax+by+c<0. Для того чтобы узнать, какая именно из плоскостей задается данным неравенством, следует взять не лежащую на ней точку M(x;y) и проверить выполнимость неравенства. Если неравенство истинно в точке M, то им задается полуплоскость, в которой лежит точка M, а если нет, то противоположная полуплоскость.
Умение прочесть фрагмент программы на языке программирования и исправить допущенные ошибки Правильное решение задания:
Умение прочесть фрагмент программы на языке программирования и исправить допущенные ошибки Второй вариант правильного решения: var x,y: real; begin readln (x,y); if (x*x+y*y>=4) and (x>=2) and (y>=0) and (y<=x) then write (принадлежит) else write (не принадлежит); end.
Умение прочесть фрагмент программы на языке программирования и исправить допущенные ошибки
Требовалось написать программу, которая вводит с клавиатуры натуральное число N, не превышающее 109, и выводит сумму чётных цифр в десятичной записи этого числа или 0, если чётных цифр нет. Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа Приведите пример числа, при вводе которого программа выдаст верный ответ. 3. Найдите в программе все ошибки (их может быть одна или несколько).
В презентации использованы материала с сайта разработки автора, опубликованные в ряде выпусков журнала Информатика и образование.