Текст
                    Ан ел и ко в а Л. А.
•СОЛОН»
Алгоритмика
в теории и практике
Примеры решения задач на базе

Серия «Элективный курс * Профильное обучение» Л. А. Анеликова Алгоритмика в теории и практике (примеры решения задач на базе классического языка программирования QBasic) с компакт-диском Рекомендовано Академией повышения квалификации и профессиональной переподготовки работников образования министерства образования и науки Российской Федерации Книга предназначена для проведения элективного курса и профильного обучения в школах и колледжах Москва СОЛОН-ПРЕСС 2007
УДК 004.5 ББК 32.973.26-018.2 А 64 Л. А. Анеликова Алгоритмика в теории и практике. — М.: СОЛОН-ПРЕСС, 2007. - 72 с.: ил. - (Серия «Элективный курс * Профильное обучение») ISBN 5-98003-301-7 Данное учебное пособие предназначено для учителей и учащихся как средних так высших учебных заведений, изучающих программирование на классическом языке Qbasic, как в качестве базового модуля, так и на элективных курсах. Практикум содержит большое количество примеров и упражнений по работе в вышеуказанной среде. Рассматриваются все возможные классические конструкции, используемые в программирова- нии. Задачи сопровождаются текстами программ и блок-схемами, для наглядности структуры алгоритма. Примеры могут быть также включены в практические задания к биле- там в 9 и 11 классах, и использоваться учащимися при подготовке к за- нятиям и итоговой аттестации, как в рамках школьной программы, так и в специальных и высших учебных заведениях. К книге прилагается компакт-диск. КНИГА - ПОЧТОЙ Книги издательства «СОЛОН-ПРЕСС» можно заказать наложенным платежом (оплата при получении) по фиксированной цене. Заказ оформляется одним из двух способов: 1. Послать открытку или письмо по адресу: 123242, Москва, а/я 20. 2. Оформить заказ можно на сайте www.solon-press.ru в разделе «Книга — почтой». Бесплатно высылается каталог издательства по почте. При оформлении заказа следует правильно и полностью указать адрес, по которому должны быть высланы книги, а также фамилию, имя и отчество получателя. Желатель- но указать дополнительно свой телефон и адрес электронной почты. Через Интернет Вы можете в любое время получить свежий каталог издательства «СО- ЛОН-ПРЕСС», считав его с адреса www.solon-press.nVkat.doc. Интернет-магазин размещен на сайте www.solon-press.ru По вопросам приобретения обращаться: ООО «АЛЬЯНС-КНИГА КТК» Тел: (495) 258-91-94, 258-91-95, www.abook.ru Сайт издательства «СОЛОН-ПРЕСС»: www.solon-press.ru E-mail: solon-avtor@coba.ru ISBN 5-98003-301-7 © Анеликова Л. А., 2007 © Макет и обложка «СОЛОН-ПРЕСС», 2007
Введение В данном пособии представлен теоретический материал и при- меры решения задач по следующим разделам: 1. Операторы графики 2. Операторы ввода/вывода, преобразование арифметических выражений в линейную форму. 3. Операторы условного перехода. 4. Операторы цикла. 6. Символьные переменные. 7. Одномерные массивы: • Способы заполнения массивов: • Нахождение суммы элементов массива и среднего арифмети- ческого. • Нахождение минимального и максимального элемента мас- сива. • Перестановка элементов массива. • Замена и вывод элементов массива по критериям 8. Двумерные массивы (числовые и символьные) 3
1. Операторы графики Вся графическая информация на экране строиться из множест- ва точек, которые называют пикселями. Пиксель — одна точка на экране. Растр — количество точек, которое можно разместить на экра- не по осям X и по У. При работе с графическими операторами надо указать компью- теру, что хотим работать с каждой точкой экрана. В текстовом ре- жиме все рабочее поле разбивается на строки и столбики. Оси на экране располагаются, как показано на рис. 1 и не совпадают с де- картовой системой координат. Нулевая точка приходится на верх- ний левый угол монитора. Ось X располагается вдоль верхней гра- ницы экраны, а положительная ось Y направлена вниз вдоль ле- вой границы экрана. Это надо учитывать при размещении рисунков. Можно менять начало координат (это удобно при по- строении графиков, но не существенно при построении рисун- ков). Такие координаты называются логическими. Y Рис. 1. Расположение и направление экранных осей При работе можно задавать различные режимы экрана с помо- щью команды SCREEN. Следующие примеры показывают, каким количеством точек мы можем располагать при задании различных графических режимов: SCREEN 7 — размер экрана 315 х 190, широкие большие буквы SCREEN 8 — размер экрана 639 х 190, узкие крупные буквы SCREEN 9 — размер экрана 639 х 335, рекомендуемый оптималь- ный размер Для задания цвета экрана и линий применяется оператор CO- LOR. COLOR фон, палитра — меняет цвет экрана и линий (фон — цвет букв, а палитра — цвет экрана) 4
Может быть несколько значений цвета: 1 — синий 8 - - серый 2 — зеленый 9 — темно голубой 3 — голубой 10 — темно зеленый 4 — красный 11 — серо-голубой 5 — сиреневый 12 — темно красный 6 — коричневый 13 — темно сиреневый 7 — светло серый 14 — желтый Оператор LINE( xl,yl) — (х2,у2) , С — рисует отрезок, где ко- ординаты начала отрезка XI и Yl, а Х2 и Y2 координаты конца от- резка, С — номер цвета линии. Для получения прямоугольника с диагональю в указанных точ- ках оператор будет иметь вид LINE( xl,yl) - (х2,у2) , С , В Для получения закрашенного прямоугольника: LINE( xl,yl) - (х2,у2) , С , BF Для вывода точки необходимо знать ее координаты, которые задаются оператором PSET(x,y), где х и у координаты точки на экране. Замкнутые фигуры можно закрашивать любым цветом, кото- рый упоминался при задании цвета линии. Для этой цели в Бей- сике используется следующий оператор: PAINT (х,у) цвет закраски, цвет границы — закрашивает замкну- тую область указанным цветом. Координаты х и у должны нахо- дится внутри замкнутой области. При составлении на экране различных рисунков необходимо уметь выводить не только прямые линии, но и правильные окруж- ности, вытянутые по оси X или У, а также части окружности. Для этой цели используется оператор CIRCLE, который может иметь в своем наборе различные параметры. В зависимости от этого мож- но получать вышеуказанные фигуры. CIRCLE (х,у), R, С, — рисует окружность, с центром в точке х,у, радиуса R и цветом линии С. Для рисования части окружности надо указать параметры нача- ла и конца дуги. CIRCLE (х,у) , R, С, oil, ос2 5
1. Операторы графики где oil и ос2 определяются из нижеуказанного рисунка: а1=0, а2=1,57 011=1,57, а2=3,14 а1=3,14, а2=4,71 а1=4,71, а2=6,28 Для рисования окружности вытянутой вдоль оси X или вдоль оси У, надо указать коэффициент сжатия К, который может иметь значения к=1/п — чем к больше п, тем окружность больше вытягивается по оси X к= п — с увеличением п окружность вытягивается по оси Y. В данном случае надо опустить параметры oil, а2, но разделите- льные знаки (запятые) оставить. Таким образом оператор, который нарисует окружность вытя- нутую по оси X будет выглядеть: CIRCLE (х,у), R,C,„1/4 А оператор, вытягивающий окружность по оси У: CIRCLE (х,у), R,C,„4 Примеры решения задач по теме Составьте программу для рисования робота, используя опера- торы для вывода линий и прямоугольников. 6
CLS: SCREEN 9 LINE (225, 100)-(300, 50), , В LINE (200, 125)-(325, 225), , В LINE (250, 100)-(275, 125), , В LINE (225, 225)-(250, 275), , В LINE (275, 225)-(300, 275), , В LINE (200, 275)-(250, 300), , В LINE (275, 275)-(325, 300), , В LINE (230, 70)-(295, 75), , В LINE (250, 80)-(275, 90), , В LINE (260, 50)-(225, 25) LINE (260, 50)-(300, 25) LINE (200, 150)-(150, 200) LINE (325, 150)-(375, 100) Составьте программу рисования трех окружностей, центры ко- торых лежат на одной прямой на расстоянии 45 точек. Cis screen 9 circle (100,100), 50, 4 circle (145,100), 50, 4 circle (190,100), 50, 4 очистить экран задать графический режим нарисовать окружность с центром 100, 100, радиусом 50, красным цветом Основные команды оператора DRAW Оператор DRAW предназначен для вывода на экран линий, взаимосвязанных между собой. Такому изображению легко изме- нить местоположение, масштаб, угол поворота, т. к. его можно привязать к определенной точке. Меняя положение этой точки, изменяется и местоположение рисунка. В состав этого оператора входит несколько управляющих команд, которые в совокупности составляют целую последовате- льность связанных между собой действий. В операторе 15 команд. 9 из которых непосредственно связаны с вычерчиванием линий по направлениям, указанным на рисун- ке 2: Un — вверх Dn — вниз Еп — по диагонали вверх и вправо Fn — по диагонали вниз и вправо 7
1. Операторы графики Ln — влево Rn — вправо Gn — по диагонали вниз и влево Нп — по диагонали вверх и влево Вместо п подставляется число, равное количеству точек на ко- торое надо сместиться относительно точки, в которой находились после выполнения последней команды. Например, команда Un означает вычерчивание линий длиной п вверх от текущей точки. Но если вы только начинаете работать с этой командой, то обя- зательно следует указать точку, из которой будет производиться вычерчивание линии. Это можно задать с помощью команды М х,у — смеситься в заданную точку, где х и у абсолютные коорди- наты точки на экране. Команде может предшествовать префикс В — двигаться, но не чертить и N — начертить и вернуться в нача- льную точку. Пример: Нарисуйте на экране прямоугольник (рис. 3), исполь- зуя команду DRAW. 50 100 150 200 250 300 350 400 ------;--------------------------;-----------------► юо________:___________________________ 200 300 __________________________________ Рис. 3 Текст программы, которая нарисует с помощью оператора DRAW прямоугольник, показанный на рис. 3, представлен ниже 8
CLS SCREEN 9 DRAW'BM 50,300 U200 R250 D200 L250" В последовательности указаны следующие команды: ВМ 50,300 — сместиться в точку с координатами 50 и 300 (линия не рисуется) U200 — сместиться вверх на 200 точек R250 — сместиться вправо на 250 точек D200 — сместиться вниз на 200 точек L250 — сместиться влево на 250 точек Если в данном примере изменить координаты начальной точ- ки, то изображение прямоугольника будет выполнено, но в другом месте экрана (оно будет привязано к другой точке). Наберите про- грамму, выполните ее и попробуйте задать различные значения исходной точки, но так, чтобы изображение не вышло за рамки экрана. Такой же прямоугольник можно нарисовать, используя только команду смещения в точку. В этом случае мы должны указывать последовательно точки, координаты которых соответствуют углам прямоугольника. CLS SCREEN 9 DRA W"BM 50,300 М 50,100 М 300,100 М 300,300 М 50,300” В данном случае нельзя изменять начальную точку, т. к. она не является базовой для остальных. Каждая точка является независи- мой от других и такое смещение называют абсолютным смещени- ем в точку. В состав оператора DRAW входят еще 6 команд, которые явля- ются управляющими в этом операторе по отношению к первым, но эти команды будут работать в том случае, если кроме указания первой точки через команду М х,у, она больше в записи не встре- чается (т. е. используются только команды относительного смеще- ния. Ап — позволяет повернуть созданное изображение на угол п (если п = 0, то 0° n = 1, то 90° п = 2, то 180° п = 3, то 270° 9
1. Операторы графики ТАп — эта команда поворачивает рисунок на любой угол п от —360° до +360° Сп — эта команда устанавливает номер цвета линии. Sn — масштаб увеличения / уменьшения, по умолчанию п = 4, при указании п<4 рисунок уменьшается, при п>4 увеличивается. Данные команды надо записать после указания начальной точ- ки, если они должны быть применены ко всему изображению Рп, р — позволяет раскрасить замкнутую фигуру в цвет с номе- ром п, до границы с номером р. Относительные координаты команды DRAW При рисовании фигуры можно использовать взаимную привяз- ку каждой последовательной точки фигуры. Для этого необходимо вычислять каждый раз на сколько изменились координаты X и У, относительно предыдущей точки и записывать в команде М+х, —у (относительные координаты), с соответствующим знаком. Знак надо писать обязательно, даже если он положительный. В против- ном случае эта команда будет восприниматься как смещение в точку с абсолютными координатами. С помощью этой команды можно строить сложные кривые ли- нии, состоящие из маленьких кусочков прямых отрезков. Разберем примеры: 1. Составьте программу для рисования ко- раблика, используя относительные координа- ты команды DRAW CLS SCREEN 9 PSET (27,40) DRAW "M +100, +100 M +10,-100 L20 D60 R20 С4 U60" DRAW ”ВМ 100, 50 L30 С2 D45" В этом примере используются как команды относительного смещения, так и уже известные команды по направлениям. Эти команды могут дополнять друг друга. 2. Выполните рисование изображенной на рисунке 4 фигуры с помощью команды М +,+ в относительных координатах. CLS SCREEN 9 PSET (50, 150), 1 Рис. 4 10
DRAW "sl9 m+20,+15 m+0,-15 m+5,+10 m+3,+2 m+1,-0 m+1,-1 m+3,-3 m+1,-1 m+2,-5 m+2,-17 m-25,+2 m-6,+4 m-1,+5 m+3,+2 m+12,+2 m-21,+0 bm+5,+2pl4,l bm+10,-10p4,l" Данная программа состоит из задания начальной точки, а затем строится цепочка, состоящая из команд относительного смеще- ния. Примеры решения задач по теме 1. Составьте программу для рисования на экране следующих фигур: 2 Решение: CLS SCREEN 9 LINE (100, 5)-(75, 25), 2.LINE (75, 25)-(125, 25), 2 LINE (125, 25)-(100, 5), 2.LINE (55, 65)-(145, 65), 2 LINE (145, 65)-(100, 45), 2: PAI NT (100, 55), 2, 2 LINE (100, 65)-(40, 90), 2:LINE (40, 90)-(160, 90), 2 LINE (160, 90)-(100, 65), 2.PAINT (100, 75), 2, 2 LINE (300, 50)-(400, 120), 6, B:LINE (370, 7)-(380, 37), , В LINE (350, 5)-(300, 50), LLINE (350, 5)-(400, 50), 1 LINE (300, 50)-(400, 50), l.PAINT (350, 15), 1, 1 LINE (315, 70)-(340, 95), 6, B:LINE (360, 70)-(385, 95), 6, В LINE (327.5, 70)-(327.5, 95), 6:LINE (315, 82.5)-(340, 82.5), 6 LINE (372.5, 70)-(372.5, 95), 6:LINE (360, 82.5)-(385, 82.5), 6 CIRCLE (100, 220), 50, 12, 2.2, .95, l.CIRCLE (100, 170), 40, 12,,, 1 / 3 LINE (60, 169)-(139, 169), 12:CIRCLE (82, 155), 22, 12, 6.2, 3.5, 1.2 CIRCLE (118, 155), 22, 12, 5.9, 3.1, 1.2 CIRCLE (82, 148), 5, 12, , , l.CIRCLE (118, 148), 5, 12, , , 1 CIRCLE (82, 270), 15, 12, 2.1, 6.28, 1/2 CIRCLE (120, 270), 15, 12, 3.14, 1.1, 1/2 11
1. Операторы графики LINE (400, 230)-(500, 290), 14, B.CIRCLE (450, 260), 27, 14 CIRCLE (355, 245), 27, 14, , , 1 / 3 CIRCLE (545, 245), 27, 14, ,, 1 / 3 LINE (382, 245)-(410, 220), 14.LINE (518, 245)-(490, 220), 14 LINE (410, 220)-(490, 220), 14:LINE (328, 242)-(375, 195), 14 LINE (572, 242)-(525, 195), 14.LINE (375, 195)-(525, 195), 14 2. Нарисуйте три окружности, центры которых лежат на одной прямой на расстоянии 45 точек друг от друга по оси Y. Решение: cis screen 9 circle (100,100), 50, 4 circle (100,145), 50, 4 circle (100,190), 50, 4 3. Нарисуйте робота, используя возможные команды DRAW. Решение: CLS: SCREEN 9 D RAW"В М300, 250 U100 R200 D100 L200" D RAW"В М350, 150 U100 R100 D100" DRAWBM350, 250 D100 LIO U100" DRAW"BM450, 250 D100 R100 U100" D RAW"В М300, 200 G100" DRAWBM500, 200 Е100" DRAW"BM400, 50NE20NH20" 4. Используя операторы для рисования линий и прямоугольни- ков, составьте программу для рисования на экране следующей фи- гуры: 12
Решение: CLS: SCREEN 9 LINE (500, 70)-(450, 25): LINE (450, 25)-(400, 50) LINE (400, 50)-(375, 100): LINE (375, 100)-(400, 125) LINE (400, 125)-(350, 125): LINE (350, 125)-(300, 150) LINE (300, 150)-(225, 250): LINE (225, 250)-(200, 325) LINE (200, 325)-(250, 275): LINE (250, 275)-(250, 300) LINE (250, 300)-(275, 275): LINE (275, 275)-(300, 300) LINE (300, 300)-(275, 300): LINE (275, 300)-(325, 400) LINE (325, 400)-(325, 275): LINE (325, 275)-(575, 200) LINE (575, 200)-(575, 175): LINE (575, 175)-(425, 75) LINE (425, 75)-(435, 60): LINE (435, 60)-(500, 70) LINE (435, 45)-(445, 55), , В 13
2. Операторы ввода/вывода Величины, имя значение, тип Часто при составлении программ приходится сначала вычис- лять необходимые числовые параметры, а затем использовать их. Для этих целей в алгоритмических языках используются ВЕ- ЛИЧИНЫ. Этот термин взят из математики. Любая величина имеет имя, значение и тип. Общаясь между собой люди на вопрос «кто это?» или «что это такое?» отвечают одним словом, которое обозначает данный пред- мет или человека. Чтобы сообщить информацию о предмете или явлении, его нужно обозначить-дать ему имя. Имя служит для обозначения величины, с которой необходимо производить какие либо действия. Имя переменной образуется из одного или нескольких символов (букв или цифр), причем первый символ должен быть обязательно буквой. Например: A, ANC, LI2, Al, SDY,VFR57 SUMMA Если для человека имя связано с каким-либо объектом, то для компьютера это определенная ячейка оперативной памяти. При трансляции составляется таблица, в которой каждому имени пере- менной ставиться в соответствии конкретный числовой адрес ячейки памяти. Каждая величина должна иметь значение. С помощью значе- ния величины можно сравнивать и отмечать изменения, которые с ними происходят, например, изменение веса, места жительства, количество отсутствующих на уроке, изменение цвета. Значение величин выражаются числами или словами. Например, длину можно определить числом, а окрас собаки — словом. Значение ве- личине присваивается с помощью оператора присваивания (=). Имя должно стоять всегда слева от знака равно, а ее значение или арифметическое выражение, определяющее значение переменной справа. А=87 переменной с именем А присвоено значение 87 В=43+А переменной с именем В присвоено значение 43+А Для запоминания информации в ПК отводится ПАМЯТЬ (как классная доска). Информацию можно читать, стирать и записы- вать новую. 14
Место, отведенное под величину в памяти называют ячейкой («полочка»). Если она не определена (нет значения), то «полка» пустая. Итак, чтобы у величины было значение его надо присвоить с помощью знака = (равно) а=5 в=6.9 При присваивании нового значения величине, старое «затира- ется» в памяти и записывается новое. а=5 а=7 а=-1 В результате такой последовательности в ячейке памяти, опре- деляющей значение переменной А останется величина равная —1. Величине можно присваивать и арифметическое выражение. Тогда компьютер сначала вычисляет выражение справа от знака «присвоить», а затем полученное значение записывает в ячейку памяти. Поэтому в информатике правомерно такое выражение п=п+1, т. е. в этом случае предыдущее значение извлекается из ячейки, добавляется к нему 1 и затем новое значение записывается вместо старого. Такое выражение обычно используется в счетчиках. Разберем пример: А=2: В=7: С=А+В: А=А+С В данном примере величине А присваивается значение равное 2, а величине В- равное 7. Значение величины С складывается из значений А и В и равно 9. Затем изменяется значение А: из ячей- ки извлекается число 2, к нему добавляется значение С, равное 9, затем результат записывается в ячейку, определяющую значение величины А. В результате величины будут иметь следующие значе- ния: А=11 В=2 С=7 Величины по ТИПУ бывают символьные или числовые. Символьные — это сочетание символов, букв, слов и т. д. Для обозначения символьной переменной к имени добавляется знак доллара $, а присваемое значение заключается в скобки. Например : В$, dom$, doml$ kricha$= «черепица» V$= «Компьютер» 15
2. Операторы ввода/вывода С этими переменными нельзя производить арифметические действия. Действие сложение — это складывание слова из букв и слогов, или предложения из слов. Например, если А$="погода" В$="хорошая" С$=В$+А$, то значение перемен- ной С будет С$="хорошая погода" или А$="2" В$="3" С$=А$+В$="23" Числовые величины в свою очередь могут быть целые или ве- щественные (дробные). Для обозначения целых чисел к имени переменной можно до- бавлять знак %. Например : А% SUMMA%, это экономит компь- ютерную память, т. к. под целую переменную отводится места ме- ньше, чем под дробные числа. Вещественные переменные имеют две формы представления: основную и экспоненциальную. Основная форма отличается от обычной записи дробных деся- тичных чисел только тем, что целая и дробная части отделяются точкой, а не запятой. При выводе целых и вещественных чисел в основной форме выделяются 9 позиций: одна для знака числа (вместо + использу- ется пробел), одна для десятичной точки и семь позиций для цифр числа. Следовательно, числа с большей целой частью или маленькие правильные дроби невозможно представить в этой форме. Например числа 12345678 и 0,000000012 Для расширения диапазона и сокращения записи чисел испо- льзуется экспоненциальная форма вещественного числа. В этой форме можно любое число представить умножением на степень числа десять. Например : 1,2 = 1,2*10 =12*10 А= 120* 10 А=0,12*10 =0,012*10 Существует множество представлений одного и того же числа в такой форме. Число с нулевой целой частью и ненулевой первой цифрой дроби называют нормализованным. Дробная часть нормализованного числа называется мантиссой числа. Показатель степени числа десять — порядком числа. В рассмотренном примере нормализованным является число 0,12. При этом порядок равен 1, а мантисса 12. 16
Для записи числа в экспоненциальной форме знак умножения на 10 опускается, число 10 заменяется на букву Е (англ. Expo- nent — показатель степени), а далее в той же строке записывается порядок числа со знаком (+ опускается). Порядок должен находи- ться в интервале от —9809 до +9809. При выводе числа в экспоненциальной форме выделяется 15 позиций: одна для знака числа (+ заменяется пробелом), одна для десятичной точки, семь позиций для цифр мантиссы, одна для буквы Е, одна для знака порядка (вместо + пробел), и четыре для цифр порядка. Например. 12345678 0.1234568Е+8 0,000000012 0.12Е-7 При отбрасывании лишних разрядов производиться округление числа. Величины могут быть постоянными — константы (которые в процессе работы программы не изменяют своего значения) и пе- ременными — меняющими в течении работы программы значе- ние, хотя бы один раз. Запись простых арифметических выражений в линейной форме При записи арифметических выражений с помощью клавиату- ры невозможно без специальных программ написать, например, сложные многоэтажные дроби, изобразить квадратный корень. Поэтому для записи любого арифметического выражения приме- няется линейная форма записи (т. е. мы как бы вытягиваем нашу сложную формулу в одну строку). Для такого преобразования используются следующие математи- ческие знаки: + — сложение — — вычитание * — умножение / — деление А — возведение в степень sqr(x) — вычисление квадратного корня Приоритетность выполнения действий как и в математике. Для изменения порядка действий применяются только круглые скобки. 17
2. Операторы ввода/вывода Разберем примеры: Запишите в линейной форме следующее арифметическое выра- жение: 1). 2х2 + л/Р~ a + b При преобразовании данного выражения будем заменять мате- матические знаки согласно вышеуказанным соглашениям. Не за- бывайте о порядке действий. Действие которое должно выполня- ться первым, а имеет более низкий приоритет заключается в круг- лые скобки. В данном примере надо числитель и знаменатель заключить в скобки. В результате получаем следующее выражение в линейной форме (2 * хА2 + Ж?(хА3))/(я + Ь). 2). , -----= SQR(l/x + хА3)/(2 * X) 2х Во втором примере знаменатель надо заключить в скобки, т. к. деление и умножение имеет одинаковый приоритет. Если не по- ставить скобок, то компьютер сначала произведет деление числи- теля на 2, а затем результат умножит на X, а это приведет к невер- ному результату. Для вычисления тригонометрических функций используются практически одноименные стандартные функции, но все аргумен- ты (а это могут быть значения углов, выраженные обязательно в радианах, переменные, арифметические выражения) заключаются в круглые скобки. Надо помнить следующие правила записи при возведении в степень аргумента или значения функции. Ниже приведены при- меры. SIN X2=SIN(XA2) SIN2 Х= (STN(X))A2 Для различных преобразований и вычислений часто в програм- мировании используеются еще две функции. Это функция опреде- ления целой части числа, переменной или арифметического выра- жения — TNT(X). В стандартном варианте дробная часть числа от- брасывается без округления. 18
И вторая функция определения остатка от деления одного це- лого числа на другое. Если предположить что число А=10, число В=7, то результатом работы функции С= A mod В будет число 3. Оператор вывода информации Чтобы видеть результаты работы компьютера, когда мы строим алгоритм решения какой-либо формулы или задачи, необходимо ответ напечатать на экране. Для этого применяется специальный оператор PRINT. Но надо помнить, что при таком выводе мы бу- дем работать с текстом, а не с графикой. А это означает, что те- перь экран монитора разбивается на строки и позиции. Здесь мы уже не можем управлять каждой точкой экрана, как при рисова- нии линий и окружностей. Каждая буква, цифра и любой другой символ клавиатуры имеет определенный размер и может выводит- ся только на строке и в определенной позиции, чтобы знаки не сливались и удобно читались. (Ведь в своих тетрадях вы тоже стараетесь писать слова на разных строчках и отделять одну букву от другой). Поэтому надо помнить, что экран имеет в нормальном режиме 25 строк и 80 колонок. Оператор вывода информации на экран имеет следующий вид. PRINT А, В, С А, В и С это имена переменных, значение которые надо вывести на экран. Для вывода сообщений на экран слова должны помещать в ка- вычки: PRINT "Знакомство с оператором вывода" Если в операторе PRINT переменная или текст помещается в кавычки, то он выводится на экран без изменения. Это рекомен- дуется делать при выводе значений переменных, чтобы определить какое значение к какой переменной относится. Например в программе CLS: А=5 : PRINT’A=”;A На экране мы увидим текст А=5 Если выводимые переменные разделяются запятой, то на экран выводятся значения этих переменных через 14 позиций. 19
2. Операторы ввода/вывода Для более плотной записи вывода надо в качестве разделителя переменных использовать ; (точку с запятой). Если запятая или точка с запятой стоят за последней перемен- ной в строке, то следующий оператор вывода, который встретится в программе, будет печатать значения на этой же строке. Если в операторе отсутствуют переменные, то на экран выво- дится пустая строка (например, это можно использовать для отде- ления одной части текста от другой). Выводом значений или слов на экране можно управлять с по- мощью специальных функций управления выводом: LOCATE X,Y — где X — номер строки, Y — номер позиции в строке SPC(n) — вывод п пробелов (от 1 до 255) ТАВ(п) — переход к позиции п (п от 1 до 255) Данные функции необходимо использовать перед оператором вывода. На блок-схемах оператор ввода изображается в виде следующей фигуры (которая называется параллелограмм) Ввод а, в Разберем примеры: 1. В следующем фрагменте программы записаны операторы, которые позволяют выводить на экран переменные, используя вы- шеуказанные функции. CLS очистить экран А=5 .PRINT А: присвоить переменной А значение 5 и напечатать А=50 присвоить А значение 50 LOCATE 10,30 : PRINT А вывести значение А в строку 10 позицию 30 В= 7: С= 12 : D=25 присвоить переменным В, С, D значения 7, 12, 25 TAB (20):PRINT А, В значения А и В выводятся с 20 позиции строки 11 PRINT C;D; значения С и D выводятся с 1 позиции строки 12 А=100 присвоить переменной А значение 100 20
PRINT "значение A=”; А значение переменной А выводиться в той же строке, где С и D и с дополните- льным текстовым пояснением TAB(5):PRINT D значения D выводятся с 5 позиции строки 13 2. Составьте программу для нахождения площади S круглого зеркала, используемого в телескопе, по формуле S=tiR2. Радиус зеркала г = 100 дюйм, л=3.141595. Cls:r=100 Pi=3.141595 S=Pi*r^2 Print "площадь зеркала=”;5 Блок-схема к данной задачи будет выглядеть следующим обра- зом: Оператор ввода информации INPUT Часто в процессе выполнения программы необходимо запра- шивать (вводить с клавиатуры) недостающую для вычислений ин- формацию, вести диалог. В таком случае необходимо иметь опера- тор, который будет запрашивать и ждать ввода нужной информа- ции. Пока эта информация получена не будет, не будет дальше 21
2. Операторы ввода/вывода продолжать работу и ваша программа. Таким оператором является INPUT. Когда в программе встречается этот оператор, останавливается выполнение программы, на экране появляется знак вопроса и компьютер ждет ввода такого количества данных, какое указано в этом операторе. Например, при следующей записи необходимо ввести значения трех переменных. INPUT А,В, С — на экране появляется знак вопроса Также, как и оператор вывода оператор ввода имеет несколько управляющих моментов. Например, если точка с запятой стоят пе- ред именами переменных, то знак вопроса не выводится. INPUT ;А,В, С — подавляет вывод знака вопроса В большинстве случаев приходится пояснять текстовым сооб- щением о том, какие данные необходимо ввести. Для этого текст сообщения помещается в кавычки (как и при выводе в операторе Print), затем ставится разделительный знак (точка с запятой или запятая) и перечисляются имена переменных. INPUT;"Введите три числа”;А, В, С — появляется фраза «введите три числа» Для ввода символьной переменной около имени переменной надо указывать знак $. Например А$, В$, тогда с этими перемен- ными мы не можем производить арифметические действия. На блок-схеме такой оператор изображается блоком в виде па- раллелограмма с указанием слова ВВОД Примеры решения задач по теме 1. В данной задаче запрашиваются значения двух переменных А и В. Затем значения печатаются на экране. CLS: LOCATE10,20 .INPUT "Введите два числа";А,В LOCATE 12 ,20 : PRINT "А=";А LOCATE 12 ,35 : PRINT "В=";В Блок-схема такой программы будет выглядеть: 22
2. Введите три числа и выведите их сумму и произведение. CLS: LOCATE10,20 .INPUT "Введите три числа";А,В,С S= А+В+С Р=А*В*С LOCATE 12 ,20 : PRINT "сумма чисел =";S LOCATE 12 ,35 : PRINT "произведение чисел =";Р Блок-схема такой программы будет выглядеть: начало S=A+B+C Z^Z Р=А*В*С конец 23
2. Операторы ввода/вывода 3. Вычислите и выведите на экран результат значения функции Y при заданном с клавиатуры значении аргумента X. Y = -у!х - sin х Решение Cis Input "введите значение аргумента" х Y=-sqr(x-sin(x)) Print "значение функции=";у 2. Составьте блок-схему и программу вычисления для следую- щей задачи: Вычислить подоходный налог Р% от заработанной платы Zpy6 Решение Cis Input "введите сумму зарплаты"^ Input "введите значение подоходного налога в % ";р P=(z*p)/100 Print "подоходный налог=",Р 4. Вычислите и выведите значение Y, заданное указанной фор- мулой, введя необходимые исходные данные с клавиатуры. sin2x х3 + tg2 а - b3 у = --------1^=^=-------------COS X у y/sin3 (x2)fd 24
Решение: Cis Input "введите значения x,a,b,f,d x,a,b,f,d Yl=(sin(x^3)) ^(2*x):Y2=(tg(abs(a-b ^3))) ^2 Y3=sqr((sin(x^2))^3*f*d):Y=sqr((Yl+Y2)/Y3)*cos(x) Print "значения функции=";у 5. Составьте программу для нахождения площади и периметра прямоугольника со сторонами а и Ь, которые необходимо ввести с клавиатуры. Решение: Cis: Input "введите стороны прямоугольника";а,Ь P=(a+b)*2:S=a*b Print "площадь=";S; "периметр=";р 6. Напишите программу вычисления площади треугольника по трем сторонам, пользуясь формулой s - Ь)(р - с) где а, Ь, с — длины сторон треугольника, задаваемые с клавиату- ры, а р — полупериметр а + b + с Решение: Cls:Input "введите стороны треугольника", а,Ь,с р=(а+Ь+с)/2 S=sqr(p(p-a)(p-b)(p-c)) Print "площадь треуголъника=";5 7. Введите с клавиатуры 3 произвольных числа а,в,с, вычислите и выведите результаты вычислений по следующим формулам. Вы- дайте результаты, в центре экрана, на разных строках, с пояснени- ем переменных. d=(a3 - 17,5:6)* (с + 3,36)3 е _Ьс 3 - d2c ad а2с3 + (с - а + d2)2 25
2. Операторы ввода/вывода (5J -283)3 -е + (/>-а2)2 + 25 ?5 eab + b + а2:7 , 2 7 х = a + b + w :—- 9 Решение: Cis Locate 10,10 Input "введите значения 3 чисел ";а,Ь,с d=(a Л3-17.5/b) Yc +3.3*b)'3 е=(Ь *с)/(а *с1)-(3-с1Л2*с)/(а Л2*с л2+(с-а-дл2) ''2) w=((5 *d-28.3) '3-е+(b-a '2) *2)/(е *а *b +Ь +а ^2/7) +25.75 х=а +b+w л2/( 7/9) +w locate 12,10:Print "d=";d locate 12,12:Print "e=";e locate 12,13:Print"w=";w locate 12,14:Print"x=";x end 8. По представленной блок-схеме составьте программу и полу- чить результаты при заданных с клавиатуры значениях исходных данных. 26
Решение: Cis Locate 10,10 Input "введите значения 3 чисел ”;a,b,c s=sqr(a +b *2)/(3 *c) k=s-sqr(abs(a *b *c)) y=s+k-s/(b*c) locate 12,10:Print ”y=”;y 9. Напишите программу, вычисляющую значение выражения: а + Ьа ~ Л --------2ab + 1 4а где а — номер компьютера, за которым Вы сидите, b — Ваш по- рядковый номер по списку в журнале. Решение: Cis Input "введите порядковый номер вашей машины ”;а Input "введите ваш номер по списку";Ь S=((a+b*a)/(4*a))-2*a*b+l Print "значение выражения=”;Е End 10. Напишите программу, которая рисует прямоугольник, при- чем координаты прямоугольника и цвет контура задаются с клави- атуры. Решение: Cis Input "введите координаты первого угла прямоугольника";X1,Y1 Input "введите координаты противоположного угла прямоугольни- ка" ;X2,Y2 Input "введите цвет линии”;С Line (XI, Yl)- (X2,Y2),C,B End 11. Составьте программу, которая вводит с клавиатуры фами- лию, размер заработанной платы, премию, подсчитывает размер налога и сумму денег к выдачи. Все исходные и полученные дан- ные выведите в виде следующей таблицы. Для рисования таблицы используйте операторы графики. 27
2. Операторы ввода/вывода фамилия зарплата премия налог 13% на руки Решение: CLS: SCREEN 9 INPUT "Введите фамилию"; Е$ INPUT "Введитеразмер заработанной платы"; Z INPUT "Введите размер премии "; Р NAL = (Z + P) *0.13 RUK = Z + Р - NAL LOCATE 10, 5: PRINT "ФАМИЛИЯ": LOCATE 10, 16: PRINT "ЗАР- ПЛАТА" LOCATE 10, 30: PRINT "ПРЕМИЯ": LOCATE 10, 45: PRINT "НА- ЛОГ' LOCATE 10, 55: PRINT "НА РУКИ": LOCATE 14, 2: PRINTF$ LOCATE 14, 17: PRINTZ: LOCATE 14, 30: PRINTP LOCATE 14, 45: PRINT NAL: LOCATE 14, 55: PRINT RUK LINE (5, 100)-(550, 220), , В LINE (10, 170)-(550, 170): LINE (110, 100)-(110, 220) LINE (220, 100)-(220, 220): LINE (330, 100)-(330, 220) LINE (420, 100)-(420, 220) 28
3. Операторы условного перехода До этого момента мы работали с линейными алгоритмами, где каждая команда выполнялась только в том случае, когда было за- кончено выполнение предыдущей. В процессе построения алго- ритмов приходится часто анализировать полученные данные и в зависимости от результатов анализа принимать те или иные реше- ния. Теперь мы переходим к построению разветвляющихся алго- ритмов. Оператор условного перехода предназначен как раз для созда- ния таких программ. Этот оператор позволяет компьютеру проа- нализировать данные вычислений или исходные данные и при- нять одно из двух возможных вариантов, которые должны быть предусмотрены при составлении программы. Общий вид записи такого оператора может иметь две формы. Полная форма записи оператора условного перехода IF условие THEN опер ELSE опер (или метка перехода) Метка — это числовое значение, стоящее перед строкой, кото- рой надо передать управление. Работа условного перехода заключается в том, что если условие выполняется, то выполняются операторы стоящие после слова THEN. Если условие неверно, то выполняются операторы, стоя- щие после слова ELSE и, если они не содержат перехода на ка- кую-либо строку, то после выполнения данных операторов работа программы продолжается со следующей строки. Условие всегда содержит знак сравнения. Эти знаки записыва- ются следующим образом: <= меньше или равно, >= больше или равно, О не равно, < меньше, >больше, = равно. Неполная форма записи оператора IF уел THEN опер (или метка перехода) В неполной форме может быть опущен оператор ELSE, тогда при невыполнении условия управление передается следующему оператору, стоящему за оператором условного перехода. На блок-схеме этот оператор обозначается фигурой, которая называется ромб, и имеет два выхода. Один когда поставленное условие выполняется, другой, когда нет. 29
3. Операторы условного перехода условие > (условие выполняется) (условие не выполняется) Условия могут быть простые и сложные, которые состоят из двух или более простых условий. Если надо чтобы выполнялись одновременно все условия они соединяются союзами AND, когда должно выполняться хотя бы одно из перечисленных условий — союзом OR. Разберем следующие примеры: 1. Составьте программу, которая вводит два числа и выводит наибольшее из них. CLS INPUT А, В IF А> В THEN PRINT "Наибольшее из чисел A”; A ELSE PRINT "Наибольшее из чисел В”; В Строка с условием выбирает одно из двух вариантов: если вве- денное значение переменой А окажется больше переменной В, то в результате будет напечатано значение А, иначе значение В. 30
2. Введите с клавиатуры переменную А. Если 0<А<100, нари- суйте окружность радиусом равным А и центром с координатами Х=150, У=150. Иначе выведите на экран значение переменной А. Cls'.screen 9 Input "введите значение переменной А ", А If А>0 and А<100 then circle(150,150), A else print ”А=”;А 3. Составьте программу и блок схему для вычисления значений функции в зависимости от заданного с клавиатуры значения X: 20 при X <= -20 30 при X > 30 Cis Input "введите значение аргументах ”;х If х<=—20 then у =20 If х>~20 and х<=30 then y=sqr(x) If х>30 then у =30 Print "значение функции =";у начало У=30 конец 31
3. Операторы условного перехода При решении некоторых задач иногда не требуется проверки условия, а надо перейти на какую-либо строку. Тогда около стро- ки устанавливается числовая метка N. И по оператору GOTO N программа переходит к этой строке и продолжает работать с этого места. Такие операторы часто применяются при многоразовом возвращении к началу программы после выполнения ряда команд, для ожидания нового задания. Работа безусловного перехода за- ключается в том, что переход на указанную строку не зависит от условий и выполняется всегда, как только будет встречаться дан- ный оператор. На следующем примере можно показать работу условного и бе- зусловного перехода: 5 INPUT А, В А> В THEN PRINT A ELSE PRINT В GOTO 5 Задачу №2 из предыдущих примеров можно переделать с испо- льзованием оператора безусловного перехода: Cis Input "введите значение переменной А ”, А If А>0 and А<100 then circle(150,150), A .GOTO 10 print ”А=”; 10 end В этом варианте после вычерчивания окружности происходит переход на конец программы, который обозначен оператором end и меткой 10. Оператор условного перехода может обрабатывать одновремен- но несколько условий. Тогда его вид примет следующую форму: IF условие THEN блок операторов 1 ELSEIF опер (или метка перехода) ELSE условие блок операторов 2 ELSE блок операторов п END IF 32
Примеры решения задач по теме 1. Составьте блок схему и программу для вычисления значений функции в зависимости от заданного с клавиатуры значения X: X2 при X < -20 Y = ]|Х| при - 20 < X < 0 4х при X > о Решение: Cis Input "введите значение аргумента X ";х If х<=-20 then у=х^2 Ifx>-20 and х<=0 then y=abs(x) If х>0 then y=sqr(x) Print "значение функции =”;y 2. При заданном с клавиатуры значении х, вычислите по фор- муле у и определите принадлежит ли точка А(х;у) заданной на ри- сунке области. Выдайте на экран значения х и у, а также сообще- ние о принадлежности точки данной области. 33
3. Операторы условного перехода Y = -fx - sin х Решение: Cis Input "введите значение координаты X ";х Y=-sqr(x-sin(x)) Ifx<0 and х>-2 and у<0 and у>-2 then Print "принадлежит'еВе Print ”не принадлежит " 3. Введите с клавиатуры переменные end. Если 0<c<d, то на- рисуйте квадрат со стороной равной с, иначе выведите на экран сумму значений переменных end. Решение: Cls\ screen 9 Input "введите значения переменных с и d";c,d If с>0 and c<d then 10 else 20 10 draw"U10 RIO DIO L10":GOTO 30 20 s=c+d: РгтС'сумма с и d=";S 30 end 4. Найдите и выведите максимальное из двух переменных вве- денных с клавиатуры. Решение: Cis Input "введите значение переменных а и Ь”; а,Ь If a>b then print "переменная А>В" else print "переменная В>А” 5. Напишите программу, которая по введенным с клавиатуры числам е, f, g, h будет вычислять значения коэффициентов а, b и с 34
квадратного уравнения по предлагаемым формулам, решать это квадратное уравнение и выдавать результаты его решения. 7 2 / + g b = sm e + cos h c =-------- ef-3 ту л —b± 4d дискриминант D = b - час корни уравнения x12 =------------- 2a Решение: Cis Input "введите значение переменных e,fg,h"; e,fg,h A =sqr((abs(е-3/f)) A5 +g) B=sin(e) +(cos(h)) ^2 C=(33*g)/(e*f-3) D=b^2-4*a*c If D<0 then print "корней нет" If D=0 then xl=(-b+sqr(D))/(2*a):Print ”xl=”;xl If D>0 then xl=(-b+sqr(D))/(2*a): x2 =(-b-sqr(D))/(2*a): Print "xl=";xl; "x2=";x2 End 6. Составьте программу, которая определяет количество дней в году, номер которого вводится с клавиатуры. Решения: Cistinput "введите номер года ”;N If (N mod 4)=0 then print "кол-во дней в eody=366"else print "кол-во дней в году =365" End 7. Составьте блок-схему и программу для решения следующей задачи: Введите с клавиатуры три числа. Проверьте, если числа не рав- ны, то заменить числа их квадратами, вывести результаты. Если все числа равны нулю, то сделать их соответственно равными 5, 20, 15, вывести результаты. Иначе найти и выдать сумму этих чи- сел. Решение Cis Input "введите значения трех переменных а, Ь, с"; а,Ь,с 35
3. Операторы условного перехода If a><b andb<>c then a=a^2:b=b^2:c=c^2:goto 10 If a=0 and b=0 and c=0 then a=5:b=20:c=15:goto 10 S=a+b+c: Print "Сумма paena=";s:goto 20 10 Print "a=";a; "b=";b; "c=";c 20 end 8. Составьте программу, которая, вводит с клавиатуры 4 числа и проверяет является ли произведение этих чисел четным числом. Решения: Cis:Input "введите 4 переменных a,b,c,d"; a,b,c,d P=a*b*c*d If Р mod 2=0 then print "произведение число четное’еке print "произве- дение число нечетное": End 9. Составьте блок-схему и программу для решения следующей задачи: Введите с клавиатуры 3 числа. Если сумма чисел кратна 5, то уменьшить их в 5 раз. Если сумма меньше 50, то выдать на экран эту сумму, иначе числа уменьшить на 1,5 и выдать результаты. 36
Cis Input "введите значение трех переменных a,b,c”;a,b,c S=a+b+c:If s mod 5 =0 then a=a/5; b=b/5; c=c/5: goto 10 If s<50 then print ”сумма=”;8 : goto 20 A=a-1.5; b=b-L5; c=c-1.5 10 Print "a=";a; "b=";b; "c=";c 20 End 10. Введите с клавиатуры 2 числа, однозначное и трехзначное. Проверьте, равна ли сумму цифр трехзначного числа однозначно- му числу. Решение: Cis Input "введите однозначное число";а 37
3. Операторы условного перехода Input "введите трехзначное число ”;с ес= с mod 10 единицы числа с de = int ((с mod 100)/10) ' десятки числа с sc = int(c/100) сотни числа с if (ec+dc+sc)=a then print "paena"elseprint "неравна" 11. Введите с клавиатуры 2 трехзначных числа. Если единицы первого числа в 6 раз меньше суммы цифр двух других его цифр, то уменьшите второе число в 10 раз. Если произведение цифр вто- рого числа равно 677, то первое число увеличьте на 3, а второе уменьшите на 2, выведите результаты, иначе числа уменьшите в 1,5 раза и выдайте их сумму. Cis '.Input "введите два трехзначных числа”;а,Ь еа= a mod 10 :da = int ((a mod 100)/10) sa = int(a/100) :eb=b mod 10 db = int ((b mod 100)/10):sb = int(b/100) If ea*6=da+sa then b=b/10:print "b=";b: goto 10 If (ea*sa*da)=677 then a=a+3: b=b-2:Print "a=";a;"b=";b:goto 10 38
a=a/1.5: b=b/1.5: s=a+b: Print ”cyMMa=”;s 10 End 39
4. Операторы цикла Очень часто при составлении алгоритмов некоторую последо- вательность команд приходится выполнять многократно. По опре- делению алгоритм является циклическим, если некоторая после- довательность шагов выполняется несколько раз. Поэтому изучая данный параграф мы переходим к построению циклических алгоритмов. Для построения циклических алгоритмов используются опера- торы цикла. Один из самых распространенных и более используемых имеет вид: начало цикла FOR 1=1 ТО 10 STEP 1 тело PRINT 1 конец цикла NEXT 1 Этот оператор состоит из двух частей: 1) заголовка или начала оператора цикла (FOR Т=НЗП ТО КЗП STEP N), где указываются основные параметры: НЗП — начальное значение переменной 1, КЗП — конечное значение переменной 1, N — шаг изменения переменной 1, 2) конца цикла (NEXT 1), где проверяются значения перемен- ной цикла и принимается решение, если переменная цикла имеет значение больше чем КЗП, то управление передается оператору следующему за NEXT, иначе повторяется работа операторов, находящихся в теле цикла. Начальное и конечное значение переменной являются обязате- льными параметрами, а, если значение шага не указывается, то он по умолчанию принимает значение равное 1. Переменная цик- ла — это параметр цикла (поэтому такой цикл иногда называют параметрическим циклом). Параметр цикла последовательно при- нимает значения от начального значения до конечного с указан- ным интервалом шага. Что будет, если начальное и конечное значение переменной совпадает? Цикл будет работать только один раз. Шаг может иметь отрицательное значение. Но тогда начальное значение переменной должно быть больше конечного. При положительном шаге переменная цикла должна увеличи- ваться и оператор цикла будет повторяться только при условии, 40
что начальное значение меньше или равно конечному. При отри- цательном шаге начальное значение не должно быть меньше ко- нечного. Операторы, относящиеся к телу цикла, будут в процессе работы многократно повторяться с одной лишь разницей, что стоящая в них переменная I при каждом повторении будет изменять свое значение и не зависит от того, используется ли она в вычислениях внутри цикла или нет. Общий вид блок — схемы для цикла будет выглядеть следую- щим образом: Разберем пример: Составьте программу, которая напишет на экране Вашу фами- лию 10 раз. В данном случае достаточно один раз написать оператор выво- да фамилии на экран и заключить его внутри цикла. Переменная цикла I будет меняться в диапазоне от НЗП=1 до КЗП=10, шаг в данном случае равен единицы, поэтому его можно не указывать. FOR 1=1 ТО 10 PRINT "Фамилия” NEXT I Блок-схема такой программы будет следующая: 41
4. Операторы цикла Часто программисты используют такую интересную функцию, как датчик случайных чисел. С его помощью можно получать заранее неизвестные числа и применять в игровых задачах и при рисовании фигур, размер, цвет и местонахождение которых будет определяться случайным обра- зом. Запись А= RND(l) * 100), задает двузначное число, которое по- лучается умножением полученного случайного положительного числа на промежутке от 0 до 1 на 100. Если требуется однозначное число, то надо умножать на десятки. Для получения трехзначного на сотни и т. д. Разберем примеры 1. Заполните экран случайными точками. CLS: SCREEN 9 FOR 1=1 ТО 1000 цикл повторяется 1000 раз Y=INT(RND(1) * 500) получили случайную координату для X X=INT(RND(1) * 300) получили случайную координату для Y PSET (X,Y) выводим точку с координатами X, Y NEXT I 2. Составьте программу, которая построит на экране 20 столби- ков случайной высоты. CLS : X=10:SCREEN 9 42
FOR 1=1 TO 10 Y=INT(RND(1) * 100) координата Yзадается случайным числом LINE(X, 190)-(X+5,Y) координата X постоянная X=x+10: NEXT I Второй тип оператора цикла имеет вид: DO WHILE условие Операторы LOOP Этот оператор повторяет блок команд, пока условие верно. Как правило, переменная, на которую идет ссылка в условии, должна изменяться в теле цикла. Необходимо создать программу рисования концентрических окружностей. CLS SCREEN 9 R=100 DO WHILE R>10 CIRCLE (100,100),R:R=R—10 LOOP Условие выполнение цикла проверяется перед выполнением блока операторов Примеры решения задач по теме 1. Составьте программу, которая рисует квадрат, заштрихован- ный вертикальными линиями как на рисунке. Решения: Задание 1 Cis Screen 9 Line (100,50)-(300,200)„b For k=0 to 290 step 10 Line (100+k,50)-(100+k,200) Next k 43
4. Операторы цикла 2. Составьте программу для рисования графика функции: -X при X < -10 X2 при - 10 < X < 10 X при >10 Cis Screen 9 Line (300,10)-(300,300) Line (10,150)-(550,150) For х=-150 to 150 step 0.1 Ifx<=-10 then y=-x If x>=-10 and x<=10 then у=хЛ2 If x>10 then y=x Pset (x+300,y+150) Next x 3. Составьте программу для рисования графика функции 10 у =-----+ 5 sin х х -1 Решение: Cis: Sscreen 9 Line (300,10)-(300,300):Line (10,150)-(550,150) For x=-50 to 50 step 0.1 Ifx <>1 then y=10/(x-l)+5*sin(x) Pset (x+300, у+150) Next x 4. Составьте блок-схему и программу для нахождения среднего арифметического двузначных чисел кратных 3. Решение: Cis: S=0: К=0 For А=12 to 99 step 3 S=S+A:K=K+l:Next A Sr=S/K:Print "среднее арифметическое=";5г 44
начало s=o к=о —г~ А=12 —* S=S+A К=К+1 А=А+3 SR=S/K конец 5. Составьте блок-схему и программу для нахождения суммы по следующей формуле: N = 2^-------, к ввести с клавиатуры. /=з 3 + I Решения: Cis Input "введите значение к”;к N=0 For 1=3 to 50 N=N+(k *l-sqr(l))/(3+l) Next I Print ”cyMMa=”;N 45
4. Операторы цикла 6. Составьте блок схему и программу для решения следующей задачи: Сберкасса начисляет 2% годовых. Вывести какой станет сумма вклада S положенная в сберкассу на N лет. Значения S и N вво- дятся с клавиатуры. Решение: Cis Input "введите сумму вклада ”;s Input "введите кол-во лет”;Ы For k=l to N s=s+0.02*s Next k Print "через";N; "лет сумма вклада будет равна";s "рублей" 46
7. Напечайте таблицу перевода температуры из градусов по шкале Цельсия (С) в градусы по шкале Фаренгейта (F) от 150 до 300 градусов с шагом 10. (по формуле F=l,8 С + 32). Все данные расположить в столбик. Решение: Cis Print ТАВ(10); "Цельсий"; ТАВ(ЗО); "Фаренгейт" For С=150 to 300 step 10 F=1.8*C+32 Print TAB(IO); C; tab(30);F Next t 8. Используя оператор цикла и графические возможности, на- рисуйте на экране: 47
4. Операторы цикла Решение: Cis Screen 9 For k=0 to 250 step 50 Line (25+k, 250)-(50+k,100) Line (50+k, 100)-(75+k, 250) Next k Составьте блок-схему и программу для следующих задач: 9. Определите и выведите на экран количество натуральных чи- сел меньших 1000 и делящихся на 5 и 7 одновременно. Решение: Cis : s=0 For А=1 to 1000 If (A mod 5)=0 and (A mod 7)=0 then s=s+l Next A: Print "кол-во чисел="; S 48
10. Найдите и выведите все двузначные числа, сумма цифр ко- торых не меняется при умножении на 2. (например: 27 и 27x2 = 54, сумма цифр 27 и 54 равна 9). Решение: Cis For А=10 to 99 ЕА=А mod 10:DA=int (А/10):В=А*2 If В>99 then ЕВ=В mod 10:DB=int ((В mod 100)/10): SB=int (B/100):S=EB+DB+SB 49
4. Операторы цикла 11. Напишите программу по следующей блок схеме и проведите пробный счет при следующих значениях: х=133; 0; 1,33 Решение: Cis ТприГВведите значение х";х s=0 For i=l to 5 s=s+l/i Next i y=x*s Print "y=";y 50
12. Составьте программу для выполнения рисунка из пяти фигур разного цвета и раз- мера. Решение: Cis Screen 9 for к=1 to 50 step 10 line(100,200)-(200+k, 150-k) next к 13. По представленной блок-схеме составьте программу и полу- чить результат вычисления. 51
4. Операторы цикла Решение. Cis: S=0: К=0 For А=12 to 99 S=S+A:K=K+l:Next А Sr=S/K:Print "среднее арифметическое=";5г 52
6. Символьные переменные При решении различного рода задач наряду с вычислительны- ми операциями с целыми и вещественными числами, широко ис- пользуется обработка символьных величин. В Qbasic имеется до- статочный набор операторов и функций, с помощью которых можно работать с символьными величинами. В этом разделе будут перечислены часто употребляемые операторы. Функция MID (A$,k, n) — может использоваться для вырезки части текста символьной строки или ее замены, где А$ — имя символьной переменной, к — порядковый номер символа, с кото- рого начинается вырезка или замена, п- количество символов для вырезки или замены. Предположим А$="ИНФОРМАТИКА" В$= MTD$(A$,3,5) данная запись предполагает, что в символь- ную переменную В$, переписываются из символьной переменной А$ символы с 3 по 7 включительно. MTD$(A$,8,4) +"ЦИЯ ’’ — данная запись оператора заменяет символы в строке. После этой операции символьная переменная А$ будет иметь значение равное слову "ИНФОРМАЦИЯ" B$=LEFT (к, А$) переписывает к символов слева из символь- ной переменной А$ в символьную переменную В$ B$=RIGHT (к, А$) переписывает к символов справа из симво- льной переменной А$ в символьную переменную В$ N= LEN (А$) данная функция определяет длину символьной переменной А$, возвращает значение равное количеству символов в символьной переменной А$, учитывая и невидимые пробелы. Необходимо помнить, что длина символьной переменной не дол- жна превышать 256 символов. Примеры решения задач по теме 1. Из слова гастроном получите слова гном, нора, рана. Решение: Cis а$= "гастроном” b$=mid$ (a$,l,l)+mid$ (а$,7,3) c$=mid$ (a$,7,2)+mid$ (а$,5,1) + mid$ (а$,2,1) d$= mid$ (a$,5,l)+mid$ (a$,2,l)+ mid$ (a$,7,l) + mid$ (a$,2,l) 53
6. Символьные переменные Print; a$,b$,c$ 2. Из слов страх, белка, цыпленок получите слово: столбец. Решение: Cis а$= "белка" Ь$=цыпленок с$=страх d$= mid$ (c$,2,2)+mid$ (b$,7,l)+ mid$ (b$,4,l)+ mid$ (a$,l,2)+ mid$ b$,l,l) Print d$ 3. Посчитайте количествово букв «о» в слове, введенном с кла- виатуры. Решение: Cis: s=0 Input "введите слово "; а$ For k = 1 to 1еп(а$) If mid$ (а$,к,1)= "о" then s=s+l Next к Print "кол-во букв o=";S Составьте программу, переписывающую любое введенное с клавиатуры слово с конца Пример: ПОЛК клоп Решение: Cis: s=0 В$="" Input "введите слово”; а$ For k= len(a$) to 1 step -1 B$=B$+ mid$ (a$,k, l) Next k Print B$ 5. Составьте программу, которая введенное с клавиатуры слово выводить в верхней строке экрана, а затем по буквам переставляет в нижнюю (падающие буквы). 54
Решение: CLS INPUT "Введите слово А$ CLS : Locate 1, 10: Print А$ For к = 1 to len(A$) b$ = mid$(a$, k, 1): mid$(a$, k, 1)=" ” Locate L 10: Print A$ For n = 2 to 20 step 2 Locate n, к + 10: print b$ For z = 1 to lOOOO&.next z Locate n, к + 10: print next n Locate 23, к + 10: print b$ next к 55
7. Одномерные массивы Часто в процессе обработки данных приходится их сначала све- сти в таблицу, а затем производить различные математические или статистические операции. Например, для определения средней температуры прошедшего месяца, количества выпавших осадков за месяц, определения призовых мест по итогам соревнования и т. п., необходимо эти данные для большей наглядности, читаемо- сти и удобства сравнения занести в таблицу. Для таких целей в программировании предусмотрена работа с массивами, которые могут быть одномерные и многомерные. Одномерные массивы можно представить как строку перемен- ных, двумерные — как таблицу, в которой данные располагаются в строках и столбцах. По типу данных представленных в массиве их классифицируют как числовые и символьные. Каждый массив должен иметь имя. Размер массива определяет- ся в начале программы с помощью оператора DIM Например, для массива с именем М, в который предполагается занести результаты по прыжкам в длину 10 спортсменов, необхо- димо определить размер в 10 элементов, т. е. записать DIM М(10). Оператор DIM по умолчанию присваивает всем числовым пе- ременным нулевые значения, а символьным — значение текстово- го пробела. Доступ к элементам массива осуществляется указанием поряд- кового номера, который называется индексом элемента массива. Индекс может быть только целым числом, его нельзя путать со значением элемента массива. Индексы Имя массива М(1) М(2) М(3) М(4) М(5) М(6) М(7) М(8) М(9) М(10) | 17 | 24,5 | 86 | 44,3 | 31 | 12,1 | 54 Значения элементов массива В данном примере массив с именем М имеет 10 элементов. Цифры 1, 2, 3 .... — это индексы элементов массива. Значение элемента массива, например, с индексом 3 будет равно 36. 56
Прежде чем работать с массивом данных его необходимо за- полнить. Данные можно вводить с клавиатуры, определять форму- лу заполнения массива, закономерность (для рядов чисел) или иметь уже данные, которые хранятся либо определяются в процес- се работы программы. При отладки рабочей версии часто исполь- зуют датчик случайных чисел для заполнения массива. Для присваивания элементам массива значений и вывода на экран целесообразно использовать цикл, в котором переменной будет являтся индекс элемента массива, а длина массива опреде- ляет количество повторений. Ниже приведены примеры различных способов заполнения и вывода на экран элементов одномерного массива, а также некото- рые часто используемые операции при работе с табличными дан- ными. Указания: При рассмотрении данной темы необходимо чтобы учащиеся обязательно усвоили способы заполнения массивов и умели находить сумму элементов всего массива или сумму элемен- тов удовлетворяющих определенному критерию, находить среднее значение элементов массива, минимальный и максимальный эле- менты, менять местами элементы массива. Примеры решения задач по теме Способы заполнения массивов: 1 способ — датчиком случайных чисел Dim А(10) For к=1 to 10 A(k)=int(md(l)*150) Print А(к); Next к 2 способ — ввод с клавиатуры. Dim А(10) For к=1 to 10 Input "введите элемент массива ”;А(к) Next к 3 способ — с использованием данных, хранящихся в операторе DATA Dim А(10) DATA 10, 18, -6, 0, 1,12,5,7,50,10,64 57
7. Одномерные массивы For к=1 to 10 Read А(к) Print А(к); Next к 4 способ — по определенной закономерности (например, каждый последующий элемент начиная со второго больше предыдущего в два раза). Dim А(10) Input "введите 1 элемент массива”;А(1) For к=2 to 10 А(к)=А(к-1) *2 Print А(к); Next к Нахождение суммы элементов массива и среднего арифметического Dim А(10) S=0 For к=1 to 10: A(k)=int(md(l) *150) Print A(k); S=S+ A(k):Next к SR= S/10 Print "Сумма элементов массива равна”; S Print "Среднее значение элементов массива равно SR Нахождение минимального и максимального элемента массива Dim А(10) For к=1 to 10 A(k)=int(rnd( 1) *150)'.Print A(k);:Next к min = A(l): max =A(1) For k=l to 10 If (A(k) >max then max=A(k) If (A(k) <min then min=A(k) Next к Print "максимальный элемент массива равен max Print "минимальный элемент массива равен ";min Перестановка минимального и первого элементов массива Dim А(10) For к=1 to 10 A(k)=int(rnd( 1) *150)'.Print A(k);:Next к 58
max = A(l) For k=l to 10 If (A(k) >max then max=A(k):km=k Next k: Print Print "максимальный элемент массива равен max A(km)= A(l): A(l)= max For k=l to 10 Print A(k);:Next k 1. Сформируйте и выведите массив из 9 элементов, каждые 3 последовательных элемента которого составлены по следующему правилу: 1-ый — числу введенному с клавиатуры 2-ой — случайному числу 3-ий — полусумме двух предыдущих Решение: Dim А(9) For k=l to 9 step 3 Input «введите элемент массива»;A(k) A(k+1)= int(md(l)*10) A(kF2)=A((k)-A(k-l))/2 Next k For k=l to 9 Print A(k); Next k 2. Сформируйте массив датчиком случайных чисел содержащий 15 элементов. Получите новый массив, каждый элемент которого равен сумме соответствующего исходного элемента и его квадрата. В полученном массиве найдите максимальный элемент и его но- мер Решение: Dim А(15),В(15) For k=l to 15 A(k)=int(md(l)*150) В(к)=А(к)+(А(к)Г2 Print A(k);B(k) Next к max = B(l):n=l 59
7. Одномерные массивы For к=1 to 10 If (В(к) >max then max=B(k):n=k Next к Print "максимальный элемент массива В равен max, "его но- мер ';п 3. Задайте массив из 10 элементов с помощью датчика случай- ных чисел и поменяйте знак всем нечетным элементам массива на противоположный. Выведите на экран исходный и измененный массивы. Решение: Dim А(10) For к=1 to 10 A(k)=int(rnd(l)*150) Print А(к); Next к: Print For k=l to 10 If A(k) mod 200 then A(k)=-A(k) Print A(k); Next к 4. Заполните массив из 10 элементов датчиком случайных чи- сел и все элементы, которые больше 55 замените максимальным. Выведите на экран исходный и измененный массив. Решение: Dim А(10) For к=1 to 10 A(k)=int(md(l)*150) Print А(к); Next к: тах=А(1): Print For к=1 to 10 If (А(к) >max then max=A(k) Next к Print "максимальный элемент массива равен max For k=l to 10 If A(k) >55 then A(k)=max Print A(k); Next к 60
5. Дано два массива А(5) и В(5). Сформируйте массив С(10), каждый четный элемент которого, равен сумме элементов А и В , а нечетный их разности. Выведите на экран все массивы. Решение: Dim С(10): Data 10, 18, -5, 50, -6, -9, 45, 34, -12, 61 For к=1 to 10: Read С(к): Print С(к); :Next к: Print s=0: sl=0 For k=l to 10 If C(k) mod 2 = 0 then s=s+l else sl=sl+l: next к Dim A(s); B(sl):kl=l; k2=l For k=l to 10 If C(k) mod 2 = 0 then A(kl)=C(k): kl=kl+l else B(k2)=C(k): k2=k2+l Next k: For k=l to s : print A(k); : next к '.Print For k=l to si: print B(k);:Next к 6. Результаты игр по футболу хранятся в массиве. Каждые три последовательных элемента массива содержат соответственно но- мер игры, количество забитых и количество пропущенных мячей. Определите и выведите в скольких играх разность забитых и про- пущенных мячей больше трех Решение: Dim А( 15) KOL=0 For к=1 to 15 step3 A(k)=N:N=N+l A(k+l)=int(md(l)*10) A(k+2)=int(md(l) *10) Print A(k); A(k+1); A(k+2) Next к For k=l to 15 step 3 If (A(k+1)~ (A(k+2))>3 then KOL= KOL+1 Next k Print ”B”,KOL, «играхразность забитых и пропущенных мячей больше 3" 7. Составьте программу, подсчитывающую общее время удале- ния игроков хоккейной команды. Фамилии и штрафное время 61
7. Одномерные массивы хранятся в соответствующих массивах. Определите суммарное штрафное время. Решение: DATA Иванов, Петров, Сидоров, ... Dim А(10), В$(10) For к=1 to 10 A(k)=int(md(l)*150) S=S+ А(к): Read В$(к) Print А(к), В$(к); Next к Print "Суммарное штрафное время равно”; S 8. Для анализа работы ГЭС собраны среднемесячные данные за год, хранящиеся в одномерном массиве. Изобразите данные в виде гистограммы на диапазоне от 100 до 300. Решение: Dim А(12) For к=1 to 12 10 f=int(rnd(l)*300 iff>300 or f<100 then 10 A(k)=f Print A(k); Next к sh=O: xl=50 For k=l to 12 Line(xl+sh,200)-(xl+10, A(k)),,B sh=sh+15 next к 9. Составьте программу формирования нового массива и выво- да исходных и результирующих массивов в виде таблицы с шап- кой, поясняющей содержимое столбцов ! ном ' ! заданные массивы ! новый ! ! п/п ! 1 ! 2 ! массив ! Сформируйте два массива по 10 элементов в каждом датчиком случайных чисел. Получите третий массив по правилу: каждый 62
элемент нового массива равен разности соответствующих элемен- тов исходных массивов. Найдите в новом массиве минимальное значение элементов и его номер. Решение: Dim А(10),В(10), С(10) Print tab (6), "№",tab(12)," 1 ",tab (22)," 2 ", tab(30), "новый" For k=l to 10 A(k)=int(md(l)*150) B(k)=int(rnd(l)*150) C(k)= A(k)-B(k) Print tab(5),k, tab(10), A(k), tab(20),B(k), tab(30),C(k) Next к min = C(l): n = 1 For k=l to 10 If (C(k) >max then max=C(k);n=k Next к Print "максимальный элемент массива равен "; max Print "номер максимального элемента ”;т 10. Заполните массив С из 10 элементов положительными и от- рицательными числами. Положительные и нулевые элементы пе- репешите в массив А, отрицательные в массив В, предварительно определите размер массивов А и В. Решение: Dim С(10): Data 10, 18, -5, 50, -6, -9, 45, 34, -12, 61 For k=l to 10: Read C(k): Print C(k); :Next k: Print s=0: sl=0 For k=l to 10 If C(k)=>0 then s=s+l else sl=sl+l: next k Dim A(s); B(sl):kl=l; k2=l For k=l to 10 If C(k)>=0 then A(kl)=C(k): kl=kl+l else B(k2)=C(k): k2=k2+l Next k: For k=l to s : print A(k); : next k '.Print For k=l to si: print B(k);:Next k 11. Задайте символьный массив. Найдите и выведите те элемен- ты, которые имеют длину слова равную 5. 63
7. Одномерные массивы Решение: Dim A$(10):Data кот, паровоз, глина,.. For k=l to lO'.Read А$(к)'.Print А$(к),'.Next k'.Print For k=l to 10:If len(A$(k))=5 then Print A$(k)'.Next к 12. Задайте символьный массив и замените элементы, начина- ющиеся на букву А, максимальным по длине словом. Выведите полученный массив. Решение: Dim А$( 10) Data кот, паровоз, глина,.. For к=1 to lO'.Read А$(к)'.Print А$(к), '.Next k'.Print т$=А$(1) For к=1 to 10:If len(A$(k))>len(m$) then m$= A$(k) Next к Fork=l to 10:If mid$(A$(k,l,l)) = "a" then A$(k)=m$ Print A$(k), Next к 13. Задайте символьный массив из 6 элементов и подсчитайте количество букв «к», содержащихся во всех элементах массива. Выведите массив и это количество. Решение: Dim А$(6) Data кот, паровоз, глина,.. Fork=l to 6:Read А$(к):Print А$(к), '.Next k'.Print kol=0 For k=l to 6 For s=l to len (A$(k)) If mid$(A$(k),s,l)="K" then kol=kol+l Next s Next к Print "количество букв о =”;kol 64
8. Двумерные массивы В двумерном массиве каждый элемент фиксируется номером строки и столбца, на пересечениях которых он расположен. Поло- жение элемента в двумерном массиве определяется двумя индекса- ми. Они разделяются запятой. В качестве индексов могут исполь- зоваться любые арифметические выражения, константы, перемен- ные. Если арифметическое выражение содержит дробную часть, то при определении индекса она отбрасывается. Появление отрицате- льного значения индекса вызывает сообщение об ошибке. Для определения двумерного массива в программе используется тот же оператор DIM, только при определении размера необходимо указать два индекса — количество строк и столбцов: DIM А (5,7) Данное описание предполагает, что в массиве с именем А будет 5 строк и 7 столбцов. При обращении к элементу двумерного мас- сива необходимо указывать два индекса: номер строки и номер столбца. 1 2 3 4 5 6 7 57 34 56 21 44 88 90 11 91 45 88 92 0 37 73 67 85 16 42 30 22 65 92 49 64 27 82 19 62 37 99 10 35 21 11 Элемент двумерного массива А(3,6) равен 30. При заполнении и выводе на экран элементов двумерных мас- сивов необходимо использовать вложенные циклы. Внешний цикл будет определять номер строки, а внутренний номер столбца. Ниже приведены примеры заполнения и вывода на экран эле- ментов двумерного массива, а также некоторые программы по ра- боте с этими массивами. Примеры решения задач по теме 1. Напишите программу формирования и вывода массива про- извольного размера так, чтобы каждый последующий элемент, на- чиная со второго, был больше предыдущего на 5. Первый элемент задайте датчиком случайных чисел. 65
8. Двумерные массивы Решение: CIS :Dim А( 10,10):A(l,l)=int(md( 1)*100) For к=1 to 10:For т=1 to 10 If к=1 and т=1 thenlO If m=l and к>1 then A(k,m)=A(k-l,10)+5 else A(k,m)=A(k,m-l)+5 10 Next m Next к For k=l to 10 For m=l to 10 Print A(k,m); Next m:Print Next к End 2. Напишите программу формирования и вывода массива раз- мером (6x9), каждые 3 последовательных элемента в строке кото- рого составлены по следующему правилу: 1-ый — числу введенному с клавиатуры 2-ой — удвоенному индексу строки 3-ий — случайному однозначному числу Решение: Dim А(6,9) For к=1 to 6 For т=1 to 9 step3 Input "ведите 1 элемент массива”;А(к,т) А(к,т+1)= 2*к А(к,т+2) = int(rnd(l)*10) Next т Next к For к=1 to 6 :For т=1 to 9 Print А(к); Next m: Print Next к 3. Напишите программу формирования массива размером 5x5 датчиком случайных чисел. Замените в нем нечетные значения элементов максимальным. Выведите исходный и измененный мас- сивы. Решение: CIS :Dim А(5,5) For к=1 to 5:For т=1 to 5 66
A(k,m)=int(md( 1) *100) Print A(k,m);:Next mtPrint: Next к MAX=O For k=l to 5 For m=l to 5 IFA(k,m)>max then max=A(k,m) Next m Next к Print "Максимальное число массива = ”;MAX For k=l to 5 For m=l to 5 IF A(k,m) mod 200 THEN A(k,m)=max Print A(k,m); Next m Print Next к 4. Составьте программу формирования одномерного массива из максимальных элементов строк двумерного массива, заданного датчиком случайных чисел. Решение: CLS :Dim А(10,10),В(10) For к=1 to 10:For т=1 to 10 A(k,m)=int(rnd(l) *100) Print A(k,m);:Next mtPrint: Next к Fork=l to 10: min= A(k,l) For m=l to 10 If A(k,m)<min then min=A(k,m) Next m B(k)= min: Next к For k=l to 10: print B(k):next к 5. Напишите программу, которая заполняет массив А(3,3) сло- вами разного размера и заменяет самое короткое слово главной диагонали на максимальное по длине слово всего массива. Вы- ведите исходный и измененный массив. Решение: CLS :Dim А$(5,5) Data нота, краски, монитор, еж, клавиатура... For k=l to 5:For m=l to 5 67
8. Двумерные массивы Read А$(к,т) Print A$(k,m),:Next mtPrint: Next к MAX$=A$(1,1) For k=l to 5 For m=l to 5 IF len( A$(k,m))>len (MAX$) THEN MAX$=A$(k,m) Next m Next к Print "Максимальное no длине слово массива = ";MAX$ min$=A$(l,l) For k=l to 5 IF len (A$(k,k)) < min$ THEN min$= A$(k,k):km=k Next к Print "Минимальное no длине слово на главной диагонали =";min$ А$(кт, кт) =тах$ For к=1 to 5:For т=1 to 5 Print A$(k,m);:Next mtPrint: Next к 6. Напишите программу, которая заполняет первую строку мас- сива размером 2X10 фамилиями врачей, а вторую их специально- стями. Определите и выведите по запросу с клавиатуры фамилию нужного специалиста. Решение: CLS :Dim А$(2,10) Data Иванов, Петров, Сидоров... Data окулист, педиатр, стоматолог... For т=1 to 2 For п=1 to 10 read А$(т,п) print А$(т,п), next п Print next n Inpun "введите специальность врача " F$ For m=l to 10 If A$(2,m)=F$ then Print A$(l,m) Next m 68
Содержание Введение.............................................3 1. Операторы графики.................................4 Примеры решения задач по теме.....................6 Основные команды оператора DRAW...................7 Относительные координаты команды DRAW............10 Примеры решения задач по теме....................11 2. Операторы ввода/вывода...........................14 Величины, имя значение, тип......................14 Запись простых арифметических выражений в линейной форме.................................17 Оператор вывода информации.......................19 Оператор ввода информации INPUT..................21 Примеры решения задач по теме....................22 3. Операторы условного перехода.....................29 Разберем следующие примеры:......................30 Примеры решения задач по теме....................33 4. Операторы цикла..................................40 Примеры решения задач по теме....................43 6. Символьные переменные............................53 Примеры решения задач по теме....................53 7. Одномерные массивы...............................56 Примеры решения задач по теме....................57 8. Двумерные массивы................................65 Примеры решения задач по теме....................65 69
Серия «Элективный курс * Профильное обучение» Людмила Александровна Анеликова Алгоритмика в теории и практике Ответственный за выпуск В. Митин Макет и верстка А. Иванова Обложка Е. Холмский ООО «СОЛОН-ПРЕСС» 123242, г. Москва, а/я 20 Телефоны: (495) 254-44-10, (495) 252-36-96, (495) 252-25-21 E-mail: solon-avtor@coba.ru По вопросам приобретения обращаться: ООО «АЛЬЯНС-КНИГА КТК» Тел: (495) 258-91-94, 258-91-95, www.abook.ru ООО «СОЛОН-ПРЕСС» 127051, г. Москва, М. Сухаревская пл., д. 6, стр. 1 (пом. ТАРП ЦАО) Формат 60x88/16. Объем 4,5 п. л. Тираж 1500 экз. Отпечатано в ООО «Арт-диал» 143983, МО, г. Железнодорожный, ул. Керамическая, д. 3 Заказ №