СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

ЭЛЕКТИВНЫЙ КУРС "Язык программирования GO"

Категория: Информатика

Нажмите, чтобы узнать подробности

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

    Изучая программирование на языке Go, учащиеся прочнее усваивают основы алгоритмизации и программирования на языке Pascal или Си (предполагается изучение в курсе информатики двух языков программирования: один в основном курсе информатики, другой в старшей школе, в качестве элективного курса), приобщаются к алгоритмической культуре, познают азы профессии программиста.

Просмотр содержимого документа
«ЭЛЕКТИВНЫЙ КУРС "Язык программирования GO"»

















«Тематическое планирование элективного курса

«ПРОГРАММИРУЕМ НА ЯЗЫКЕ Go»













Киселев Игорь Владимирович

Должность:

учитель информатики и ИКТ

Место работы:

ГБОУ СОШ №204 Центрального района Санкт-Петербурга



















2  мая  2019 г.



г. Санкт-Петербург

Российская Федерация


ВВЕДЕНИЕ

3

1.1.РОЛЬ КУРСА

15

1.2.ЦЕЛИ И ЗАДАЧИ КУРСА


1.3.ЛИЧНОСТНО-ОРИЕНТИРОВАННАЯ НАПРАВЛЕННОСТЬ КУРСА

16

1.4.КОНТРОЛЬ ЗНАНИЙ И УМЕНИЙ

16

1.5.ОРГАНИЗАЦИЯ УЧЕБНОГО ПРОЦЕССА

16

2.1.ПРОГРАММА ЭЛЕКТИВНОГО КУРСА

19

2.1.1. Первый год обучения (первый модуль)

19

2.1.2.Второй год обучения (второй модуль)

19

2.1.3.Минимально необходимый уровень знаний, умений и навыков учащихся, необходимых для успешного прохождения курса

19

2.2.ТЕМАТИЧЕСКОЕ ПЛАНИРОВАНИЕ

20

2.3.ПОУРОЧНОЕ ПЛАНИРОВАНИЕ

23

2.4.Требования к знаниям и умениям учащихся

после прохождения курса

26

ПРИЛОЖЕНИЯ

36

ВЫВОДЫ

39

Список использованной литературы

40






















ВВЕДЕНИЕ

Одной из самых революционных идей приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах 19 века Чарльзом Бебиджем мысль о предварительной записи порядка действия машины для последующей автоматической реализации вычислений - программе. И, хотя использованная Бебиджем запись программы на перфокартах, придуманная для управления такими станками французским изобретателем Жозефом Мари Жаккаром, технически не имеет ничего общего с современными приемами хранения программ в ПК, принцип здесь по существу один.

С этого момента начинается история программирования. Аду Левлейс, современницу Бебиджа, называют первым в мире программистом. Она теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются в программировании и сейчас. Ею же была описана и одна из важнейших конструкций практически любого современного языка программирования - цикл.

Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли (работал над созданием первого электронного компьютера общего назначения ЭНИАК для Армии США).

Система кодирования, предложенная им, вдохновила одну из его сотрудниц Грейс Хоппер. При работе на компьютере «Марк-1» ей и ее группе пришлось столкнуться со многими проблемами и все, что ими придумано, было впервые. В частности они придумали подпрограммы. И еще одно фундаментальное понятие техники программирования впервые ввели Хоппер и ее группа - «отладка».

В конце 40-х годов Дж. Моучли создал систему под названием «Short Code», которая являлась примитивным языком программирования высокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработанная Дж. Моучли, считается одним из первых примитивных интерпретаторов.

Уже в 1951 г. Г. Хоппер создала первый в мире компилятор и ею же был введен сам этот термин. Компилятор Г. Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки - это называется компиляцией» - так она объясняла происхождение введенного ею термина.

В 1954 году группа под руководством Г. Хоппер разработала систему, включающую язык программирования и компилятор, которая в дальнейшем получила название Math-Matic. После удачного завершения работ по созданию Math-Matic Хоппер и ее группа принялись за разработку нового языка и компилятора, который позволил бы пользователями программировать на языке, близком к обычному английскому. В 1958 г. появился компилятор Flow-Matic. Компилятор Flow-Matic был первым языком для задач обработки коммерческих данных.

Разработки в этом направлении привели к созданию языка Кобол (COBOL - Common Business Oriented Language). Он был создан в 1960 году. В этом языке по сравнению с Фортраном и Алголом, слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа. Он задумывался как основной язык для массовой обработки данных в сферах управления и бизнеса.

