Программирование в школе информатика примеры

Обновлено: 05.07.2024

Уроки по информатике в школе и вузе: какой язык программирования выбрать? Насколько глубоко его изучать и нужно ли вообще в школе изучать языки программирования? Есть мнение, что учащихся нужно знакомить с различными языками и различными стилями программирования. Видимо, наиболее подходящими учебными языками программирования сегодня являются Форт, Ruby, Python, Си, Паскаль и Java.

Содержание

Первым кодировки на бумаге придумал Паскаль. В одной строке умещалось от 0 до 255 символов. Первым языком электрического типа считается Планкакюль. Его изобретателем считается немец Конрад Цузе. Элементы ячейки располагались в две строки. В первой писались натуральные, а во второй аргументы. Один из четырех его компьютеров был частично из консервных банок. Использовалась двуличная система в одной ячейке. Один элемент заряжен положительно, а другой отрицательно. Мнения о том, какой язык лучше преподавать в школе, разнятся: от того, что программирование изучать не нужно, а следует просто поднимать компьютерную грамотность и осваивать офисные программы (как на Западе), до того, что нужно изучать операционные системы и несколько языков программирования различных уровней абстракции и с различными парадигмами. Это крайние случаи, но золотую середину найти непросто. В первую очередь, нам нужно определить цель. Научить школьников логически и алгоритмически мыслить? Познакомить с компьютерами на бытовом уровне, чтобы школьники умели пользоваться интернетом, электронной почтой и текстовыми редакторами? Заложить базовые знания, необходимые для будущих инженеров, математиков, физиков и специалистов по информационным технологиям? А может, нам нужно каждого школьника познакомить с программированием как явлением, чтобы он представлял потенциал компьютерных систем? Много ли школьников станет программистами? Немного. Но синусами и уравнениями Кирхгофа в жизни тоже пользуется не каждый. Безусловно, в науке о программировании есть фундаментальная составляющая, но определить её непросто. Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а методам программирования и системному подходу решения задач. Нужно развивать алгоритмическое мышление и на примерах знакомиться с принципами построения современных компьютерных систем.

Когда-то наиболее популярными языками программирования в школах мира были Бейсик и Паскаль. Бейсик всегда считался самым простым языком программирования, а Паскаль — самым подходящим языком для обучения программированию. Но теперь это не так. Да, Бейсик прост. Но он создавался во времена, когда человечество не имело никакого опыта создания компьютерных систем, и основан на устаревших и не оправдавших себя принципах. Собственно, никакой фундаментальной целостной идеи в основе Бейсика не лежит. Сегодня есть простые и при этом более наглядные и идейно замкнутые языки программирования, нежели Бейсик. Паскаль удобен в учебных целях; ведь именно для них он и создавался. Студенты быстро учатся решать с его помощью алгоритмические задачки. Но так получается, что изучать Паскаль полезно только для того, чтобы писать программы на Паскалe. А если нужно создать настоящий программный продукт, Паскаль оказывается неудобен. И студентам, знающим только Паскаль, приходится переучиваться, что часто сложнее, нежели изучить правильные языки и технологии с нуля. Часто слышишь от преподавателей школ и вузов:

Но есть и другие мнения:

Альтернатив много. Ныне есть целый зоопарк (экосистема) языков программирования, которые постоянно эволюционируют, расщепляются и сливаются. Это уже упомянутые выше языки Форт, Ruby и Python. Дерево эволюции видов языков программирования можно найти в Сети [1] [2]. Перечислим ключевые факторы, управляющие отбором:

Итак, Perl многогранен, Python прост, Python красив, Ruby тоже молодец, Java и Си технологичны. Номинаций много и явного победителя нет, так же как и нет одежды, которая одинаково хорошо подходит под летнюю, дождливую или зимнюю погоду. Температура и влажность — всего лишь два параметра, а в языках программирования их гораздо больше.

