Методика изучения электронных таблиц 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Методика изучения электронных таблиц



Билет 1

 

Задание 1. Найти основание р системы счисления и цифру n, если верно равенство:

33m5n + 2n443 = 55424

Пример выполнен в системе счисления с основанием р, m – максимальная цифра в этой системе.

Вопросы:

1. В каком классе, при изучении какой темы решают задачи подобного типа?

2. Сформулируйте психолого-педагогические и методические цели, которые достижимы при решении данной задачи.

3. Сформулируйте основные теоретические посылки для решения задачи.

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

 

Ответы: Запишем столбиком данное сложение. Очевидно, основание системы р>6, так как присутствует цифра 5. Сложение в младшем разряде дает n + 3 = 4. Отсюда n = 1. Сложение во втором разряде слева дает:

5 + 4 = 12р = (1*р + 2)10 = 9р. Отсюда следует, что р = 9 – 2 = 7. Наибольшая цифра в семеричной системе - 6. Значит m = 6. Если подставить в данное выражение вместо букв соответствующие им цифры: n = 1, m = 6 и выполнить сложение в семеричной системе счисления, то получится сумма, данная в условии задачи.

 

1) 9 класс Тема «Арифметические операции в позиционных системах счисления»;

 

2) Изучить арифметические операции в различных системах счисления. Развитие логического мышления.

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

 

3) - Что такое система счисления?

- Какая система счисления называется позиционной?

- Что называется основанием системы счисления?

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

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

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

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

Правила сложения и умножения:

0 + 0 = 0 1 + 0 = 1 1 + 1 = 10

0 * 0 = 0 1 * 0 = 0 1 * 1 = 1

 

4) Какая наибольшая цифра в равенстве?(5)

Какой вывод можно сделать о возможной системе счисления?(>6).

 

Задание 2. Написать компьютерную программу, реализующую «пузырьковый» метод сортировки массива вещественных чисел.

Вопросы:

1. В чем суть основных методов алгоритмов сортировки данных?

2. Как классифицируются типы данных в языках программирования?

 

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

Пузырьковая: просматриваются элементы сравниваются соседние и если первый больше второго меняются местами.

Линейная: Идея линейной сортировки по невозрастанию заключается в том, чтобы, последовательно просматривая весь массив, отыскать наибольшее число и поместить его на первую позицию, обменяв его с элементом, который ранее занимал первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемой части массива максимального элемента и обмену местами этого элемента и первого в рассматриваемой части и т.д.

 

2. Типы данных (data type) – множество величин, объединенных определенной совокупностью допустимых операций.

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

1. Простые типы (скалярные типы).

Порядковые типы.

Целые типы: byte, shortint, integer, word, longint.

Логический тип boolean.

Символьный тип char.

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

Вещественные типы: real, single, double, extended, cоmp.

Ссылочный тип.

2. Структурированные типы.

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

Строковый(string).
Регулярный (array).

Комбинированный(record Множественный (set).

Файловый (file).

3. Процедурные типы.

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

Рис.4.1. Структура типов данных

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

1) некорректное присваивание (вместо текста число);

2) некорректная операция (сложение числа и слова);

3) некорректная передача параметров (аргумент синуса – слово).

 

Классификация данных:

простые: целый (integer), вещественный (real), логический (Boolean), символьный (char), строковый (string) перечислимый (хранит перечисленные значения), множество. К простым типам относятся порядковые и ве­щественные типы. Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить (отсюда - название типов) и, следова­тельно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения. Вещест­венные типы, строго говоря, тоже имеют конечное число значений, которое определяется форматом внутрен­него представления вещественного числа. Однако количество возможных значений вещественных типов на­столько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.

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

Описание типа массива задается сле­дующим образом:

<имя типа> = ARRAY [ <сп.инд.типов> ] OF <тип>

Здесь <имя типа> - правильный идентификатор; ARRAY, OF - зарезервированные слова (массив, из);

<сп.тд.типов> - список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса.

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

<имя типа> = RECORD <сп.полей> END

Здесь <имя типа> - правильный идентификатор; RECORD, END - зарезервированные слова (запись,конец); <сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

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

другие типы данных: указатели и ссылки.

3. Массив – это последовательность, состоящая из фиксированного числа однотипных элементов.