Середина 50-х годов характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных командах стала уменьшаться. Стали появляться языки программирования нового типа, выступающие в роли посредника между машинами и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, от FORmula TRANslator - переводчик формул), разработанный группой программистов фирмы IBM в 1954 году (первая версия). Этот язык был ориентирован на научно-технические расчеты математического характера и является классическим языком программирования при решении на ПК математических и инженерных задач.

Для первых языков программирования высокого уровня предметная ориентация языков была характерной чертой. Особое место среди языков программирования занимает Алгол, первая версия которого появилась в 1958 году. Одним из разработчиков Алгола был «отец» Фортрана Джон Бэкус. Название языка ALGOrithmic Language подчеркивает то обстоятельство, что он предназначен для записи алгоритмов. Благодаря четкой логической структуре Алгол стал стандартным средством записи алгоритмов в научной и технической литературе.

В середине 60-х годов Томас Курц и Джон Камени (сотрудники математического факультета Дартмунтского колледжа) создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали «универсальным символическим кодом для начинающих» (Beginner All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC). Годом рождения нового языка можно считать 1964. Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую популярность и получил широкое распространение среди пользователей ПК различных категорий во всем мире. В значительно мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 70-х годов. Однако Бейсик неструктурный язык, и поэтому он плохо подходит для обучения качественному программированию. Справедливости ради следует заметить, что последние версии Бейсика для ПК (например, QBasic, Visual Basic и др.) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Паскаль.

Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к конкретной архитектуре ПК, реализовывали личные вкусы и идеи. В 60-е годы были предприняты попытки преодолеть эту «разноголосицу» путем создания универсального языка программирования. Первым детищем этого направления стал PL/1 (Programm Language One), разработанный фирмой IBM в 1967 году. Этот язык претендовал на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако он оказался слишком сложным, транслятор с него - недостаточно оптимальным и содержал ряд невыявленных ошибок.

Однако линия на универсализацию языков была поддержана. Старые языки были модернизированы в универсальные варианты: Алгол-68 (1968 г.), Фортран-77. Предполагалось, что подобные языки будут развиваться и усовершенствоваться, станут вытеснять все остальные. Однако ни одна из этих попыток не увенчалась успехом.

Язык ЛИСП появился в 1965 году. Основным в нем служит понятие рекурсивно определенных функций. Поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП по сути является универсальным языком. С его помощью ПК может моделировать достаточно сложные процессы, в частности - интеллектуальную деятельность людей.

Пролог разработан во Франции в 1972 году для решения проблем «искусственного интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ПК давать ответы на заданные вопросы.

Значительным событием в истории языков программирования стало создание в 1971 году языка Паскаль. Его автор - швейцарский ученый Никлаус Вирт. Вирт назвал его в честь великого французского математика и религиозного философа XVII века Блеза Паскаля, который изобрел первое суммирующее устройство, именно поэтому новому языку было присвоено его имя. Этот язык первоначально разрабатывался как учебный язык структурного программирования, и, действительно, сейчас он является одним из основных языков обучения программированию в школах и вузах.

В 1975 году два события стали вехами в истории программирования - Пол Аллен и Билл Гейтс заявили о себе, разработав свою версию Бейсика для микрокомпьютера Альтаир 8800, а Никлаус Вирт и Кетлин Йенсен выпустили классическое описание языка «Pascal User Manual and Report».

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

Фирма Borland/Inprise завершила линию продуктов Турбо Паскаль и перешла к выпуску системы визуальной разработки для Windows - Delphi. В настоящее время компания Embarcadero Technologies, выкупившая у Borland программные продукты, успешно совершенствует линейку продуктов RAD Studio (Delphi, C++Builder).

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

Период с конца 60-х до начала 80-х годов характеризуется бурным ростом числа различных языков программирования, сопровождавшим кризис программного обеспечения. В январе 1975 года Пентагон решил навести порядок в хаосе трансляторов и учредил комитет, которому было предписано разработать один универсальный язык. В мае 1979 года был объявлен победитель - группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили Ада, в честь Огасты Ады Левлейс. Этот язык предназначался для создания и длительного (многолетнего) сопровождения больших программных систем, допускает возможность параллельной обработки, управления процессами в реальном времени.

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

Существует большое количество классификаций языков программирования по различным признакам. Наиболее распространенными являются следующие классификации:

  • языки программирования высокого (Паскаль, Бейсик) и низкого уровня (Ассемблер);

  • строго типизированные (Паскаль) и нестрого типизированные (Бейсик);

  • с поддержкой объектно-ориентированного программирования (Си++) и без и т. д.


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

1) Машинно-ориентированные языки:

  • машинные языки;

  • языки символического кодирования;

  • автокоды;

  • макрос.

2) Машинно-независимые языки:

  • проблемно-ориентированные языки;

  • универсальные языки;

  • диалоговые языки;

  • непроцедурные языки.