А что можно сказать про Паскаль и Бейсик?

Давайте вернёмся к нашему вопросу — какой язык программирования преподавать в школе?

Пути увеличения абстракции:

Здесь правильнее рисовать дерево зависимостей между языками. Не имеет смысл изучать и Python, и Ruby, ибо они похожи. Изучать их оба значит загружать учащихся двойным грузом технических деталей, и при этом одарить лишь одним стилем программирования (стилем мышления при проектировании программ). Также неправильно рассказывать студентам и про Си, и Паскаль. Время, потраченное на один из них будет просто потеряно зря. Но тем не менее, шаг от Паскаль к Си делали многие программисты, после чего Паскаль успешно ими забывался. Язык Java стоит рассказывать вместо языка Си++, так как Java более модульный и имеет явно выраженную объектную парадигму, да и намного проще в изучении. Не имеет смысла учить Lisp и Haskell одновременно, разве только студентам факультетов и групп, специализированных на функциональном программировании. А школьникам и студентам первого курса достаточно одного из них. Просто полезно получить представление о том, что бывают стили программирования, отличные от императивного. В этом смысле также полезен язык Prolog. Очень много педагогов соглашается, что рассказывать про один язык программирования так же нелепо, как учить повара готовить только одно блюдо (правда очень хорошо). Нет необходимости знакомить учащихся со всеми тонкостями и техническими подробностями языка программирования. Необходимые детали он сможет узнать сам, если его научат пользоваться документацией. Гораздо важнее познакомить учащегося с различными парадигмами программирования (чтобы наш повар знал о китайской, о русской кухне, и имел представления о всех этапах подготовки пищи — от выращивания овощей до сервировки). Но при этом есть опасность того, что наши поварята не смогут приготовить для себя ничего съедобного. Мнений очень много, и нельзя ничего здесь категорично заявлять.

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

Вот примерный список этих задач:

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

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

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

Проблема школьного обучения программированию

Методика И. Р. Дединского

Последовательность задач

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

Зачем нужен баннер (монолог вредного заказчика)

Далее следуют ответы заказчика на вопросы школьников, описание, что нужно изобразить и как и т.д. Тут-то дело и доходит до чертежа, размеров и сроков. Если игра происходит в Москве, то этот огромный баннер предлагается прилепить к стене небоскреба — так его будет издалека видно. В моем случае, за неимением небоскреба даже в проекте, пришлось прифантазировать аэростат, на котором реклама будет висеть над городом.

Кто же это сделает?

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

Кратко о дальнейшем обучении

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

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

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

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

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

Кратко опишем основные принципы объектно-ориентированного подхода в программировании.

Объектно-ориентированное программирование – это подход программирования, основанный на работе с объектом, его свойствами и методами, для работы с которыми используются принципы полиморфизма, наследования и инкапсуляции [1]. Объектно-ориентированный подход программирования может реализовываться не только в визуально-ориентированных языках программирования, но и в процедурных языках программирования, например в Object Pascal.

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

В основе объектно-ориентированного программирования лежат следующие понятия: инкапсуляция, наследование и полиморфизм [2].

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

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

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

Экспериментальное исследование заключалось в следующем:

- разработать систему уроков изучения ООП;

- проверить эффективность разработанных учебных материалов;

- провести анкетирование учащихся.

Эксперимент проводился в 10 классе МБОУ Озерненская СОШ № 1 Смоленской области. Экспериментальная группа состояла из 21 ученика.

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

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

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

Сравнительный анализ знаний учащихся

Таким образом, можно сделать вывод, что на уроках информатики в школе можно изучить основные методы ООП с использованием методов структурного программирования на примере Visual Basic.

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

