Языки программирования. 4

    1.   Введение.

Изучаемые вопросы:

    • Предметная область программирования; парадигмы программирования.
    • Методические вопросы изучения языков программирования
    • Методические вопросы изучения систем программирования

Программирование – это раздел информатики, задача которого разработка программного обеспечения ЭВМ. В узком смысле слова «программирование» обозначает процесс разработки программы на определенном языке программирования.

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

По этому принципу делят  программистов на системных и  прикладных, в зависимости от типа создаваемых ими программ.

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

      • Процедурное программирование (Паскаль, Бейсик,             Фортран, Си, Ассемблеры);
      • Логическое программирование (Пролог);
      • Функциональное программирование (Лисп);
      • Объектно-ориентированное программирование (Смолток, Си++, Делфи)

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

Прочес изучения и практического  освоения программирования можно разделить  на три части:

      • Изучение методов построения вычислительных алгоритмов;
      • Изучение языка программирования;
      • Изучение и практическое освоение определенной системы программирования.
    1.  Методические рекомендации по изучению языков программирования.

 

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

Языки программирования делятся на две группы:

      • машинно-ориентированные: Автокоды, Ассемблеры;
      • языки программирования высокого уровня (ЯПВУ)

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

Составляются  на языках высокого уровня (обычно для  этого используют язык Си).

На любом языке, демонстрируется на примерах учебных компьютеров. В ЯПВУ одна команда определяет уже не одну операцию процессора, а, в общем случае, множество. Поэтому к командам ЯПВУ более подходит термин «оператор».

Важнейшим оператором является оператор присваивания. В ЯПВУ оператор присваивания записывается практически так же, как алгоритмическом языке команда присваивания.

В ЯПВУ одним  оператором представляются целые алгоритмические  структуры: ветвление, цикл.  Правда, такое есть не во всех языках ( например, нет в стандартном Бейсике). Языки, в которых имеются структурные операторы, принято называть структурными языками. К их числу относятся Паскаль и Си.

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

Наиболее целесообразно для начального знакомства с языками программирования использовать язык Паскаль. Язык Паскаль был создан в 1971г. Никлаусом Виртом  как учебный язык. Основной принцип, заложенный в нем, - это поддержка структурной методики программирования. Этот же принцип лежит в основе учебного алгоритмического языка (АЯ). По сути дела, расхождения между АЯ и Паскалем состоит в следующем: АЯ - русскоязычный, Паскаль - англоязычный; синтаксис Паскаля определен строго и однозначно в отличие от сравнительно свободного синтаксиса АЯ.

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

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

Учитель может задуматься над проблемой: как лучше связать изучение методов построения алгоритмов работы с величинами языка программирования. Здесь возможны два варианта:

      • Сначала рассматриваются всевозможные алгоритмы, для описания которых используются блок-схемы и АЯ, а затем – правила языка программирования, способы перевода уже построенных алгоритмов в программу на этом языке;
      • Алгоритмизация и язык программирования осваиваются параллельно.

Опыт показывает, что теоретическое  изучение алгоритмизации и программирования, оторванное от практики, малоэффективно. Желательно, чтобы ученики как можно раньше получили возможность проверять правильность своих алгоритмов, работая на компьютере. А для этого им нужно знакомиться с языком программирования, осваивать приемы работы в системе программирования. Метод последовательного изучения алгоритмизации и навыка программирования приемлем лишь в «безмашинном» варианте.

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

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

      • Линейные алгоритмы: вычисления по формулам, всевозможные пересылки значений переменных;
      • Ветвящиеся алгоритмы: поиск наибольшего или наименьшего значений из нескольких данных; сортировка двух-трех значений; диалог с ветвлениями;
      • Циклические алгоритмы: вычисление сумм и произведений числовых последовательностей, циклический ввод данных с последовательной обработкой.
    1.  Примеры решения задач

 

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

Пример№1