type<имя типа> = array<список типов индексов> of<тип элементов>. Число типов индексов называется раз­мерностью массива. После описания типа массива конкретные массивы можно задать в разделе описания пе­ременных. Отличительная особенность массивов заключается в том, что все их компоненты суть данные од­ного типа.

Одномерный массив – массив, в котором хранятся данные одного типа, объединенные одним именем, где каждый элемент имеет свой номер. Type A = Array [1..30] of integer.

Двумерный массив – массив, положение элементов которого описывается двумя индексами (соответствует матрице из столбцов и строк). Type A = Array [1..10;1..10] of integer.


Билет 2

 

Задание 1.

Виктор, Роман, Леонид и Сергей заняли на олимпиаде по математике четыре первых места. Когда их спросили о распределении мест, они дали три таких ответа:

1) Сергей – первый, Роман – второй;

2) Сергей – второй, Виктор – третий;

3) Леонид – второй, Виктор - четвертый.

Известно, что в каждом ответе только одно утверждение истинно. Как распределились места?

Вопросы:

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

2. Сформулируйте методические цели решения этой задачи.

3. Постройте систему вопросов к учащимся по поиску решения задачи.

4. Используя учебные пособия, подберите задачи, предваряющие решение данной задачи.

 

Задание 1. Сергей – 1, Леонид – 2; Виктор – 3; Роман – 4. стр.59 Задачник1

 

 

1. При изучении темы Логическая информация и основы логики.

2. Введение понятия высказывание (суждение) – это повествовательное предложение, в котором что-либо утверждается или отрицается. По поводу любого высказывания можно сказать истинно оно или ложно. Ввести понятие логические величины: понятия, выражаемые словами: ИСТИНА, ЛОЖЬ (true, falsh). Следовательно, истинность высказываний выражается через логические величины.

 

 

Задание 2.

Написать компьютерную программу, реализующую метод линейной сортировки массива строк.

Вопросы:

1. Каковы основные действия над массивами и элементами массивов, и какие языковые средства используются для этого?

2. Что такое файл, с точки зрения языка программирования? В чем отличия организации файлов прямого и последовательного доступа, и какие языковые средства для работы с ними могут быть использованы?

1. Массив – это последовательность, состоящая из фиксированного числа однотипных элементов.

type<имя типа> = array<список типов индексов> of<тип элементов>. Число типов индексов называется размерностью массива. После описания типа массива конкретные массивы можно задать в разделе описания переменных. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа.

Одномерный массив – массив, в котором хранятся данные одного типа, объединенные одним именем, где каждый элемент имеет свой номер. Type A = Array [1..30] of integer.

Двумерный массив – массив, положение элементов которого описывается двумя индексами (соответствует матрице из столбцов и строк). Type A = Array [1..10;1..10] of integer.

Действия над массивами:

нахождение суммы, заполнение массива, используется цикл:

1) Ввод с клавиатуры for i:=1 to n do readln (a[i]).

2) Случайные числа randomize; for i:=1 to n do a[i]:=random(20).

3) Ввод массива for i:=1 to n do write (a[i]:30) – ввод по формату.

4) нахождение максимального элемента

max:=a[1]; k:=1;

for i:=1 to n do if a[i]>max then begin max:=a[i];

k:=i; end; write ().

5) Сумма элементов массива

6) Поиск элемента или его номера с заданными свойствами.

7) Сортировка массива.

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

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

<имя> = FILE OF <тип>;

<имя> = TEXT;

<имя> = FILE;

Здесь <имя> - имя файлового типа (правильный идентификатор);

FILE, OF - зарезервированные слова (файл, из);

TEXT - имя стандартного типа текстовых файлов;

<тип> - любой тип Турбо Паскаля, кроме файлов.

Файлы позволяют решить две проблемы:

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

2) взаимодействие программ с внешними устройствами ввода-вывода дисплеем, принтером и т.д.

Файловый тип данных в программе задается следующим образом:

type <имя файлового типа> = file of <тип компонентов>. В качестве типа компонентов файла разрешается использовать любой тип данных, кроме файлового.

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

f0 f1 f2 f3 м.к.

^т.м.

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

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