Анкета включала следующие вопросы:

  1. Какие языки программирования ты изучал?
  2. Какой из них тебе больше всего понравился?
  3. До изучения объектно-ориентированного программирования ты что-нибудь слышал о языке программирования Visual Basic?
  4. В каком языке программирования легче работать, в процедурном или объектно-ориентированном языке? Почему?
  5. Хотелось бы тебе изучить объектно-ориентированный язык программирования Visual Basic более подробно? Почему?
  6. Стал ли ты лучше разбираться в программировании после изучения объектно-ориентированного программирования?

В результате анализа данных анкетирования можно сделать следующие выводы.

Ученики знакомы с очень малым количеством языков программирования. Это – Gambas, Visual Basic и Free Pascal. Все учащиеся 10 класса знакомы с языком программирования Gambas (редактор текстового процессора Open Office Writer). 8 человек знакомы с языком программирования Visual Basic. Эти два языка предлагаются для изучения программирования в учебнике по информатике Н.Д. Угриновича. Язык Free Pascal отметили ученики, которые изучали его на дополнительных занятиях по информатике либо самостоятельно.

Многим ученикам (61 %) легче работать в объектно-ориентированном языке программирования, чем в процедурном языке. Одной из причин выбора объектно-ориентированного языка программирования была простота и удобство работы с объектами (форма, кнопка, поле и надпись). Следует подчеркнуть, что некоторые ученики приравнивали объектно-ориентированные и визуально-ориентированные языки программирования.

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

- проблемы с выявлением взаимосвязей между теорией и практикой в ООП;

- пустую трату времени на изучение дополнительных методов программирования (полиморфизм, инкапсуляция, наследование);

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

Желание учеников изучить более подробно ООП возникло чуть более чем у половины класса (51 %). Таким ученикам было бы интересно увидеть все преимущества ООП и научиться решать более сложные задачи в объектах.

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

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

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

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


Младшая школа

Практика показывает, что основы программирования доступны для детей с 5-и лет. В Китае ребят обучают программированию уже в детском саду. Уроки по программированию с первого класса преподают в Эстонии с 2012 года. В AppStore можно найти приложение Bustin Jeiber, созданное разработчиком Томасом Суарезом в 12 лет, мальчик увлёкся написанием кода в 6. Для детей программирование может стать забавой, которая перерастаёт в профессиональное увлечение.

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

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

Учиться и играть одновременно

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

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

С основами робототехники познакомят конструкторы, к которым прилагаются программируемые блоки, датчики и двигатели. Подобные продукты разрабатывает Lego. Компания выпускает наборы WeDo для детей от 7-и лет и Mindstorms для ребят от 10-и лет.

Программировать без компьютера

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

Средняя школа

Выбор языка программирования

При подборе направления обучения в первую очередь необходимо выяснить интересы ребёнка. Школьник увлекается компьютерными играми, ему следует взяться за язык, используемый при их разработке. Для начала подойдут Java или JavaScript. Любителям роботов стоит изучать Lua и Scala. Если ребёнку нравится, как выглядят сайты, направьте его в сторону разработки интерфейсов. Создавать сайты с нуля можно, используя простые технологии: язык разметки HTML и стилизации CSS. Школьник скачивает кучу приложений на свой и родительский смартфон, стоит подыскать ему курсы по разработке на JavaScript и Swift.

Всемирная олимпиада роботов в Сочи, 2014 год

Всемирная олимпиада роботов в Сочи, 2014 год

Подготовка к олимпиадам

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

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

Старшая школа

В последних классах одна из главных задач для будущего программиста – поступить в Высшее учебное заведение. Для этого нужно сдать ЕГЭ по информатике более чем на 80 баллов или выиграть олимпиаду. К экзамену возможно подготовиться за 10-11-й классы, заниматься олимпиадными заданиями лучше, начиная со средней школы.

Подготовка к ЕГЭ

Подготовиться к ЕГЭ по информатике можно с репетитором или на курсах. Онлайн‑курсы по подготовке к ЕГЭ позволят учиться у лучших преподавателей вне зависимости от местонахождения ученика.

Читайте также: