====== Проектный метод в програмировании ======
//Курсовая работа учителя//\\
**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. Динамическая память]]\\