Команда rewrite(f) – открыть файл для записи – устанавливает файл в начальное состояние режима записи; текущий маркер устанавливается на маркер конца файла. Если в файле f до этого была информация, то она уничтожается.

В открытом для чтения командой reset(f) файле текущий маркер устанавливается на нулевое состояние, однако содержимое файла не утрачивается.

rewrite(f) reset(f)

 

м.к.    
f0 f1 f2 f3 м.к.

^ ^

Команда закрытия файла close(f) обязательна, поскольку эта команда формирует маркер конца файла, что в большинстве случаев является необходимым.

 


Билет 3

Задание 1.

Из одного грамма углеводов человек получает 4,1 ккал, из одного грамма жиров – 9,3 ккал, из одного грамма белков – 4,2 ккал.

Одна порция содержит –

борщ со свежей капустой – 3,6 г белков, 12 г жиров и 24 г углеводов;.

гуляш – 24,3 г белков, 24 г жиров и 7 г углеводов;

картофель с маслом – 2,7 г белков, 7 г жиров и 39 г углеводов

компот из свежих фруктов – 0,4 г белков, 36 г углеводов.

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

- из белков, жиров и углеводов, содержащихся в каждом блюде;

- из каждого блюда;

- отдельно из белков, жиров и углеводов, входящих в обед;

- из всего обеда?

Вопросы:

1. С помощью каких средств может быть решена данная задача?

2. Сформулируйте этапы решения задачи с учащимися.

3. Постройте систему вопросов к учащимся по решению задачи.

4. Выделите основные знания и умения, которыми должны владеть учащиеся для решения этой задачи.

 

Задание 2.

Написать компьютерную программу, переводящую число X в N-ричной системе в К-ричную систему счисления, где N и К принадлежат [2;36].

Вопросы:

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

2. Перечислите и охарактеризуйте основные этапы разработки программного обеспечения?

 

Билет 4

Задание 1.

Описать систему команд исполнителя «Геометр», который мог бы выполнять геометрические построения с помощью циркуля и линейки.

Вопросы:

1. Спланируйте урок, содержащий данную задачу. При этом продемонстрируйте следующие умения:

- организовать деятельность учащихся и управлять ею в процессе решения задачи;

- подбирать средства для решения учебной задачи;

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

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

 

 

Задание 2.

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

Вопросы:

1. Какую роль в компьютерных программах играют процедуры и функции? В чем их различия?

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

 

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

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

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

Описание и вызов. В Паскале подпрограммы называются процедурами и функ­циями и описываются в разделе с тем же названием.

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

• заголовок процедуры имеет другой синтаксис и включает служебное слово procedure;

• описание процедуры заканчивается точкой с запятой (а не точкой).

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

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

procedure <имя> (<список описаний формальных параметров>) Описание формальных параметров может иметь вид

<список имен>: <тип> или var <список имен>: <тип>

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

Оператор вызова процедуры имеет вид

<имя процедуры> (<список выражений>);

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

Параметры-переменные следует использовать для представления результатов процедуры.

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

Функция - это подпрограмма, определяющая единственное скалярное, вещественное или строковое значение. Отличия подпрограммы-функции от процедуры:

• заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции:

function <имя> (список описаний формальных параметров): <тип>;

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

• обращение к функции - не оператор, а выражение вида

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

т.е. могут быть рекурсивными.

Пример: составим программу, которая для заданных четырех натуральных чисел а, Ь, с, d напечатает наибольшие общие делители первой и второй пар чисел и

сравнит их по величине.

В программе определим рекурсивную функцию nod(x,y) по формулам

Применяя эти формулы к числам 21 и 15, последовательно находим nod(21,15) = nod(6,15) = nod(15,6) = nod(3,6) = nod(6,3) = nod(0,3) = nod(3,0) = 3.

Программа 19

program four;

var a,b,c,d,m,n:integer;

function nod(x,у: integer) '.integer;

var h:integer;

begin

if y=0 then h:=x

else if x<y then h:=nod(y,x) else h:=nod(x mod у, у); nod:=h end; begin

writeln('введите 4 натуральных числа1

read(a,b,c,d); writeln;

m:=nod(a,b); n:=nod(c,d);

writeln ('нодС, a, ', ',b, ') = ',m);

writeln('нод(',c,',',d,')=',n);

if m>n then writeln('первый > второго')

else if m<n then writeln(' первый < второго')

else writeln('нод пар равны') end.

2.Рекурсия - это такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе. Рассмотрим классический пример - вычисление факториала (пример 18). Программа вводит с клавиатуры целое число N и выводит на экран значение N!, которое вычисляется с помощью рекурсивной функции РАС. Для выхода из программы необходимо либо ввести достаточно большое целое число, чтобы вызвать переполнение при умножении

чисел с плавающей запятой, либо нажать Ctrl-Z и Enter. При выполнении правильно организованной рекурсивной подпрограммы осуществляется многократный переход от некоторого текущего уровня организации алгоритма к нижнему уровню последовательно до тех пор, пока, наконец, не будет получено тривиальное решение поставленной задачи. В примере 8.5 решение при N = 0 тривиально и используется для остановки рекурсии. Пример 8.5

Program Factorial;


{$S+} {Включаем контроль переполнения стека}

var

n: Integer;

Function Facfn: Integer): Real;

{Рекурсивная функция, вычисляющая n! }

begin {Fac}

if n < 0 then

WriteLn ('Ошибка в задании N')

else

if n = 0 then

Fac:= 1

else Fac:= n * Fac(n-l)

end {Fac};

{---------------}

begin {main} repeat

ReadLn (n);

WriteLn ('n!= ',Fac(n))

until EOF

end {main}.

Изучая в предыдущем разделе язык Паскаль, мы уже использовали понятие ре­курсии. Однако оно столь важно и принципиально, что с ним следует познакомиться детальнее.

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

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

procedure RETR; begin

инициализация начального хода repeat выбор очередного хода

if подходит then его запись; if решение не полное then RETR;

if неудача then стирание хода и возврат на предыдущий until удача or нет хода end.

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

Программа 39

program tur;

var i, j, ii, jj, n, nn: integer; q: boolean;

dx, dy:array[1..8] of integer; h: array[1..8,1..8] of integer; (*рекурсивная процедура - попытка сделать ход*) procedure try(i,x,у:integer; var q:boolean);

var k, u, v: integer; ql: boolean; begin

k:=0; repeat k:=k+l; ql:=false; u:=x+dx[k]; v:=y+dy[k];

if { (K=u)and(u<=n)and(K=v)and(v<=n)) and(h[u, v]=0)

then begin h[u,v]:=i;

(*для отладки и наблюдения процесса поиска с возвратом*) for ii:=l to n do begin for jj:= 1 to n do

write(h[ii,jj]:5); writeln; end; readln;

if i<nn then begin try(i+l,u,v,ql); if not(ql) then h[u,v]:=0 else ql:=true; end

else ql:=true end;

until (ql) or (k=8); q:=ql;

end; (*конец процедуры*) begin

dx[l]:=2; dx[2]:=l; dx[3]:=-l; dx[4]:=-2; dx[5]:=-2;

dx[6]:=-l; dx[7]:=l; dx[8]:=2; dy[l]:=1; dy[2]:=2;

dy[3]:=2; dy[4]:=1; dy[5]:—1; dy[6]:=-2;

dy[7]:=-2; dy[8]:—1;

write('введи n: '); readln(n);

for i:=l to n do for j:=l to n do h[i,j]:=O;

write('введи i,j: '); readln(i,j); nn:=n*n;

h[i, j]:=1; try (2, i, j,q);

if q then begin

for i:=l to n do begin

for j:= 1 to n do write(h[i,j]:5); writeln; end; end

else writeln('нет маршрута1); readln end.


Билет 5

Задание 1.

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

Вопросы:

1. При изучении какой темы школьного курса информатики встречаются задачи подобные данной?

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

3. Предложите форму организации учебного процесса для успешного решения задачи.

4. Какие умения учащихся можно проверить в процессе решения задачи?

 

Задание 2.

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

Вопросы:

1. В чем суть объектно-ориентированной парадигмы программирования?

2. Что такое объект, класс, инкапсуляция, наследование и полиморфизм?

 

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

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

Основные шаги разработки программы, предусмотренные данной методологией

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

Большинство современных языков и систем программирования развивается в направлении все большего использования объектной методологии в создании программ. Характерными примерами являются универсальные языки Паскаль, СИ и даже Бейсик, в современных версиях которых появились средства объектно-ориентированного программирования. Так, начиная с версии 5.5, Турбо-Паскаль охватывает метод проектирования программ на основе объектно-ориентирован­ного программирования.

 

2. Объект в Турбо-Паскале - это структура данных, содержащая поля данных раз­личных типов и заголовки методов и обобщающая структуру «Запись» (record). Методы – это процедуры и/или функции, объявленные или действующие внутри объекта. Синтаксис описания объекта:

<ИмяПотомка>=

оЬ j ес^<ИмяПредка> поле;

поле;

метод;

метод; end;

Инкапсуляция. Основой решения задачи является задание положения (позиции отдельной точки на экране, описываемого координатами X и Y. Для задани* координат подходит тип «запись»:

Pozition = record X, У: integer; end;

Далее может быть необходимо задать значения координат (такая процедура но­сит название инициализации). Создадим соответствующую процедуру:

procedure Init(CoordX, CoordY: integer);

begin

X: = CoordX;

Y: = CoordY;

end;

Затем потребуется знание фактических значений координат. Для этого вводим две функции:

function GetX: integer;

begin

GetX: = X;

end;

function GetY: integer;

begin

GetY: - Y;

end;

Наследование. Рассмотрим точку с координатами X и Y. Ее можно сделать ви­димой или невидимой, ей можно задать цвет, ее можно переместить. Создадим объект с такими возможностями:

Point=object

X,Y: integer;

procedure Init(CoordX, CoordY: integer);

function GetX: integer;

function GetY: integer;

Visible: Boolean;

Color: Word;

procedure Init(CoordX, CoordY: integer; InitColor: Word);

function Is Visible: Boolean;

procedure Show;{показывает точку}

procedure Blind;{стирает точку}

procedure Jump(NextX, NextY: integer);{перемещает точку} end;

Заметим, однако, что поля X,Y и методы GetX, GetY практически совпадают с соответствующими полями и методами объекта Pozition.

Турбо-Паскаль предоставляет возможность учесть эту ситуацию. Следует счи­тать тип объекта Point порожденным типом Pozition, записав это следующим образом:

Point=object(Pozition)

Visible: Boolean;

Color: Word;

procedure Init(CoordX, CoordY: integer; InitColor: Word);

function Is Visible: Boolean;

procedure Show;

procedure Blind;

procedure Jump(NextX, NextY: integer); end;

Объект Point теперь наследует свойства объекта Pozition. Поля X,Y явно не за­даны в Point, но Point ими обладает благодаря наследованию, т.е. можно написать

Point.X:=17;

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

Полиморфизм. Предположим, надо создать объект «кружок». Очевидно, что новый объект должен иметь предком объект Point, обладая всеми его свойствами, кроме того, быть больше по размеру. Однако, ясно, что «высветить» точку и закрашенную окружность не удастся одними и теми же командами. Турбо-Паскаль разрешает сохранить потомку имя родительского метода, «перекрывая» его. Чтобы перекрыть родительский метод, надо просто задать его с тем же именем, но с другим телом (кодом) и, если необходимо, с другим набором параметров. Такой метод делается виртуальным и к его объявлению добавляется слово virtual. Приме­нение виртуальных методов налагает ограничения на процедуры инициализации, которые должны записываться с зарезервированным словом constructor и иметь общее имя Init.

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

Для очистки и удаления динамически распределенных объектов существует спе­циальная процедура destructorDone.

Деструктор комбинирует шаг освобождения памяти в «куче» с некоторыми дру­гими задачами. Метод деструктора может быть пустым, поскольку работу выпол­няет не только код тела, но и код, генерируемый Турбо-Паскалем в ответ на зарезервированное слово destructor.


Билет 6

Задание 1.

Что нарисует Черепашка по команде REPEAT 4 [TR RIGHT 90], где

TO TR

REPEAT 3 [ FORWARD 40 RIGHT 120]

END?

Вопросы:

1. При изучении какой темы школьного курса информатики встречаются задачи подобные данной?

2. Сформулируйте этапы решения этой задачи учащимися.



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 153; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.216.163 (0.268 с.)