====== Проектный метод в програмировании ====== //Курсовая работа учителя//\\ **393 лицея Кировского района**\\ //Зелениной Светланы Борисовны//\\ e-mail: **szel@mail.ru** ===== Понятие метода ===== Метод проектов известен и используется давно, материалов по нему много, поэтому рекомендую ознакомиться, например, с такими:\\ \\ [[http://distant.ioso.ru/project/meth%20project/metod%20pro.htm]] - д.п.н., проф. ПОЛАТ Е.С., ИОСО РАО. Метод проектов [[http://www.likt590.ru/projects/method.php]] - метод проектов на сайте ЛИКТ 590 [[http://www.nachalka.com/node/178]] - библиография и ссылки по поектному методу ===== Причины использования ===== {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:project_04_13.ppt|}} ===== Методические рекомендации ===== {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:metod_project.pdf|}} ===== Примеры проектов (только презентации к программам) ===== {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:yadykin_upravlenie_obucheniem.ppt|}} надпредметный проект\\ {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:magerin_project.ppt|}} межпредметный проект\\ {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:sazanov_zashita.ppt|}} предметный проект ---- ---- ====== Работа со структурой типа "список". Добавление и удаление элемента ====== ===== План урока ===== - Актуализация знаний по темам "Динамическая память. Указатели" и "Структурированные типы данных. Записи". - Понятия "Список", "Стек" и "Очередь". Определение, примеры в реальной жизни. Использование в компьютерной технике. - Создание списка (стека и очереди) в программе. Добавление и удаление элемента. - Практическая работа. - Домашнее задание. ===== Краткий конспект ===== ==== Актуализация ==== Необходимо восстановить: * понятие динамической памяти * ограничения на использование статической и динамической памяти * тип данных "указатель" * тип данных "запись" * опережающее описание данных Материалы можно найти по ссылке: [[http://www.pascaler.ru/pascal/dynamics/ukazatel/1/|указатели, динамическая память]]\\ ==== Понятия "список", "стек", "очередь" ==== Список - это совокупность объектов, называемых элементами списка, в которой каждый объект содержит информацию о местоположении связанного с ним объекта \\ {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:sp.jpg|фрагмент линейного списка}}\\ Здесь необходимо обсудить отличие понятия "список" в программировании от бытового понятия (например, список в журнале).\\ \\ Сведения по теме можно подчерпнуть:\\ [[http://it.kgsu.ru/C_DIN/din_0001.html|списки - общие сведения, графические иллюстрации и примеры на C++]]\\ [[http://valera.asf.ru/delphi/struct/ocher.html|изложение темы применительно к языку Паскаль]]\\ \\ Списки бывают различными. Наиболее простыми для реализации являются линейные односвязные списки, т.е. списки в которых каждый элемент содержит ссылку ровно на один другой элемент списка (кроме последнего, хвоста списка - который содержит "пустую" ссылку NIL), и в которых на каждый элемент указывает ровно один другой элемент (кроме первого, головы, на который не указывает ни один элемент списка).\\ Линейные односвязные списки подразделяют на СТЕКИ (МАГАЗИНЫ) и ОЧЕРЕДИ, в зависимости от порядка добавления и удаления элементов.\\ Структура типа "стек" является часто используемой "компьютерной" структурой. В ней элементы добавляются и удаляются с одной и той-же стороны списка (обычно - к "голове". хотя возможны варианты), соответственно последний добавленный элемент первым и уходит. Такая дисциплина носит название LIFO (Last In - First Out).\\ Здесь необходимо вспомнить о передаче параметров процедуре, особенно при рекурсивном вызове (в этом случае слово "стек" особенно легко всплывает в памяти учащихся).\\ Структура "очередь" наоборот реализует дисциплину FIFO (First In - First Out) и похожа на очередь в бытовом смысле. Добавление и удаление элементов происходит "с разных сторон.\\ ==== Создание списка (стека и очереди) в программе. Добавление и удаление элемента ==== Пример программы создания односвязного линейного списка:\\ program primer_work_with_list; type pt = ^client; client = record name : string[20]; next : pt; end; var head, actual : pt; temp_name : string[20]; begin {создание списка} head:=nil; repeat actual:=head; write('name? '); readln(temp_name); if temp_name<>'' then begin new(head); head^.next:=actual; head^.name:=temp_name; end until temp_name=''; {вывод списка} actual:=head; while actual <> nil do begin writeln(actual^.name); actual:=actual^.next; end; {дальше можно продолжить по усмотрению...} end. Наибольшую сложность вызывает обращение к произвольному элементу списка, а также - добавление и удаление произвольного элемента.\\ {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:sp_del.jpg|удаление элемента из произвольного места}} {удаление элемента} temp:=actual^.next; actual^.next:=temp^.next; dispose(temp); \\ {{:aktualnye_aspekty_prepodavanija_informatiki_v_profilnoj_shkole_2008:sp_ins.jpg|добавление элемента в произвольное место}} {добавление элемента} new(temp); temp^.next:=actual^.next; actual^.next:=temp; \\ ==== Практическая работа ==== Имеет смысл в качестве практической работы предложить набрать и проверить работу фрагментов программ по созданию и выводу списка. Далее - дополнить программу подсчетом количества элементов в списке. Другие возможные несложные дополнения - чтение данных из файла и запись в файл. ==== Домашнее задание ==== Дополнить программу возможностью выбора одной из операций:\\ - добавление элемента в конец списка - добавление элемента в произвольное место - удаление элемента из произвольного места \\ ---- Кроме перечисленных выше источников информации можно предложить также:\\ [[http://www.klax.tula.ru/~zet/themes/pointers.html|Турбо паскаль 7.0. Динамическая память]]\\