Перейти на главную страницу
Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению, сооружать всё, что угодно из 0 и 1. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с практичностью экономиста.
Независимо от того, станет ли программирование вашим увлечением или профессиональным занятием, обучаясь составлению программ, используя современные методы алгоритмизации, вы наверняка получите удовольствие от возможности самостоятельно управлять компьютером.
Как и в любом учебнике, вам встретятся новые термины. Для удобства они напечатаны жирным шрифтом. В разделе «Для любознательных» приведены интересные факты и задачи, позволяющие ещё больше углубить свои знания.
В учебнике разобрано большое количество задач. Заучивать их решения наизусть совсем не обязательно, важно понимать их смысл и уметь применять на практике.
Мы считаем, что временами и о серьезных вещах можно говорить в простой, доступной форме. Ведь простота нередко позволяет увидеть неожиданные стороны того, что, казалось бы, уже хорошо знакомо. В общем, надеемся, что читать учебник будет не только полезно, но и приятно. А теперь — в путь! В неизвестную вам пока страну ПРОГРАММИРОВАНИЕ.
(Н. Винер)
Компьютер был создан, прежде всего, для того, чтобы освободить человека от громоздких и утомительных вычислений. Быстродействие компьютера позволило легко решить многие практические задачи, требующие больших объёмов вычислений. Конечно, без методов вычислений, созданных людьми, многие важные задачи так и остались бы нерешенными, даже если бы компьютеры работали в миллионы раз быстрее.
Чтобы компьютер стал настоящим помощником человека, его необходимо научить решать поставленные перед ним задачи. Для этой цели и необходимы люди, умеющие программировать, т.е. создавать программные средства для компьютера.
В основе программирования лежит умение создавать алгоритмы для решения поставленной задачи.
С понятием алгоритма вы познакомились в курсе информатики в предыдущих классах. Поэтому мы в этом параграфе только обобщим и закрепим ваши знания по этой теме.
Термин «алгоритм» произошёл от имени среднеазиатского учёного IX века Мухаммеда ибн Муса ал-Хорезми (в переводе с арабского означает «Мухамед сын Мусы из Хорезма»), который описал десятичную систему счисления и впервые сформулировал правила выполнения арифметических действий над целыми числами и простыми дробями. В латинском переводе эти правила начинались словами «Алгоризми сказал». Постепенно люди забыли, что Алгоризми — это автор правил, и стали сами эти правила называть алгоритмами.
Что же мы понимаем под термином «алгоритм»?
 ïîâñåäíåâíîé æèçíè äîâîëüíî ÷àñòî ïðèõîäèòñÿ âñòðå÷àòüñÿ ñ ðàçëè÷íûìè èíñòðóêöèÿìè, ãäå óêàçûâàåòñÿ ðÿä çàðàíåå ïðåäóñìîòðåííûõ îïåðàöèé, ïðè ïîñëåäîâàòåëüíîì âûïîëíåíèè êîòîðûõ ìîæíî ïðèéòè ê æåëàåìîìó ðåçóëüòàòó.
Самый популярный сборник таких инструкций — книга кулинарных рецептов, в которых дана подробная технология приготовления тех или иных блюд.
Пример 1. Рецепт приготовления какао на молоке.
Взять какао — 8 грамм, сахара — 25 грамм, молока — 150 грамм.
Порошок какао засыпать в кастрюлю,
добавить сахар,
тщательно перемешать,
влить немного горячей воды или молока
и растереть ложкой до образования однородной массы.
После этого тонкой струёй, непрерывно помешивая, влить молоко
и довести до кипения.
В стакан с налитым какао можно положить взбитые сливки.
Отделить желтки от белков (2 шт.).
Желтки положить в фарфоровую посуду.
Добавить сахар (25 г).
Ввести апельсиновую или лимонную цедру, натёртую на мелкой тёрке (0,02 г).
Хорошо растереть.
Влить апельсиновый ликёр или ром, или вино розовый мускат (10 г).
Взбить до консистенции густой сметаны.
С инструкциями вы сталкиваетесь и в учебнике математики.
Пример 3. правило сложения дробей с разными знаменателями.
Найти наименьший общий знаменатель.
Разделить наименьший общий знаменатель на знаменатели данных дробей, т.е. найти дополнительные множители для каждой дроби.
Умножить числитель каждой дроби на дополнительный множитель этой дроби.
Найти сумму полученных произведений и записать её в числитель результата.
Наименьший общий знаменатель записать в знаменатель результата.
На первый взгляд между этими примерами нет ничего общего. Одно дело — готовить какао, другое — складывать дроби. Однако если присмотреться внимательно, можно заметить существенное сходство между ними. Прежде всего, это строгий порядок выполнения действий. Затем, каждая инструкция состоит из чёткого описания действий производимых над имеющимися данными, выполняя которые, мы достигаем результата.
Àëãîðèòìîì áóäåì íàçûâàòü ïîñëåäîâàòåëüíîñòü ÷åòêèõ îäíîçíà÷íûõ óêàçàíèé, êîòîðûå, áóäó÷è ïðèìåíåíû ê èìåþùèìñÿ äàííûì, îáåñïå÷èâàþò ïîëó÷åíèå òðåáóåìîãî ðåçóëüòàòà. Êàæäîå òàêîå óêàçàíèå íàçûâàåòñÿ êîìàíäîé.
Äàííûìè íàçûâàþò âñå âåëè÷èíû, ó÷àñòâóþùèå â ðåøåíèè çàäà÷è. Äàííûå, èçâåñòíûå ïåðåä âûïîëíåíèåì àëãîðèòìà, ÿâëÿþòñÿ íà÷àëüíûìè, èñõîäíûìè äàííûìè или аргументами. Данные, полученные в рåçóëüòàòе ðåøåíèÿ çàäà÷è - ýòî êîíå÷íûå, âûõîäíûå (итоговые) äàííûå. Данные, которые нужны лишь на некотором промежутке выполнения алгоритма – это промежуточные данные.
Приведенное выше определение алгоритма не является определением в математическом смысле, а лишь отражает понятие алгоритма на «интуитивном уровне», так как используемые в определении слова не являются математическими терминами.
Учитывая перечисленные свойства алгоритма можно дать и такое его определение: под алгоритмом понимают точное и понятное предписание, определяющее, какие действия и в каком порядке необходимо выполнить для решения любой задачи из данного класса однотипных задач.
Необходимо определить, что такое класс задач. Согласно установленным правилам, каждый класс задач характеризуется исходными данными. Что это значит? Попытаемся объяснить это понятие на следующем примере. «Сложить два числа» — это класс задач, а не задача, так как можно предложить различные числа: 5 и 5, 7 и 9, 255 и 634 и т.д. Для каждой пары конкретных чисел мы получим конкретную задачу.
В свою очередь, «сложить числа» тоже является классом задач, но более широким, чем предыдущий. Здесь количество исходных данных иное. Надо указать, сколько чисел сложить 2, 5, 10 или больше, и предложить конкретные числа.
Массовость алгоритма как раз и предполагает его правильную работу при меняющихся в заданных пределах значениях исходных данных.
1.3. Èñïîëíèòåëè. Ñèñòåìà êîìàíä èñïîëíèòåëÿ. Íà ïîèñêè àëãîðèòìà ðåøåíèÿ íåêîòîðûõ çàäà÷ ó÷åíûå çàòðà÷èâàþò ìíîãèå ãîäû. Íî êîãäà îí íàéäåí, ðåøåíèå çàäà÷è ïî ãîòîâîìó àëãîðèòìó óæå íå òðåáóåò êàêèõ-ëèáî ðàññóæäåíèé è ñâîäèòñÿ òîëüêî ê ñòðîãîìó âûïîëíåíèþ êîìàíä àëãîðèòìà.
Êàæäûé àëãîðèòì ñòðîèòñÿ â ðàñ÷åòå íà íåêîòîðîãî èñïîëíèòåëÿ. из курса информатики вы уже знаете, что иñïîëíèòåëåì íàçûâàют ÷åëîâåêà, æèâîå ñóùåñòâî èëè àâòîìàòè÷åñêîå óñòðîéñòâî, êîòîðîå ñïîñîáíî ê âîñïðèÿòèþ è èñïîëíåíèþ êîìàíä.
Роботы-манипуляторы и станки с числовым программным управлением, живая клетка и даже животные в цирке исполняют различные алгоритмы, в том числе и те, которые человек выполнить не в силах.
Ясно, что, как бы ни были разнообразны возможности исполнителя, они всегда ограничены. Поэтому, прежде чем составлять алгоритм решения задачи, нужно узнать, какие действия предполагаемый исполнитель может выполнить.
 àëãîðèòì äîëæíû âêëþ÷àòüñÿ òîëüêî òå êîìàíäû, êîòîðûå âõîäÿò â ñèñòåìó êîìàíä èñïîëíèòåëÿ.