Машинно-ориентированные языки

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

  • высокое качество создаваемых программ (компактность и скорость выполнения);

  • возможность использования конкретных аппаратных ресурсов;

  • предсказуемость объектного кода и заказов памяти;

  • для составления эффективных программ необходимо знать систему команд и особенности функционирования данного ПК;

  • трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;

  • низкая скорость программирования;

  • невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы.


Машинный язык


Отдельный компьютер имеет свой определенный машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. В команде сообщается информация о местонахождении операндов и типе выполняемой операции.

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


Языки Символического Кодирования


Языки Символического Кодирования (далее ЯСК), так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ.

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


Автокоды


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

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

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

Обе указанных системы используют трансляторы с ЯСК и набор макрокоманд, которые также являются операторами автокода.

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


Макрос


Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму называется макрос (средство замены).

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

Макрос одинаково может работать, как с программами, так и с данными.


Машинно-независимые языки


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

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

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


Проблемно-ориентированные языки


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

Проблемных языков очень много, например:

  • Фортран, Алгол - языки, созданные для решения математических задач;

  • Simula, Слэнг - для моделирования;

  • Лисп, Снобол - для работы со списочными структурами.



Универсальные языки


Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т. д. Первый универсальный язык был разработан фирмой IBM, названный в последствии PL/1. Второй по мощности универсальный язык называется Алгол-68.


Диалоговые языки


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

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

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

Одним из примеров диалоговых языков является Бейсик.


Непроцедурные языки


Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами.

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

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

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


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


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

Если вы просто хотите быстро выучить язык, этот раздел является для вас необязательным, но для глубокого понимания Go имеет смысл ознакомиться с его происхождением.

На рисунке ниже показано, какие языки повлияли на дизайн языка программирования Go.


Язык Go часто описывают как “C-подобный язык” или "язык С XXI века”. От языка С, Go унаследовал синтаксис выражений, конструкции управления потоком, базовые типы данных, передачу параметров в функции по значению, понятие указателей и, что важнее всего, направленность С на получение при компиляции эффективного машинного кода и естественное взаимодействие с абстракциями современных операционных систем.

Однако в генеалогическом древе Go есть и другие предки. Одно из сильнейших влияний на Go оказали языки программирования Никлауса Вирта, начиная с Pascal. Modula-2 привнесла концепцию пакетов. Oberon использует один файл для определения модуля и его реализации. Oberon-2 явился источником синтаксиса пакетов, импорта и объявлений (прежде всего, объявлений методов), которые он, в свою очередь, унаследовал от языка Object Oberon.

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

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

Основные преимущества языка Go:

  • разработчики имели четкую цель в отношении дизайна языка;

  • мультипарадигменность (императивный, функциональный, объектно-ориентированный);

  • синтаксическая легкость;

  • средства языка, которых нет у конкурентов: горутины, интерфейсы, defer (механизм отложенного вызова);

  • утилиты, которых нет у конкурентов: быстрый компилятор, gofmt (который теперь пытаются скопировать в сообществах других языков), go build (отсутствие необходимости во внешнем описании или Makefile);

  • мощная стандартная библиотека;

  • цельная реализация;

  • отличная документация и онлайн-средства ;

  • отсутствие корпоративного маркетинга.

Элективный курс «программируем на языке Go» является предметом по выбору для учащихся 10 и 11 классов старшей профильной школы. Курс рассчитан на 102 часа, которые проводятся в течение двух учебных лет: 10 класс по 2 часа в неделю, 11 класс – I полугодие по 2 часа в неделю.


























1.1.РОЛЬ КУРСА

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

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

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

Изучая программирование на языке Go, учащиеся прочнее усваивают основы алгоритмизации и программирования на языке Pascal или Си (предполагается изучение в курсе информатики двух языков программирования: один в основном курсе информатики, другой в старшей школе, в качестве элективного курса), приобщаются к алгоритмической культуре, познают азы профессии программиста.

Элективный курс «программируем на языке Go» является предметом по выбору для учащихся 10 и 11 классов старшей профильной школы. Курс рассчитан на 102 часа, которые проводятся в течение двух учебных лет: 10 класс по 2 часа в неделю, 11 класс – I полугодие по 2 часа в неделю.

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

Усвоив материал курса, учащиеся могут применять свои знания в изучении объектно-ориентированного программирования.

1.2.ЦЕЛИ И ЗАДАЧИ КУРСА

  • Формирование интереса к изучению профессии, связанной с программированием.

  • Формирование алгоритмической культуры.

  • Дать ученику возможность реализовать свой интерес к выбранному курсу.

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

  • Приобретение знаний и навыков алгоритмизации учащимися в ее структурном варианте.

  • Освоение всевозможных методов решения задач, реализуемых на языке Go.

  • Развитие алгоритмического мышления учащихся.

  • Формирование навыков грамотной разработки программ.

  • Углубление знаний, умений и навыков решения задач по программированию и алгоритмизации.

