Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные приемы программирования




Сведение сложного к простому. Цикл. Итак, чтобы заставить компьютер что-то сделать, нужно написать программу. И тут невольно возникает вопрос - неужели возможно, записывая одна за другой довольно примитивные команды языка программирования, написать программы для всех тех замечательных умений компьютера, некоторые из которых я уже упоминал? Возьмем, например, игру в воздушный бой. Ведь самолетик по экрану должен двигаться. Но в списках команд большинства языков программирования нет команды движения. Или возьмем траекторию полета к Марсу. Для ее вычисления нужно решать сложнейшие дифференциальные уравнения высшей математики. Но процедуры языков Фортран, Бэйсик, Паскаль, которые используются для этих целей, не могут ничего, что выходит за рамки школьного курса. И непонятно, в конце концов, как научить компьютер разговаривать, если в нашем распоряжении только команда извлечения из компьютера простого звука заданной высоты.

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

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

Вот воздушный бой. Здесь нужно задаться вопросом - а что такое движение? Рассмотрим иллюзию движения, возникающую на экране кинотеатра. Если вы держали в руках кинопленку фильма, изображающего, скажем, движение автомобиля, то должны были обратить внимание, что она представляет собой последовательность неподвижных слайдов (кадров), на каждом следующем из которых автомобиль находится чуть-чуть в другом месте, чем на предыдущем. Показывая эти кадры один за другим с большой скоростью, мы создаем иллюзию движения автомобиля. Точно так же поступают с созданием движения на экране компьютера. Запишем алгоритм движения по экрану слева направо обыкновенного кружочка:

 

1. Зададим (в уме компьютера) позицию кружочка в левой части экрана. Перейдем к команде 2.

2. Нарисуем в заданной позиции кружочек. Перейдем к команде 3.

3. Сотрем его. Перейдем к команде 4.

4. Изменим (в уме компьютера) позицию кружочка на миллиметр правее. Перейдем к команде 5.

5. Перейдем к команде 2.

 

Каждая из приведенных команд алгоритма легко программируется на большинстве языков. В том числе и на Visual Basic. Кстати, любой компьютер, выполнив очередную команду, автоматически переходит к выполнению следующей (так что нам не обязательно было писать, скажем, во второй команде "Перейдем к команде 3."). Однако, если мы захотим, то можем заставить компьютер изменить этот порядок, что мы и сделали в команде 5, благодаря чему компьютер стал многократно выполнять последовательность команд 2-3-4-5. Такая многократно выполняемая последовательность называется циклом. Цикл - основное средство заставить компьютер сделать много при помощи короткой программы.

В коротком промежутке времени после выполнения команды 2 кружок будет появляться на экране и на команде 3 исчезать, но этого достаточно, чтобы человеческий глаз его заметил. Благодаря команде 4 кружок будет мелькать каждый раз в новом месте, а поскольку смена “кадров” будет очень быстрой, нам будет казаться, что происходит плавное движение кружка.

 

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

 

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

 

Собственные процедуры.. Большую помощь в упрощении программирования сложных задач оказывает возможность, предоставляемая программисту большинством языков, составлять собственные процедурыиз команд и операторов языка. Составляется процедура точно так же, как в 25.1 для робота составлялась процедура ПЕРЕСТАВЬ СТУЛ. Пусть, например, вы хотите, чтобы компьютер изобразил на мониторе три поезда, каждый из которых состоит из одного паровоза и четырех вагонов. Сначала мы пишем программу для рисования вагона (прямоугольник и четыре кружочка). Сейчас мы не будем обсуждать, как правильно расположить на экране друг относительно друга прямоугольник, кружочки, вагоны и поезда. Вам остается поверить, что делается это довольно легко. Вот алгоритм программы из 5 команд для рисования вагона:

1. Нарисовать прямоугольник.

2. Нарисовать кружочек.

3. Нарисовать кружочек.

4. Нарисовать кружочек.

5. Нарисовать кружочек.

 

Для того, чтобы нарисовать четыре вагона, вам понадобилась бы программа из 20 команд. Писать их утомительно, поэтому программисты поступают по-другому. Программу рисования вагона они называют процедурой, придумывают ей имя, скажем, ВАГОН и сообщают его компьютеру. Аналогично процедуре ВАГОН они составляют процедуру ПАРОВОЗ (которую я не буду приводить). Из обращений к этим готовым процедурам они составляют процедуру ПОЕЗД, алгоритм которой будет выглядеть так:

1. Выполни процедуру ПАРОВОЗ

2. Выполни процедуру ВАГОН

3. Выполни процедуру ВАГОН

4. Выполни процедуру ВАГОН

5. Выполни процедуру ВАГОН

И наконец, они пишут программу для рисования трех поездов, которая оказывается совсем короткой:

1. Выполни процедуру ПОЕЗД

2. Выполни процедуру ПОЕЗД

3. Выполни процедуру ПОЕЗД

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

 

Ветвление(выбор). У начинающего программиста интерес должен вызвать такой вопрос: как компьютер принимает решения, как он выбирает, какое действие из нескольких возможных нужно выполнить в данный момент? Возьмем тот же воздушный бой. Предположим, при нажатии на клавишу R самолет летит вверх, при нажатии на клавишу V - вниз. Как компьютер чувствует нажатие на клавиши, откуда он знает, что нужно делать при нажатии на каждую из них? Ведь в другой игре, например, "Детский сад", при нажатии на клавишу R дети бегут гулять, а при нажатии на клавишу V - обедать. Естественно, этот выбор делает программа для игры, сам по себе компьютер ничего выбрать не может. В программе игры в воздушный бой заранее пишутся процедуры для полета вверх и для полета вниз, а выбор между ними делает специальная команда выбора, имеющаяся в каждом языке программирования. Вот алгоритм выбора между полетом вверх и вниз:

 

1. Определи, нажата ли какая-нибудь клавиша.

2. Если не нажата, то переходи к команде 5.

3. Если нажата клавиша R, то выполняй процедуру ВВЕРХ.

4. Если нажата клавиша V, то выполняй процедуру ВНИЗ.

5. Продолжай полет.

 

Здесь команды 2,3,4 - команды выбора. В общем случае команда выбора содержит условие, от которого зависит, будет ли выполняться какая-нибудь команда или группа команд. Это условие может быть самым разным: нажата или нет любая клавиша, нажата или нет конкретная клавиша, больше ли одно число другого, правда ли, что с клавиатуры введено такое-то слово и т.д.

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

1. Покажи на мониторе текст "Здравствуйте, я - компьютер, а вас как зовут?"

2. Жди ответа с клавиатуры.

3. Если на клавиатуре человек набрал "Петя" или "Вася", то покажи на мониторе текст "Рад встретиться со старым другом!", иначе покажи на мониторе текст "Рад познакомиться!"

4. Покажи на мониторе текст "Чем сегодня будем заниматься - программировать или играть?"

5. Жди ответа с клавиатуры.

6. Если..............

.............

 

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

На этом мы завершим умозрительное рассмотрение основных идей программирования. Конкретное их воплощение на языке Visual Basic вы увидите в книжке. А сейчас пришла пора посмотреть на внутреннее устройство компьютера.

 

Глава 26. Устройство и работа компьютера

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




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 536; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.