Составить алгоритм, по которому на компьютере будет происходить следующее: в  переменную S вводится возраст Саши, в переменную М вводится возраст Саши. В качестве результата на экран выводится фраза «Саша старше Маши», или !Маша старше Саши», или «Саша и Маша Ровесники». Написать программу на Паскале по этому алгоритму.

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

 

 

алг   САША- МАША

вещ   S, M

нач вывод ‘Возраст Саши:’

ввод S

вывод ‘Возраст

Маши:’

ввод M

если S>M

то вывод ‘Саша

       старше Маши’

иначе если S=M

                             то вывод ‘Саша

и Маша

ровесники’

                             иначе вывод

                                     ‘Маша старше

Саши’ 

кв

 кв

кон

 

Program  Sasha &  Masha;

var   S, M: real;

begin write (‘Возраст

Саши:’);

readln (S);

write (Возраст

Маши:’);

readln (M);

if  S>M

then write (‘Саша

         старше Маши’)

else if S=M

                   then  write (‘Саша

и Маша ровесники’)

                   else write (‘Маша

старше Саши’)

end 

 

 

 

 

 

 

 

Пример №2.

 Дано вещественное число Х и натуральное N. Составить алгоритм вычисления ХN. Написать программу на Паскале.

Решение. В Паскале нет операции возведения в степень. Если  показатель степени -целое положительное число, то возводить степень нужно путём N- кратного умножения основания самого на себя. Реализуется это циклическим алгоритмом:

 

алг  степень

цел N,I; вещ Х;

нач ввод N

ввод 

I: =1;

Y: =1;

пока I<=N, повторять

нц

Y: =Y*X

I: =I+1

кц

 

Вывод Y

кон

 

 

program Power;

var N, I: integer;

X: real;

begin readln (N);

readln (X);

I: =1;

Y: =1;

while I<=N do

begin 

Y: =Y*X;

I: =I+1

end;

write (Y)

 

end.

 

При выполнении трассировки этого  алгоритма обязательно следует  проверить правильность его работы при N=0. Как известно из математики, Х0=1. трассировка доказывает, что и в этом случае алгоритм будет давать правильный результат.

Пример № 3.

Последовательно вводятся N целых чисел. Найти максимальное из них

Решение. В программировании часто приходится решать задачу поиска максимального (минимального) значения в числовом массиве. В базовом курсе могут не рассматриваться структурированные данные, в том числе массива, ограничившись простыми переменными. Для этого ввод данных и обработку надо совместить в одном цикле. Вот как это делается:

 

Алг максимум

цел N, I, X,  MAX

нач

вывод ‘введите N’;

ввод  N

вывод ‘введите X’;

ввод X

MAX: =X; I: =1

пока  I<N, повторять

нц

вывод ‘Введите Х’;

ввод  Х

если Х> MAX

то MAX:=Х

кв

I:=I+1

кц

вывод MAX

кон

 

 

 

Program   maximum;

var N, I, X, MAX: integer;

begin

write (‘введите  N’);

readln (N);

write (‘введите X’);

readln (X);

MAX: =X; I: =1;

while I<N do

begin

write (‘введите X’);

readln (X);

if X.MAX

then MAX: =X;

I: =I+1

end;

writeln (MAX)

end.

 

 

    1.   Методические рекомендации по изучению систем программирования.

В данной теме, как и в темах, связанных с информационными технологиями, следует придерживаться основного методического принципа изучения – принципа исполнителя. Выше уже говорилось о том, что теперь в качестве исполнителя рассматривается компьютер, оснащенный определенной системой программирования (СП). Всякий исполнитель предназначен для выполнения определенного вида работы. Что это за работа? Она состоит из трех составляющих: создание программы, отладка программы, исполнение программы.

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

Под средой программирования, будем  понимать обстановки на экране (системную  оболочку), в которой работает пользователь СП. Здесь учитель должен описать и показать ученикам оболочку именно той СП, с которой намерен работать в данной теме.

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

Характерными режимами работы СП являются:

      • режим редактирования текста программы;
      • Режим компиляции;
      • Режим исполнения;
      • Режим работы с файлами;
      • Режим помощи;
      • Режим отладки программы.

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

Режим компиляции существует у систем, обслуживающих компилируемые языки (Паскаль, СИ, Фортран и др.). Результатом компиляции является исполняемая программа, т.е. программа на языке машинных команд. В некоторых случаях получение исполняемой программы происходит в два этапа: собственно компиляции редактирования связей. Хотя учитель должен понимать смысл этих процедур, но в базовом курсе, при объяснении ученикам, эти вопросы можно подробно не комментировать.

Режим исполнения. В компилирующих системах в этом режиме исполняется полученная после трансляции программа в машинных командах. Интерпретатор непосредственно сам исполняет программу на ЯПВУ. Так, например, работает бейсик-система. Обычно в том и в другом случае исполнение программы начинается по команде RUN.

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

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

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

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

Для СП данными являются файлы с  текстами программ, с исходной и  конечной информацией, связанной с  решаемой задачей.

    1. Требования к знаниям и умениям учащихся по линии алгоритмизации и программирования

Учащиеся  должны знать:

      • Что такое алгоритм; какова роль алгоритма в системах управления;
      • Выем состоят основные свойства алгоритма;
      • Способы записи алгоритмов: блок-схемы, учебный алгоритмический язык;
      • Основные алгоритмические конструкции: следование, ветвление, цикл; структуры алгоритмов;
      • Назначение вспомогательных алгоритмов; технологии построения сложных алгоритмов: метод последовательной детализации и сборочный (библиотечный) метод;
      • Основные свойства величин в алгоритмах обработки информации: что такое имя, тип значение величины; смысл присваивания; назначение языков программирования;
      • В чем различие между языками программирования высокого уровня и машинно-ориентированными языками;
      • Правила представления данных на одном из языков программирования, цикла,  ветвления;
      • Правила записи программы;
      • Что такое трансляция;
      • Назначение систем программирования;
      • Содержание этапов разработки программы: алгоритмизация-кодирование – отладка- тестирование.

 

Учащиеся  должны уметь:

      • Пользоваться языком блок-схем, понимать описания алгоритмов на учебном алгоритмическом языке;
      • Выполнять трассировку алгоритма для известного исполнителя;
      • Составлять несложные линейные, ветвящиеся и циклические алгоритмы управления одним из учебных исполнителей;
      • Выделять подзадачи; определять и использовать вспомогательные алгоритмы;
      • Составлять несложные программы решения вычислительных задач с целыми числами;
      • Программировать простой диалог; работать в среде одной из систем программирования (например, Турбо Паскаль);
      • Осуществлять отладку и тестирование программы.
  1. ТЕХНОЛОГИЯ ИЗУЧЕНИЯ ПРОГРАММИРОВАНИЯ.

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

Затем рассматриваются блок - схемы, составленные учениками, которые описывают различные ситуации, имеющие место в реальной жизни. В этих блок – схемах выделяются три основные структуры: последовательного выполнения действий, выбора действия по условию и повторения одинаковых действий. Ребята на рассмотренных примерах убеждаются в том, что любые действия, как практические, так и мыслительные, можно описать с помощью различных сочетаний трех основных структур.

Далее сообщается, что эти же три  структуры были положены в основу построения компьютера и любого языка программирования.

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

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

Описанная работа происходит на мастерской « Я и компьютер». Мастерская - основной вид организации учебной  деятельности в рамках нового образования, который может рассматриваться  как многоуровневый диалог при переходе от авторитарной парадигмы образования к гуманитарной. Ребята на мастерской работают как индивидуально, так в парах и крупах. Приоритет по воздействию на личностные структуры учеников на мастерской отдается развитию творческих способностей,  вокруг этого разворачивается, все действие мастерской Роль учителя состоит в выстраивании последовательности заданий, выполнение которых направлено на погружение ребят в процесс поиска, познания и самопознания. На этом «руководящая» роль учителя заканчивается, и при проведении мастерской он находится «на равных» с учеником, следуя одному из основных принципов нового образования – принципу ценностно-смыслового равенства взрослого и ребенка. Учителям информатики известно, что среди всех операторов самыми трудными для понимания ребят являются операторы цикла. Наша практика показывает, что только после выполнения задания по описанию совей, какой-то лично значимой жизненной ситуации с помощью составления блок-схемы, включающей структуру повторения одинаковых действий вплоть до определенного момента (например, жду свой автобус на остановке), ученики сразу начинают понимать работу этих операторов.

По словам психолога  М. Мамардашвили, «мы понимаем лишь то, относительно чего можем сказать, как нам это дается». Описанный подход к объяснению работы основных операторов программирования отражает связь между предметами реального мира и частями компьютерной программы. Это  может способствовать развенчанию мифа о том, что программирование является узкоспециализированной областью человеческих знаний. По словам создателя Лого С. Пейперта, «как только суть программирования становится понятна, само оно перестает удивлять».

Описание какого-то явления, процесса, т.е. объекта, с помощью составления  блок – схемы – это представление данного объекта в виде совокупности элементов с нахождением отношений между ними. Речь здесь идет о структурировании (упорядочении) информации по основанию трех основных структур. Структурирование информации - приведение ее к определенному порядку для удобства восприятия и последующего использования. Так, например, разделение белья в шкафу по признаку его применения (постельное белье, нижнее белье и т.д.) и расположение его на разных полках помогают нам быстрее найти нужную вещь – это есть проявление здравого смысла, присущего каждому человеку. Почему жене обратиться к своему здравому смыслу при проведении не только каких-то практических, но и мыслительных действий - к систематизации (приведению в определенный порядок) информации  с помощью языка блок-схем? (Сравните информацию, представленную ниже в виде блок-схемы, со словесным описанием того же самого процесса.) Язык блок-схем похож на китайские идеограммы. Это язык образный. А образ для каждого наполнен личностным смыслом, соответствующим его ведущему канал восприятия, поэтому при таком способе передачи информации и гуманитарии, и логики, и математики находятся в равных условиях: «Компьютер обладает той силой, которая уничтожает разделение между двумя культурами: гуманитарными и естественными науками» (С. Пейперт).

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

Работа учеников организована в  рамках разработанной авторской  технологии индивидуально - коллективного  способа обучения, соответствующего творческой природе человека. Кроме двух мастерских «Я и компьютер» и «От задачи к программе», в которых участвуют все ученики единовременно, вся остальная деятельность рассматривается как сочетание индивидуальной работы ученика с учебным пособием (за компьютером) и его работы в диалоге с товарищами. Каждый волен, работать в присущем только ему темпе ритме и выходить на зачет только тогда, когда к этому готов,- никакого сбоя в общей работе всей группы при этом не произойдет благодаря разработанной технологии. Более того, если ученик отстал по болезни, он может, вернувшись в класс по выздоровлении, включаться в работу, продолжая изучение материала с того места, на котором остановился

Усвоение учебного материала, идет с соблюдением трех этапов развития интеллекта: узнавания, понимания, применения (см. блок-схему).


 



Нет



Да



 


Нет



Да




Нет



Да





 

 

 

 

 

 

 

Рассмотрим более подробно все три этапа.

Узнавание.

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

Понимание.

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

Применение.

В учебном пособии представлены четыре однотипные задачи на применение конкретного оператора. Организуется пора или группа (не более 4 человек), причем желающие могут работать и индивидуально; каждый выбирает одну задачу и пишет по ее условию программу. На следующем этапе идет представление составленной программы членам своей группы. Если в группе есть слабый ученик, он может по аналогии с представленными,  написать и свою программу  (по условию доставшейся ему задачи). Ученик, который легко справился со своей задачей, написав по ее условию программу и запустив ее, остальные три программы может только записать в тетрадь, не запуская. На этом этапе идет подготовка к зачету по данному оператору. Зачет – это выполнение контрольной работы.

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