1.3.ЛИЧНОСТНО-ОРИЕНТИРОВАННАЯ НАПРАВЛЕННОСТЬ КУРСА

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

1.4.КОНТРОЛЬ ЗНАНИЙ И УМЕНИЙ

Текущий контроль уровня усвоения материала осуществляется по результатам выполнения учащимися практикумов по каждому разделу курса. В течение изучения курса предполагается написание двух курсовых работ. Итоговый контроль реализуется в форме итогового практикума. Знания теоретического материала проверяются с помощью тестовых заданий.

1.5.ОРГАНИЗАЦИЯ УЧЕБНОГО ПРОЦЕССА

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

  • урочная форма, в которой учитель объясняет новый материал (лекции), консультирует учащихся в процессе решения задач, учащиеся сдают зачеты по теоретическому материалу и защищают практикумы по решению задач, курсовые проекты;

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

Лекции. Представление учебного материала учащимся проводится в форме лекций. Каждая лекция – дидактическая единица, требующая примерно одинакового времени на изложение теоретического материала (по 2 часа). Для лучшего восприятия материала - лекции сопровождаются демонстрацией презентаций.

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

  • Каждому ученику подбираются индивидуальные задачи (как правило, для тематического 2-3, для итогового до 10).

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

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

  • Задачи для каждого ученика посильные, т.е. он заведомо уверен в своем успехе.

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

Курсовая работа. Данный вид работы проводится один раз в год, итого за два года обучения на курсе – 2 работы. Цель курсовой работы – развитие самостоятельного, проектного мышления учащихся, подготовка их к обучению в высшем учебном заведении. Учащимся предлагаются темы курсовых работ (задачи) они должны выполнить работу, которая будет содержать следующие разделы:

  • Название программы, сведения об авторе программы.

  • Формулировка решаемой задачи. Метод решения задачи. Принятые обозначения.

  • Описание алгоритма (в виде блок – схемы). Пояснения к алгоритму.

  • Текст программы.

  • Контрольный пример (проверка работы программы, тестирование программы).

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


2.1.ПРОГРАММА ЭЛЕКТИВНОГО КУРСА

2.1.1. Первый год обучения (первый модуль)

  • Введение в Go. Данные. Типы данных

  • Алгоритмы линейной структуры
  • Алгоритмы разветвляющейся структуры

  • Перечислимый и интервальный типы данных

  • Циклы

  • Подпрограммы

  • Массивы

2.1.2.Второй год обучения (второй модуль)

  • Записи

  • Строки

  • Множества

  • Файлы

2.1.3.Минимально необходимый уровень знаний, умений и навыков учащихся, необходимых для успешного прохождения курса

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