Исполняя алгоритм, исполнитель может не вникать в смысл того, что он делает, и вместе с тем получать нужный результат. В таком случае говорят, что исполнитель действует формально, т.е. отвлекается от содержания поставленной задачи и только строго выполняет некоторые правила, инструкции алгоритма в указанной последовательности.
В этом случае исполнение алгоритма можно поручить не только человеку, но и машине. Конечно, это должна быть машина, специально созданная для выполнения отдельных команд алгоритма и выполняющая их в последовательности, указанной в алгоритме.
Êîìïüþòåðû ïîçâîëÿþò èñïîëüçîâàòü ìîäåëè ðåàëüíûõ èñïîëíèòåëåé. Òàêèõ èñïîëíèòåëåé íàçûâàþò êîìïüþòåðíûìè èñïîëíèòåëÿìè. С некоторыми из них вы уже познакомились на уроках информатики. Это — Робот и Чертёжник.
Êîìïüþòåðíûé èñïîëíèòåëü — ýòî âèðòóàëüíûé îáúåêò, êîòîðûé ñïîñîáåí äåéñòâîâàòü â âèðòóàëüíîé ñðåäå. Îí è åãî äåéñòâèÿ îòîáðàæàþòñÿ íà ýêðàíå äèñïëåÿ.
1.4. Ôîðìû ïðåäñòàâëåíèÿ àëãîðèòìîâ. Àëãîðèòì задаётся в той форме, которая наиболее удобна и понятна людям, работающим с ним. Наиболее распространённые способы задания: ñëîâåñíый, òàáëè÷íый, ãðàôè÷åñêèй (ñ ïîìîùüþ áëîê-ñõåì).
Словесная форма описания алгоритма ñëóæèò äëÿ ïðåäñòàâëåíèÿ àëãîðèòìà ñ ïîìîùüþ ñëîâ è ïðåäëîæåíèé åñòåñòâåííîãî ÿçûêà.
Табличная форма описания алгоритма ñëóæèò äëÿ ïðåäñòàâëåíèÿ àëãîðèòìà â ôîðìå òàáëèö è ðàñ÷åòíûõ ôîðìóë.
Графическая форма описания алгоритма, èëè áëîê-ñõåìà, - ýòî ñïîñîá ïðåäñòàâëåíèÿ àëãîðèòìà ñ ïîìîùüþ ãåîìåòðè÷åñêèõ ôèãóð, íàçûâàåìûõ áëîêàìè, и соединительных линий.
1.5. Áëîê-ñõåìû àëãîðèòìîâ. Ïîñëåäîâàòåëüíîñòü áëîêîâ è ñîåäèíèòåëüíûõ ëèíèé îáðàçóþò áëîê-ñõåìó. Îïèñàíèå àëãîðèòìîâ ñ ïîìîùüþ áëîê-ñõåì — íàèáîëåå íàãëÿäíûé è ðàñïðîñòðàíåííûé ñïîñîá çàäàíèÿ àëãîðèòìîâ. Элементы áëîê-ñõåìû обычно ðàñïîëàãàþò ñâåðõó âíèç. Ëèíèè ñîåäèíåíèÿ áëîêîâ ïîêàçûâàþò íàïðàâëåíèå ïðîöåññà îáðàáîòêè â ñõåìå. Êàæäîå òàêîå íàïðàâëåíèå íàçûâàåòñÿ âåòâüþ.
Îñíîâíûå áëîêè:
Условное обозначение Пояснение
Блок показывает начало или конец алгоритма.
Блок действия (функционльный блок).
Блок слияния. Имеет одну или несколько входящих стрелок и одну выходящую
При изображении линейного алгоритма с помощью блок-схемы блоки следуют один за другим, выстраиваясь в одну ветвь обработки. Разберём процесс построения алгоритма на примерах.
Возникающая ситуация оценивается при помощи условий. Условие понимается как вопрос, на который можно получить один из двух ответов — условие выполняется (говорят, что оно истинно) или условие не выполняется (говорят, что оно ложно).
Алгоритм, содержащий хотя бы одно условие, после проверки которого выполнение алгоритма продолжается по двум совершенно различным наборам команд, называется разветвляющимся.
Схема такого алгоритма содержит несколько (по крайней мере, две) ветвей обработки.
Блок-схема алгоритма решения этой задачи приведена на рисунке 4.
Решение любой задачи с использованием компьютера требует предварительной работы и производится в несколько этапов. Часть этих этапов выполняется только человеком, а другая часть — человеком и компьютером.
Основные этапы решения задачи с помощью ЭВМ следующие:
1) Ïîñòàíîâêà çàäà÷è, âêëþ÷àþùàÿ ïîñòðîåíèå ìàòåìàòè÷åñêîé ìîäåëè è âûäåëåíèå àðãóìåíòîâ è ðåçóëüòàòîâ.
Пусть вам надо решить какую-нибудь задачу, и вы хотите воспользоваться услугами компьютера. С чего начать? Прежде всего, нужно разобраться, что дано, что требуется получить, как связаны исходные данные и результаты. Иначе говоря, задача должна быть чётко сформулирована. Обычно из формулировки школьной задачи можно однозначно извлечь, что дано, что требуется получить, и как связаны исходные данные с результатами (хотя и не всегда просто это сделать). Однако жизнь постоянно заставляет решать задачи посложнее, чем в школьных учебниках.
Про задачи, в которых неясно, что дано или что надо получить, либо нечётко определены связи между исходными данными и результатами, говорят, что они плохо поставлены. Их решение надо начинать с чёткой постановки.
Нелёгкое это дело правильно поставить задачу: не переупростить и не переусложнить, не упустить важных исходных данных и не включить лишних, соразмерить желаемое с возможным. Например, следующая задача.
Составить расписание уроков в школе, удовлетворяющее и учителей и школьников. Каковы исходные данные для этой задачи? Это зависит, конечно, от того, какое расписание считать хорошим. Можно задаться целью обеспечить лишь то, чтобы два разных урока не проходили в одно и то же время в одном классе. Тогда исходных данных будет немного: список учебных предметов да количество классов на каждой параллели. При этом, правда, может случиться, что одному классу придётся изучать только математику, другому — только географию. И это не самые страшные накладки, которые могут при этом получиться. попробуйте сами чётко сформулировать задачу составления расписания. Кстати, компьютерной программы составления расписания, которая бы удовлетворяла всех участников учебного процесса, до сих пор не существует. Вот вам информация к размышлению! Дерзните.
Постановка задачи — это очень важная часть её решения. В процессе выделения исходных данных, результатов и определения связей между ними, путем отбрасывания несущественных деталей, не влияющих на результат, создается модель задачи. Искусство составления моделей как раз и заключается в том, чтобы, не переусложнив модель, учесть в ней всё существенное и отбросить второстепенное. например, все мы привыкли видеть в качестве модели Земли глобус.
Составить хорошую модель задачи — дело непростое. Даже если решать задачу предстоит вам. А если модель надо будет объяснить компьютеру? В этом случае нужно позаботиться о том, чтобы исходные данные и результаты были числами, а связи между ними — математическими соотношениями. Выполнив такой «перевод» задачи на язык математики, вы получите математическую модель.
Создание математической модели завершает первый этап решения задачи с помощью компьютера. Это, пожалуй, самый важный этап решения задачи. От того насколько хорошо и правильно сформулирована задача; насколько точно учитывает модель главные и значимые особенности решаемой задачи в огромной степени зависит, какой результат мы получим.
2) Ïîñòðîåíèå àëãîðèòìà. После постановки задачи начинается поиск метода её решения. Для решения задачи строится алгоритм. При построении алгоритма можно выделить следующие этапы:
Разработка. Как уже говорилось, основная сложность при решении задач заключается в построении алгоритма решения. Построение алгоритма решения задачи можно подчинить вполне определённым правилам, облегчающим само построение и понимание алгоритма. Искусство составления алгоритмов заключается в умении конструировать сложный алгоритм из более простых алгоритмов и структур. Этот метод последовательного построения алгоритмов называют методом пошаговой детализации. Более подробно мы расcкажем о нём позднее. Применяя принцип пошаговой детализации алгоритма, можно конструировать алгоритм на основе небольшого числа конкретных правил.
Обоснование. При создании алгоритма необходимо следить за тем, чтобы он был корректным, т.е. давал результат при всех допустимых значениях входных данных. А также следить за тем, чтобы в алгоритме отсутствовали недопустимые операции. Например, при вычислении значения дроби, необходимо следить за тем, чтобы знаменатель не обращался в нуль; при извлечении квадратного корня из выражения необходимо следить за тем, чтобы подкоренное выражение всегда оставалось не меньше нуля и т.д.
Представление. Мы уже упоминали об основных формах представления алгоритма. При решении конкретной задачи необходимо выбирать тот способ, который позволяет наиболее точно и наглядно передать суть алгоритма.
Если алгоритм предназначен для человека, то в качестве команд можно использовать привычные для человека предложения, фразы. Однако словесная форма удобна для записи небольших алгоритмов. Если же алгоритм содержит десятки команд, то в такой форме довольно трудно проследить всевозможные разветвления. В таком случае удобнее использовать блок-схемы.
Чтобы компьютер смог решить поставленную перед ним задачу, алгоритм должен быть записан на понятном машине языке. Таким языком является язык машинных кодов. Программа, написанная на языке машинных кодов, представляет собой совокупность команд, записанных в двоичном коде. И первые программы приходилось писать на нём. Это было утомительно и неудобно. особенно сложным был ввод программы в машину. Малейшая неточность приводила к непредсказуемым результатам. Для того чтобы облегчить труд программиста, и были созданы специальные языки программирования. Алгоритм, записанный на языке программирования, называется программой.
На языке программирования программа записывается не в виде загадочных последовательностей чисел, а в удобном текстовом виде. Программу, написанную на языке программирования, называют исходным текстом.
язык программирования - средство для написания компьютерных программ, имеющее алфавит, правила синтаксиса и семантики.
Алфавит языка — это набор символов, из которых формируются слова и предложения в программе.
Синтаксис — это система правил, определяющих структуру конструкций языка.
Семантика — это соответствие между конструкциями языка и их значениями.
Исходный текст программы, записанный с помощью языка программирования, не может выполниться компьютером, т.к. не является последовательностью машинных команд. Этот текст необходимо перевести на язык команд процессора, транслировать. Этим и занимаются специальные программы-трансляторы: компиляторы и интерпретаторы. Трансляторы осуществляют перевод текста программы с языка программирования на язык машинных команд. Разница между ними в следующем: компиляторы сначала переводят программу на язык машинных команд, а потом выполняют целиком, а интерпретаторы обрабатывают и выполняют программу пооператорно, шаг за шагом.
В процессе трансляции программы выявляются синтаксические ошибки. Так называются ошибки, допущенные программистом при написании слов языка, а также ошибки в операторах, несоблюдение правил написания программы. После того как ошибки исправлены, можно запускать программу на выполнение.
4) Ðåàëèçàöèÿ àëãîðèòìà ñ ïîìîùüþ ÝÂÌ. Чтобы разобраться, как реализуется алгоритм с помощью ЭВМ, смоделируем сначала наши действия при решении простой задачи обычным способом, без использования компьютера. Найдём сумму двух чисел.
Прежде всего, нам необходимо знать, чему равны первое и второе слагаемые. Эти значения мы получаем или из текста примера (информация поступает через глаза), или же кто-то продиктует нам нужные числа (информация поступает через уши).
Где мы будем хранить значения слагаемых? Либо на бумаге, либо в своей памяти. затем, получив указание «сложить», мы произведём нужное действие и получим ответ. А где будет храниться ответ? Либо в нашей памяти, либо на бумаге.
Машина выполняет те же самые шаги:
1) получает значение слагаемых (делаем вывод, поскольку машина — это техническое устройство, то необходим блок, с помощью которого можно ввести в машину значения чисел; в современных ЭВМ основным устройством для ввода данных обычно используется клавиатура);
2) хранит значения слагаемых до следующего указания (возникает необходимость блока для хранения чисел — внутренняя память);
3) выполняет необходимое действие над заданными слагаемыми и опять хранит, но уже сумму (необходим блок, умеющий считать);
4) сообщает ответ человеку, значит, необходим блок или устройство, на котором возможно показать ответ (чаще всего это экран дисплея).
На этом наши действия закончились, но
5) человек сам себе хозяин: захотел — сложил, захотел — умножил, и он сам знает какую операцию когда выполнить. Машина тоже должна соблюдать определённую последовательность действий и не перепутать! Для этого тоже нужно устройство, управляющее работой машины. Процессор — это и есть тот самый блок, который умеет считать и управлять работой вычислительной машины.
Проведя вычисления на компьютере, необходимо проанализировать результаты. Ведь какой бы совершенной не была созданная математическая модель, она всегда основана на некотором упрощении, что может привести к искажению результатов. Только сопоставив результаты расчётов с экспериментальными данными и другой информацией, можно убедиться, что модель соответствует реальной задаче. При этом может возникнуть необходимость уточнить как программу, так и математическую модель. Кроме того, при решении задачи могут быть получены результаты, которые противоречат смыслу задачи. Например, пусть математическая модель, описывающая количество изделий, выпускаемых предприятием за день, представляет собой квадратное уравнение. Если один из корней уравнения отрицателен, то такой результат противоречит смыслу и должен быть отброшен. процесс уточнения программы и математической модели называют отладкой программы. Иногда отладку выделяют в отдельный этап решения задачи.
Составление инструкций для компьютера называется программированием. Создание даже самых простых программ поможет вам лучше понять как работает компьютер и как устроено программное
01 10 2014
26 стр.
01 10 2014
1 стр.
Итак, дорогие друзья, я хочу рассказать Вам о том, как мы ездили на всероссийский форум «Кавказ 2020», описать все те интересные моменты, которые пережил и просто поделиться впечат
15 12 2014
1 стр.
Дорогие друзья! Мы рады встрече, которая посвящена вопросам взаимоотношений среди молодежи
11 10 2014
1 стр.
Добрый день, дорогие друзья! Когда-то Ф. М. Достоевский сказал: «Красота спасёт мир». Задумайтесь, может быть это правда?
06 10 2014
1 стр.
Дорогие друзья, представляем вам еще один эксклюзивный маршрут незнакомая италия, предлагаем познакомиться с «нашей» Италией
12 09 2014
1 стр.
Он был создан в апреле 2007 год. В бумажной версии, как газета "Золотой Век", он существует с октября 2000 года
23 09 2014
1 стр.
Лазаренко Н. В. Квн по физике для vii–viii классов // Фiзiка: праблемы выкладання. – 1997. – Вып. – С. 101–104
14 12 2014
1 стр.