О курсе

Что из себя представляет компьютер сам по себе? Набор микросхем, проводов, пластмассовых деталей и тому подобных элементов. Он может включаться и выключаться, но пользы от этого будет мало, если на нем не установлено программное обеспечение. Сайты просматриваются с помощью таких программ, как «Chrome» и «Safari», шпаргалки печатаются в редакторах типа «Word», музыка на плеер загружается с помощью iTunes или файлового менеджера, а игры играются с помощью таких приложений, как «Angry Birds» или «Lineage». Даже операционная система – «Windows», «Mac OS», «Android» и им подобные – является одной большой программой, на которую устанавливаются все другие программы! При этом хотелось бы отметить, что все эти и многие другие программы изначально не существовали в природе и не выросли на деревьях под светом солнца! Отнюдь нет! Они были созданы такими же людьми, как мы с вами. Есть такая профессия – программист, и именно люди этой профессии наполняют океан компьютерных программ новыми разработками и улучшают имеющееся программное обеспечение. Многие из нас уже научились более или менее уверенно плавать в океане компьютерных программ, но мало кто может похвастаться тем, что способен добавить в этот океан новую каплю или изменить существующую. Так вот, нам предстоит вступить в ряды людей, которые знают, как писать программное обеспечение. Для тех, кого интересует такая перспектива – в путь дорогу!

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

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

Программирование

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

Как исполнитель, компьютер обладает набором простейших команд, которые он может выполнять.

Система команд - это набор простейших команд, которые может выполнять исполнитель.

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

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

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

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

Вот сколько действий необходимо выполнить - и все это только для того, чтобы мы увидели новую букву на экране!

Число команд многих компьютеров исчисляется десятками, а действий, которые требуются для отображения буквы, мы перечислили - 9 штук. Разумеется, все действия, которые мы перечислили, являются сложными и сами состоят из более простых операций. А эти 9 команд разбиваются на более простые, те - на еще более простые, и так до тех пор, пока вся программа не будет представлена в виде простейших команд. Если бы при каждом изменении на экране нам приходилось бы вручную выполнять все эти действия, то компьютер не облегчил бы, а только усложнил нашу жизнь!

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

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

Алгоритмы

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

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

Мы в роли исполнителя будем рассматривать компьютер.

Каков алгоритм перехода через дорогу?

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

Кто является исполнителем алгоритма? Какие инструкции можно выделить в рассмотренном алгоритме?

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

Каков алгоритм работы часов?

Переместить на одно деление секундную стрелку. Стрелка на нулевой отметке? Если да - переместить минутную стрелку на одно деление. Минутная стрелка на нулевой отметке? Если да - переместить часовую стрелку на одно деление. Если нет - не трогать часовую стрелку. Если секундная стрелка не на нулевой отметке, не трогать ни минутную, ни часовую стрелку. Подождать одну секунду. Вернуться к началу алгоритма.

Кто является исполнителем в алгоритме предыдущего вопроса? Из каких команд состоит его система команд?

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

Виды алгоритмов

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

  • Алгоритмы с линейной структурой. В таких алгоритмах инструкции просто следуют друг за другом.
    Например, за действием "Налить в чайник воду" обязательно следует действие "Включить чайник".
  • Алгоритмы с разветвляющейся структурой. В таких алгоритмах присутствует условие, в зависимости от которого выполняются те или иные действия.
    Например, в зависимости от ответа на вопрос "Хочу ли я чай или кофе?" мы выполняем действие "Положить в чашку две ложки кофе" или "Положить в чашку чайный пакетик".
  • Алгоритмы с циклической структурой. В таких алгоритмах одни и те же инструкции повторяются несколько раз.
    Например, сладкоежки повторяют действие "Положить чайную ложку сахара" четыре раза, а гурманы - ни разу или один раз.
  • Алгоритмы со сложной структурой. Такие алгоритмы состоят из различных комбинаций трех вышеперечисленных алгоритмов. Очевидно, что даже приготовить чай мы не сможем, используя один из трех вышеприведенных алгоритмов!
    Из приведенных примеров видно, что для приготовления чая/кофе нужно воспользоваться алгоритмом со сложной структурой:
    • Налить в чайник воду
    • Понять, что будем пить - чай или кофе?
    • Если чай - достать пакетик, если кофе - достать банку с кофе.
    • Поместить в чашку чай/кофе
    • Дождаться, пока чайник вскипит
    • Налить кипяток в чашку
    • Подождать немного, пока чай заварится или кофе растворится
    • Решить, сколько ложек сахара надо класть.
    • Класть ложку сахара, пока не положим нужное количество
    • Начать пить

Какая структура используется в следующих алгоритмах?

  • Достать ключи, найти нужный ключ, открыть замок, открыть дверь, зайти, закрыть дверь?

    Линейная структура

  • Сделать 10 отжиманий

    Циклическая структура

  • Зайти на страницу "ВКонтакте" посмотреть, написала ли девушка. Если новых сообщений не видно, обновить страницу - может, все-таки написала?

    Разветвляющаяся структура

  • Посмотреть цифру, нажать на телефоне, посмотреть другую цифру, нажать на телефоне и т.д.

    Сложная структура: циклическая структура + линейная структура

  • Сделать шаг. Сделать второй шаг. Сделать третий шаг.

    Циклическая структура

  • Если хочется спокойно отдохнуть, едем в Турцию, если хочется культурного отдыха - отправляемся во Францию, если желаем насладиться бескрайними просторами природы - на Урал.

    Разветвляющаяся структура

  • Прийти домой, сбросить портфель, плюхнуться на диван, включить телевизор, заснуть за телевизором.

    Линейная структура

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

Способы записи алгоритмов

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

Словесный способ записи

Алгоритм записывается на естественном языке. Любой алгоритм при создании формулируется (но не обязательно записывается) именно в словесной форме, поскольку все люди говорят и мыслят на естественном языке.

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

  • Возможны формулировки, имеющие неоднозначную трактовку
  • Данная форма записи является громоздкой и ненаглядной
  • Алгоритм не может быть обработан компьютером

Блок-схемы

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

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

Начало и конец главного алгоритма
Обозначают начало и конец алгоритма.
Действие
Указывает на выполнение одной или нескольких операций.
Предопределенный процесс
Подобен процессу, но ссылается на алгоритм, определенный в другом месте.
Ветвление
Обозначает место ветвления алгоритма. Имеет один вход и два или более выхода.
Цикл
Обозначает повторяющиеся операции.
Ввод и вывод данных
Используются для указания мест получения данных от пользователя/вывода данных пользователю.
Комментарий
Используется для комментирования элементов блок-схемы.
Соединитель
Используется для соединения блок-схем, которые пришлось разъединить, например из-за того, что блок-схема не поместилась на одной странице.

Запишем алгоритм перехода через дорогу с помощью блок схемы.

Начало алгоритма отмечено элементом со словом "Начало", далее алгоритм идет вниз, после этого вправо и затем вверх. Заканчивается алгоритм элементом со словом "Ура!"

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

Шуточный алгоритм "Покупка iPad"

Автомат по выдаче шоколадок принимает монеты и купюры. Пользователь вводит код товара, после чего автомат выдает товар и сдачу. Составить алгоритм работы автомата.

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

Псевдокод

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

Запишем алгоритм перехода через дорогу с помощью псевдокода.


begin

ПосмотретьВлево;

if ЕстьМашины then

	Подождать();

else

	repeat
		СделатьШаг;
	until СерединаДороги;

	ПосмотретьВправо;

	if ЕстьМашины then

		Подождать();

	else

		repeat
			СделатьШаг;
		until ДругаяСторона;

end.

Начало программы отмечено с помощью слова "begin", конец - с помощью слова "end". Действия, обозначаемые на блок-схеме прямоугольниками, заменяются текстовыми командами. Предопределенный процесс "Подождать" записывается с применением скобок. Для условия используются ключевые слова "if" (англ. "если"), "then" (англ. "тогда"), "else" (англ. "иначе"). Для обозначения цикла используются ключевые слова "repeat" (англ. "повторять") и "until" (англ. "пока").

Записать алгоритм работы автомата с шоколадками на псевдокоде.

    
  begin
    
    СчитатьКодТовара();

    ВывестиСтоимостьТовара();

    repeat

      ПринятьДеньги();

      ПосчитатьВнесеннуюСумму();

    until СуммаБольшеСтоимостиТовара;

    ПосчитатьСдачу();

    if СдачаИмеется then

      ВыдатьСдачу();

      ВыдатьТовар();

    else

      ВернутьДеньги();

      ПоказатьСообщениеСИзвинением();

  end.

  

Задачи на следование блок-схемам

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

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

Задача №1

c = 24, b = 11

Задача №2

c = 40, b = 5

Задача №3

c = 25, b = -2. Обратите внимание на порядок выполнения операций: сначала вычисляется b,а затем вычисляется c - с учетом нового значения b.

Задачи на понятие "система команд"

Задача №1 (ЕГЭ)

У исполнителя "Калькулятор" две команды, которым присвоены номера:

  1. прибавь 1
  2. умножь на 3

Выполняя первую из них, Калькулятор прибавляет к числу на экране 1, а выполняя вторую, утраивает его. Запишите порядок команд в программе получения из 2 числа 26, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа 21211 - это программа:

  • умножь на 3
  • прибавь 1
  • умножь на 3
  • прибавь 1
  • прибавь 1,

которая преобразует число 1 в 14).

211211

Задача №2 (ЕГЭ)

У исполнителя "Утроитель" две команды, которым присвоены номера:

  1. вычти 1
  2. умножь на 3

Первая из них уменьшает число на экране на 1, вторая - увеличивает его в три раза. Запишите порядок команд в программе получения из числа 3 числа 16, содержащей не более 5 команд.

12211

Список вопросов

  1. Что такое программирование и зачем оно нужно?
  2. Что такое система команд?
  3. Что такое алгоритм?
  4. Какие виды структур встречаются в алгоритмах?
  5. Какие существуют формы записи алгоритмов?

Домашнее задание

  • Повторить материал занятия и разобраться в нем. В начале каждого занятия - летучка!
  • Ответить на вопросы
  • Дорешать задачи, которые не успели

Материалы занятий по информатике для 10 класса

Использованные материалы

Дата последнего изменения: 26 декабря 2014