КУМИР или подобной (Free Pascal, ABC Pascal, Free BASIC, C/C++/C# и т.п.).

  • Базовые алгоритмические структуры.

  • Запись алгоритма в виде блок-схем.

  • Базовые знания о объектно – ориентированном программировании.













2.2.ТЕМАТИЧЕСКОЕ ПЛАНИРОВАНИЕ

Тема

Часы

Первый год обучения

Введение в Go. Данные. Типы данных – 6 часов

1-2

Введение в Go. Структура программы на языке Go. Рекомендации по стилю записи программы, использование комментариев. Алфавит языка.

2

3-4

Типы данных: целый и вещественный, логический и символьный. Константы. Переменные.

2

5

Организация ввода-вывода. Оператор присваивания.

1

6

Зачетный урок

1

Алгоритмы линейной структуры – 8 часов

7-8

Арифметические выражения. Стандартные функции. Правила записи арифметических выражений. Операции. Операнды. Следование.

2

9-12

Практикум по решению задач №1

4

13

Обобщающий урок по теме «Алгоритмы линейной структуры»

1

14

Зачетный урок

1

Алгоритмы разветвляющейся структуры – 10 часов
15-16

Организация ветвлений в программах. Основные понятия математической логики. Условный оператор. Оператор безусловного перехода.

2

17-22

Практикум по решению задач №1 6

23

Обобщающий урок по теме «Алгоритмы разветвляющейся структуры» 1

24

Зачетный урок

1

Перечислимый и интервальный типы данных – 6 часов

25

Перечислимые и ограниченные типы данных. Оператор выбора case.

1

26-28

Практикум по решению задач №2

3

29

Обобщающий урок по теме «Перечислимый и интервальный типы данных»

1

30

Зачетный урок

1

Циклы – 10 часов

31-32

Программирование циклических алгоритмов, виды циклов. Операторы организации циклов. Вложенные циклы.

2

33-38

Практикум по решению задач №2 6

39

Обобщающий урок по теме «Циклы» 1

40

Зачетный урок

1
Подпрограммы – 8 часов

41-43

Процедуры. Функции. Рекурсии. Процедуры и функции пользователя.

3

44-46

Практикум по решению задач №7

3

47

Обобщающий урок по теме «Подпрограммы»

1

48

Зачетный урок 1

Массивы – 16 часов

49-51

Одномерные массивы: описание и задание элементов, действия над ними. Поиск, замена в одномерном массиве. Сортировка массива. Способы сортировки.

3

52-55

Практикум по решению задач №3

4

56-57

Понятие двумерного массива. Действия над элементами массива. Обработка элементов двумерных массивов. Квадратная матрица. Транспонирование матрицы.

2

58-62

Практикум по решению задач №4

5

63

Обобщающий урок по теме «Массивы»

1

64

Зачетный урок 1

65-66

Курсовая работа №1. 2

67-68

Экзамен. 2


Итого по 1-му году обучения

68

Второй год обучения. Второй модуль.

Повторение изученного в первом модуле – 2 часа

Записи – 6 часов

1-2

Комбинированный тип - записи. Оператор присоединения. Сортировка записи.

2

3-4

Практикум по решению задач №5

2

5

Обобщающий урок по теме «Записи»

1

6

Зачетный урок 1
Строки – 8 часов

9-10

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

2

11-14

Практикум по решению задач №6

4

15

Обобщающий урок по теме «Строки»

1

16

Зачетный урок 1

Множества – 8 часов

17-18

Понятие множества. Использование множеств при обработке текстов и массивов.

2

19-22

Практикум по решению задач

4

23

Обобщающий урок по теме «Множества»

1

24

Зачетный урок 1
Файлы – 8 часов

25-26

Файловые типы. Процедуры и функции работы с файлами

2

27-30

Практикум по решению задач №8

4

31

Обобщающий урок по теме «Файлы» 1

32

Зачетный класс 1

33-34

Курсовая работа. Экзамен 2


Итого по 2-му году обучения

34


Итого

102























2.3.ПОУРОЧНОЕ ПЛАНИРОВАНИЕ

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

Рассмотрим поурочное планирование на примере главы «Алгоритмы линейной структуры».

Занятие 7-8

Тема. Арифметические выражения. Стандартные функции библиотеки math. Правила записи арифметических выражений. Операции. Операнды. Следование.

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

Содержание. Форма изложения материала лекционная. Рассматривается материал, содержащий понятия: операция, операнд, функция, знак операции, тип выражения. Вводятся арифметические операции. На примерах отрабатывается правило конструирования арифметических выражений с использованием стандартных функций (Определенные в подключаемой стандартной библиотеке math). Рассматриваются задачи линейной структуры.



План проведения занятия.

  • Лекция по данной теме. Лекция сопровождается презентацией. Учащиеся записывают основные понятия, которые отображены в презентации.

  • Подведение итогов. На этом этапе учащиеся отвечают на поставленные вопросы по ходу лекции.

  • Домашнее задание: повторить основные понятия; знать правила записи арифметических выражений; составить по пять арифметических выражений и выписать все входящие в них операнды, операции.

Занятие 9-12

Тема. Практикум по решению задач №1

Цели. Формирование умений и навыков программирования, используя алгоритмы линейной структуры.

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

План проведения занятий (все практикумы поводятся по одному плану).

  1. Индивидуальное решение задач каждым учащимся.

  2. Консультирование учителя по возникшим вопросам.

Занятие 13

Тема. Обобщающий урок по теме «Алгоритмы линейной структуры»

Цели. Воедино собрать знания, полученные при изучении темы «Алгоритмы линейной структуры», установить логические связи и закономерности между изученными определениями, понятиями, правилами. Обобщить практические навыки и умения по данной теме.

Содержание. Все основные понятия, определения, правила, вводимые на первом занятии данной теме.

План проведения занятия.

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

  2. Подведение итогов

  3. Домашнее задание: подготовиться к зачетному классу по данной теме.

Занятие 14

Тема. Зачетный класс по теме «Алгоритмы линейной структуры»

Цели. Проконтролировать знания, умения и навыки по данной теме.

Содержание. Арифметические выражения. Стандартные функции. Правила записи арифметических выражений. Операции. Операнды. Следование.

План проведения занятия.

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

  1. Тест

  2. Контрольное задание (задача, содержащая базовую структуру следование)





























2.4.Требования к знаниям и умениям учащихся

после прохождения курса

Тема «Введение в Go»

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

Место языка Go среди современных языков программирования высокого уровня. Структуру программы на языке Go. Читать синтаксические диаграммы и сопоставлять их с реальными текстами на языке Go. Структуру модулей в Go. Пользоваться готовыми модулями и разбираться в их структуре, назначении отдельных разделов. Пользоваться стандартным модулем fmt и math.

Тема «Данные. Типы данных. Выражения. Операнды. Операции»

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

Что такое величина и чем она характеризуется. Что такое операция, операнд и их характеристики; в чем принципиальные отличия величин структурированных и не структурированных; о таких структурах данных, как множество, запись, файл, стек, очередь, строка. Что может входить в состав арифметического выражения; перечень математических функций, входящих в стандартную математическую библиотеку Go. О логических выражениях и входящих в них операндах, операциях и функциях. Записывать примеры арифметических и логических выражений всех атрибутов, которые могут в них входить.

Тема «Операторы»

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

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

Тема «Перечислимый и интервальный типы данных»

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

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

Тема «Процедуры и функции»

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

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

Тема «Структурированные типы данных»

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

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

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

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

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

const pi = 3.14159 // Лучшим приближением является math.Pi

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

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

Вопрос. Как вы думаете, может ли быть верным данное высказывание а=а+1?

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

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

Задача 1.

Объявите переменные, необходимые для вычисления значения функции у=х2.

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

Задача 2. Объявите данные, необходимы для вычисления площади круга.

Анализ задачи. Запишем формулу для вычисления площади круга: s=. Сколько переменных входят в данное выражение? Есть ли еще данные, кроме переменных, входящих в данную формулу? Чем является число - переменной или константой? Какое значение имеет переменная r? Какое значение имеет переменная s? Запишем инструкцию объявления данных.

package main

import (

"fmt"

)

func main() {

pi := 3.14 // Число Пи

r := 5.0 // Радиус R=5 см.

s := 0.0 // Площадь

s = 2 * pi * r * r

fmt.Println("Площадь круга, радиусом ", r, " равна ", s)

}

  1. Подведение итогов урока

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

Ответьте, пожалуйста, на вопросы:

  • Какие данные различают в языке Go?

  • На какие две основные группы можно разделить эти данные?

  • Посмотрите на схему и назовите основные типы данных. (Язык Go поддерживает также автоматический вывод типов. Переменная может быть инициализирована при объявлении, её тип при этом можно не указывать — типом переменной становится тип присваиваемого ей выражения. Для литералов (чисел, символов, строк) стандарт языка определяет конкретные встроенные типы, к которым относится каждое такое значение.).

  • Почему важно правильно определить тип данных при составлении программы? Приведите свой пример.

  • Как выглядят инструкции объявления переменных?

(Ответ:

Синтаксис объявления типа, в основном, решён в стиле Паскаля.

var v1 int

var v2 string

var v3 [10]int

var v4 []int

var v5 struct { f int }

var v6 *int

var v7 map[string]int

var v8 func(a int) int

При объявлении переменные инициализируются на нулевое значение для данного типа (0 для int, пустая строка для string, nil для указателей).

)

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

    2. Как обьявляются аргументы функций?

(Ответ:

-Аргументы объявляются таким образом:

func f(i, j, k int, s, t string) string { }

-Функции могут возвращать несколько значений

типы таких значений заключаются в скобки:

func f(a, b int) (int, string) {

return a+b, "сложение"

}

-Результаты функций также могут быть именованы:

func incTwo(a, b int) (c, d int) {

c = a+1

d = b+1

return

}

)

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

    1. Знать материал лекции.

    2. Приготовить таблицы диапазонов целых и вещественных чисел.

    3. Знать зарезервированные слова для скалярного типа данных.

    4. Задачи (по карточкам).

Карточка для домашнего задания.

  • Объявите переменные, необходимые для вычисления площади кольца.

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

  • Напишите функцию возведения в квадрат.

package main

import (

"fmt"

)

func sqr(a int) int {

return a * a

}

func main() {

k := 2

fmt.Println(k, " в квадрате равно ", sqr(k))

}


  1. Работа в группах.

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

Задача для первой группы:

Сформировать список студентов, состоящий из №, фамилии, оценки за три экзамена, общий балл за все экзамены, сумму начисленной стипендии, подоходный налог, итоговой суммы. Если бал за экзамены равен 15, то сумма начисленной стипендии рана 75, если бал за экзамены меньше 15, но больше 12, то сумма начисленной стипендии равна 62.5, если бал за экзамены меньше 12, но больше 9, то сумма начисленной стипендии равна 50, иначе сумма начисленной стипендии равна 0. Налог равен 1% от начисленной суммы. Сумма к выдаче равна начисленная сумма минус налог. Отсортировать данный список в алфавитном порядке.

Задача для второй группы:

Известно расписание поездов, проходящих через станцию: номер поезда, назначение (например «Москва-Омск»), часы и минуты прибытия, часы и минуты отправления. Значение часов и минут целые величины; число часов не превышает 23, число минут – 59. Общее число проходящих поездов равно 10. Поезда приходят каждый день. Отсортировать данный список по полю «номер поезда». По данному времени, определить, какие поезда (номер и назначение) стоят в этот момент на станции.

Задача для третей группы:

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

  1. Защита программ, обсуждение.

Учащиеся каждой группы на этом этапе представляют решение своих задач. Представление лучше всего показать на проекторе, чтобы все учащиеся могли хорошо видеть программу. Цель каждого ученика: внимательно прослушать предложенное решение, вникнуть в его; задавать вопросы друг другу; оценивать «соперников»; предлагать свои варианты решения. При подведении итогов занятия будет учитываться участие каждого учащегося в дискуссии. Учитель может составлять рейтинг по ходу дискуссии:

    • кто чаще всего задавал вопросы?

    • кто дал больше всех правильных ответов?

    • чьи вопросы и ответы были более интересными и др.?

  1. Подведение итогов. Рефлексия.

Учащиеся высказывают свое мнение по предложенным учителем вопросам:

  1. Какие трудности возникли у вас при решении задач по данной теме?

  2. Что у вас получалось хорошо? На что еще нужно обратить внимание дома, чтобы выполнить зачетный класс?

  3. Оцените каждый свою деятельность. (Предлагается оценочный лист).

  4. Оцените деятельность других. (Предлагается оценочный лист).

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

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

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

  1. Повторить материал по теме занятия, подготовиться к зачетному классу (зачетный класс, как всегда, состоит из теста, защиты задач практикума, решения контрольной задачи).

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

Оценочный лист «Оцени свою деятельность на уроке»

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

Название задания

Оценка

(в баллах)

Пояснение к оценке

(почему я поставил именно такую оценку)

Разминка. Тест.



Разминка. Конструирование таблицы.



Работа в группе



Научное собрание



ИТОГ



Оценочный лист «Оцени деятельность коллег по группе на уроке»

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

Задания




Список

Группы


Разминка. Кроссворд.

Разминка. Работа с фрагментами программ.

Разминка. Найти ошибки в программах

Работа в группе

Научное собрание

ИТОГОВАЯ ОЦЕНКА

Пояснение к оценке

(почему я поставил именно такую

оценку)


















ПРИМЕР ЗАНЯТИЕ 3.

Тема урока: Массивы.

Тип урока: урок контроля знаний и умений учащихся

Форма проведения: зачетный класс.

Продолжительность урока: 45 минут

Цели урока:

  • проконтролировать знания, умения и навыки учащихся по теме: «Массивы»;

  • стимулирование интереса учащихся к программированию;

  • воспитание у учащихся самостоятельности;

  • развитие: алгоритмического мышления; умения применять полученные знания при решении задач;

  • развитие коммуникативных навыков: умение представлять свою работу, отстаивать свою точку зрения (решение).

План урока:

  1. Организационный момент – 1 минуты.

  2. Работа с тестом – 5 минут.

  3. Защита практикума – 35 минут.

  4. Решение контрольной задачи (параллельно с защитой практикума) – 35 минут.

  5. Подведение итогов. Рефлексия – 2 минут.

  6. Домашнее задание – 1 минута.

    1. Решение контрольной задачи.

Учащимся предлагается решить по одной контрольной задаче. Всего два варианта. Проверку задач учитель осуществляет не во время занятия.

Задача для первого варианта. Поменять второй столбец матрицы с предпоследним.

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

Защита практикума

Каждый учащийся представляет решение задач, которые им предлагалось решить в ходе практикума по темам: «Одномерные массивы» и «Двумерные массивы».

Пример: подробно проанализировать работу программ:

  • Заполнение одномерного массива случайными числами и вывод содержимого на экран:

package main

import (

"fmt"

"math/rand"

)

func main() {

var n [10]int /* n is an array of 10 integers */

var i, j int

/* инициализация элементов массива n */

for i = 0; i i++ {

n[i] = rand.Intn(250) // заполнение случайными числами

}

/* вывод элементов массива */

for j = 0; j

fmt.Printf("n[%d] = %d\n", j, n[j])

}

}

  • Инициализация и обработка массивов:

package main

import "fmt"

func main() {

var a [5]int

fmt.Println("emp:", a)

a[4] = 100

fmt.Println("set:", a)

fmt.Println("get:", a[4])

fmt.Println("len:", len(a))

b := [5]int{1, 2, 3, 4, 5}

fmt.Println("dcl:", b)

var twoD [2][3]int

for i := 0; i

for j := 0; j

twoD[i][j] = i + j

}

}

fmt.Println("2d: ", twoD)

}

План защиты:

    1. Представление программы (возможен выбор задачи учителем, т.е. учитель сам предлагает представить одну из двух задач или обе задачи).

    2. Тестирование программы.

    3. Ответ на вопросы учителя.



3.ПРИЛОЖЕНИЯ

Краткий справочник по языку Go

1.Типы данных

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

package main

import "fmt"

func main() {

//Строки можно объединять с помощью +.

fmt.Println("go" + "lang")

//Целые числа и числа с плавающей запятой.

fmt.Println("1+1 =", 1+1)

fmt.Println("7.0/3.0 =", 7.0/3.0)

//Булев тип, с логическими операторами true или false.

fmt.Println(true && false)

fmt.Println(true || false)

fmt.Println(!true)

}

2.Переменные

package main

import "fmt"

func main() {

//var объявляет 1 или более переменных.

var a string = "initial"

fmt.Println(a)

//Вы можете объявить несколько переменных за раз.

var b, c int = 1, 2

fmt.Println(b, c)

//Go определит тип инициализированных переменных автоматически.

var d = true

fmt.Println(d)

//Не инициализированные переменные имеют нулевое значение. Например нулевое //значение для int это 0.

var e int

fmt.Println(e)

//Синтаксис := это сокращение для объявления и инициализации переменной, например в этом примере var f string = "short".

f := "short"

fmt.Println(f)

}

3.Конструкция для циклов в Go. Есть 3 базовых типа цикла for.

package main

import "fmt"

func main() {

//Самый базовый тип, с единственным условием.

i := 1

for i

fmt.Println(i)

i = i + 1

}

//Классический цикл оператора for начальное значение/условие/постусловие.

for j := 7; j

fmt.Println(j)

}

//for без условия будет работать до тех пор, пока вы не примените break или return внутри функции.

for {

fmt.Println("loop")

break

}

}

4.Ветвление с if и else в Go

package main

import "fmt"

func main() {

if 7%2 == 0 {

fmt.Println("7 четное число")

} else {

fmt.Println("7 нечетное число")

}

if 8%4 == 0 {

fmt.Println("8 делится на 4")

}

if num := 9; num

fmt.Println(num, "отрицательное число")

} else if num

fmt.Println(num, "состоит из 1 цифры")

} else {

fmt.Println(num, "состоит из нескольких цифр")

}

}

















































ВЫВОДЫ


Таким образом, Go - это язык программирования с открытым исходным кодом, с широкими возможностями и понятным синтаксисом, предназначенный для создания простого, быстрого, и надежного программного обеспечения.

Изучая программирование на языке Go, учащиеся прочнее усваивают основы алгоритмизации и программирования на языке Pascal или Си (предполагается изучение в курсе информатики двух языков программирования: один в основном курсе информатики, другой в старшей школе, в качестве элективного курса), приобщаются к алгоритмической культуре, познают азы профессии программиста.

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











































Список использованной литературы


  1. Донован А.,Керниган Б., Язык программирования Go., М. : ООО “И.Д. Вильямс”, 2016.

  2. Саммерфильд М., Программирование на Go. Разработка приложений XXI века:, М.: ДМК Пресс, 2013.

  3. Сулейманов Р., Компьютерное моделирование математических задач. Учебное пособие, М.: БИНОМ. Лаборатория знаний, 2012.

  4. Окулов С., Задачи по программированию, М.: БИНОМ. Лаборатория знаний, 2015.

  5. Окулов С., Программирование в алгоритмах, М.: БИНОМ. Лаборатория знаний, 2013.

  6. Окулов С., Абстрактные типы данных , М.: БИНОМ. Лаборатория знаний, 2015.

  7. Окулов С., Основы программирования , М.: БИНОМ. Лаборатория знаний, 2015.

  8. Тишин В., Информатика и математика. Часть 1. Решение задач комбинаторики и теории вероятностей , М.: БИНОМ. Лаборатория знаний, 2013.

  9. Тишин В., Информатика и математика. Часть 2. Решение уравнений , М.: БИНОМ. Лаборатория знаний, 2013.

  10. Тишин В., Информатика и математика. Часть 3. Решение задач обработки массивов , М.: БИНОМ. Лаборатория знаний, 2013.

  11. Тишин В., Дискретная математика в примерах и задачах , М.: БИНОМ. Лаборатория знаний, 2008.





Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!