вторник, 15 апреля 2014 г.

Урок 24. Работа с матрицей

Развитие программы "Игра в крестики-нолики"

На предыдущем уроке получилась программа заполнения и вывода на кран пустого игрового  поля  family_game1.pas. Игровое поле выглядит примерно так:
 -1 -1 -1
 -1 -1 -1
 -1 -1 -1

В эту программу надо добавить фрагмент, благодаря которому программа будет предлагать поочередно каждому игроку сделать свой ход. Программа будет вводить данные игрока в такой формате:
  1. номер строки
  2. номер столбца
  3. 0 или 1 ( в зависимости от номера игрока)
Программа изменяет значение указанной ячейки поля и выводит новое сосотояние поля после каждого хода. После ходов игроков поле будет выглядеть примерно так:
 1 -1  0
-1 -1 -1
-1 -1 -1

Разделение окон ввода и вывода

В среде Pascal можно подключить библиотеку (модуль) подпрограмм для работы с текстом - CRT. Для этого в начале программ добавляется раздел описания модулей:
uses CRT
Тогда при выполнении создается окно вывода отдельно от окна ввода. Процедура   writeln выводит текст в это окно. С помощью подпрограмм модуля CRT можно форматировать выводимый текст.

Процедура вывода игрового поля

В нашей игре придется много раз выводить на экран игровое поле. Имеет смысл оформить операторы вывода поля на экран в виде процедуры  PrintPole.
Процедура описывается в начале программы следующим образом:
procedure PrintPole (x,y:integer);  {х - количество строк, у - количество столбцов }
begin
тело процедуры;
end;
Для вызова процедуры в нужных местах программы используется оператор
PrintPole (t,s); где t - количество строк, s - количество столбцов

Практическая работа

среда, 2 апреля 2014 г.

Урок 23. Тип данных - матрица

Материал к уроку - Презентация К.Ю.Полякова (слайды 102-111) скачать и сохранить в своей папке на локальном компьютере
Многие алгоритмы обрабатывают данные, организованные в виде таблицы.
Например, при составлении программы для игры "Крестики-нолики" нужно запоминать состояние каждой клетки квадратной доски.
Смотрите презентацию, указанную в начале данного сообщения.
Слайд 102. Можно поступить так: пустым клеткам присвоить значение -1, клетке, где стоит нолик - значение 0, клетке с крестиком - значение 1. Тогда получится таблица. Закрашенная клетка имеет координаты: строка 2, столбец 3. 
Такие таблицы называют матрицами или двумерными массивами. 
Запишите в тетрадь определение матрицы.
Слайд 103. Матрица на языке программирования  является структурной переменной (как массивы и строка). При объявлении матрицы (в разделе Var) указывают два диапазона индексов - для строк и столбцов.
В программе для игры  "Крестики-нолики" игровое поле (3 yна 4) будет описано так:
Запишите в тетрадь объявление матрицы
Const m=3: n=4; {чего больше - строк или столбцов?}
Var
Game: array [1..n, 1..m] of integer;
Слайд 104. Для  обращения  к одному элементу матрицы (в разделе операторов) нужно указать имя матрицы и два индекса - сначала номер строки, потом - номер столбца. 
begin
…..
Game [1,2]:= -1;
…..
end.
Алгоритм заполнения матрицы начальными значениями  реализуется в виде двойного цикла for - внешний цикл - перебор всех строк, во вложенном цикле - заполнение полей текущей строки. Для нашей игры для заполнения поля 3 на 4 алгоритм такой:
for i:=1 to n do 
begin
for j := 1 to m 
begin 
Game[i,j] := -1;write (Game [i,j]:3);end;
writeln; 
end;       
Запишите в тетрадь операторы начального заполнения матрицы




среда, 12 марта 2014 г.

Урок 21. Обработка строк. Решение задач

Написать программу для задачи (по вариантам), используя метод "сверху вниз"

План работы

I. В тетради:

  1. Записать условие своей задачи в тетрадь для контрольных работ.
  2. Перечислить необходимые переменные - имена, типы, назначение. Например: s - string, исходная строка
  1. Написать тестовые входные строки (не менее 3-х)
  2. Написать алгоритм программы верхнего уровня

II. На компьютере в среде PascalABC:

  1. Написать программу верхнего уровня. Имя программы - t21-<N задачи>-1.
  2. В комментария этой программы написать: Фамилии авторов, текст задачи.
  3. Программу отладить. Сохранить в своей папке Progr  на  локальном компьютере



III Следующий уровень детализации

В тетради

  1. Написать цель обработки строки. Например - просмотреть каждый символ строки, отыскивая пробел или точку. Если встречается пробел, то добавляется 1 в счетчик слов.
  2. Написать алгоритм обработки строк



На компьютере в среде PascalABC:

  1. Сделать копию программы t21-<N задачи>.-1 и сохранить ее с именем t21-<N задачи>-2
  2. В эту программу вставить операторы обработки строки
  3. Программу отладить. Сохранить в своей папке Progr  на  локальном компьютере



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


среда, 5 марта 2014 г.

Урок 20. Обработка строк с помощью функций и процедур

Задача

Из слова КЛОУН путем вырезок и вставки получить слова УКЛОН, КУЛОН, КОЛУН. Полученные слова вывести на экран.

Постановка задачи

Рассматриваем данное слово как последовательность пронумерованных от 1 до N символов.
Исходная строка находится в переменной s (строка)
Перемещаемая подстрока находится в переменной w(строка)
Номер позиции (индекс) перемещаемой подстроки w в исходной строке s находится в переменной k(целое)
Номер позиции (индекс) вставляемой подстроки w в строку s находится в переменной t (целое)

Алгоритм обработки данной строки

Начало
Сохранить подстроку, которую надо переставить, в переменной w. Найти в данной строке s подстроку w и сохранить 1-ю позицию (индекс) найденной подстроки в переменной k. 
Вырезать из данной строки s подстроку w.
Вставить подстроку w в данную строку s с позиции t.
Вывести на экран полученную строку s.
 Конец

Какие подпрограммы можно применить:

Можно ли узнать длину данной строки - значение N? N:= Length(s), где s = ‘КЛОУН’
По условию задачи нужно вырезать нужный символ и вставить его в другое место.
Вырезание подстроки выполняется с помощью 2-х подпрограмм:

Copy(s,index,count) и Delete(s,index,count). Параметры этих подпрограмм:
  • s - входная строка
  • index - позиция, с которой начинаем копировать
  • count - длина копируемой подстроки
Подпрограмма Copy - функция, которая возвращает скопированную подстроку. Тип результата - string.  
Подпрограмма Delete - процедура, которая удаляет указанное количество символов, начиная с указанной позиции.
Вставка подстроки выполняется с помощью подпрограммы Insert(subs,s,index), где
  • subs - вставляемая подстрока
  • index - позиция, с которой вставляем подстроку 
  • s - строка, в которую вставляется подстрока

Подпрограмма Insert - процедура, которая вставляет указанную подстроку в данную.
Поиск нужной подстроки осуществляется подпрограммой Pos(subs,s), где
  • subs - подстрока, которую ищем 
  • s - строка, в которой ищем подстроку

Подпрограмма Pos - функция, которая возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена). Тип результата - integer.
Практическая работа и домашнее задание

среда, 19 февраля 2014 г.

Урок 19. Решение задач с использованием данных типа string

Задача формирования строки

Написать программу, приветствующую пользователя:
Диалог:
Назовите имя 
Приветствую, имя. 
Программа должна сформировать выходную строку из константы ‘Привет’ и переменной, в которую вводится имя.
Описать необходимые данные.
Написать алгоритм ввода имени, формирования выходной строки и вывода выходной строки.

Решение задач методом “сверху-вниз”

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

среда, 12 февраля 2014 г.

Урок 18. Структура - строка

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

Тип данных строка позволяет:

  • работать со строкой как с единым объектом
  • использовать строки переменной длины
Строка — упорядоченная последовательность символов. Каждый символ строки занимает 1 байт (код ASCII). Количество символов в строке называется ее длиной. Длина строки — от 0 до 255 символов. В нулевом байте содержится длина строки.

среда, 29 января 2014 г.

Урок 16. Подпрограммы-функции

Повторить материал о подпрограммах

В чем различие между процедурой и функцией?
Функция - вспомогательный алгоритм,  который может принимать параметры, но в отличие от процедуры,  функция всегда возвращает значение - результат.
Примеры встроенных функций: sin, cos, abs, whereX, whereY...
 Результатом выполнения функции может быть число, символ, символьная строка или данные другого типа.

Алгоритм функции, которая вычисляет сумму цифр числа

На формальном языке:
сумма:=0
начало цикла пока n<> 0
      сумма:=сумма + mod (n,10)
      n:= div (n,10)
конец цикла
На языке Pascal:
program funcSum;
var N: integer;
function sumDigits(n: integer):integer;
var sum: integer;
begin
  sum:= 0;
  while n <> 0 do begin
    sum:= sum + n mod 10;
    n:= n div 10;
  end;
sumDigits:= sum;
end;
begin
  write ( 'Введите целое число: ' );
  read ( N );
  write ( 'Сумма цифр ', sumDigits(N))  

end.

Примеры вызова функции

x:= 2*sumDigits(n+5);
z:= sumDigits(k)+ sumDigits(m);

Практическое задание и Домашнее задание

среда, 15 января 2014 г.

Урок 15. Подготовка к ДКР

Итоги выполнения предыдущего задания

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

Подготовка к ДКР

Диагностическая контрольная работа состоится 23 января на уроке по расписанию.
Для повторения материала за базовый курс Информатики поработаем с тестами.
Тесты (4 варианта) расположены на школьном сервере по адресу:
\\server.sc640\public1\learn\11i\ЕГЭ-ДКР\тесты-22-12
За правильный ответ по каждому заданию начисляется 1 балл.
Задания 12, 13, 17, 18 рекомендуем отложить на конец.
Номер варианта указывает учитель.

пятница, 3 января 2014 г.

Урок 14. Подпрограммы. Изменяемые параметры

 Прочитайте документ  - Область действия переменных в программе
Что делает процедура Swap:
Program Exchange1;
var x,y : integer;
procedure Swap (a, b: integer);
var c: integer;
beginc:=a; a:=b; b:=c;end;
begin
x:=2; y:=3; Swap (x, y);  Write(x, ' ', y);
end.
Что должна вывести эта программа?
Выполним эту программу в среде PascalABC. Значения переменных x и y остались прежними! 
Процедура Swap работает с копиями переданных ей параметров. Это значит, что процедура создает в памяти временные локальные переменные с именами  a и b и копирует в них переданные основной программой значения переменных   x и y.  Поэтому все перестановки в процедуре были сделаны с копиями, а значения переменных  x и y в основной программе не изменились. Такая передача параметров называется передачей по значению, а параметры называют параметрами - значениями.
Чтобы  решить эту проблему,  нужно явно сказать, чтобы процедура работала с теми же ячейками памяти, что и основная программа. Для этого при перечислении формальных параметров в процедуре указывают слово var: 
Program Exchange2;
var x,y : integer;
procedure Swap (var a, b: integer);
var c: integer;
begin
c:=a; a:=b; b:=c;
end;
begin
x:=2; y:=3; Swap (x, y);  Write(x, ' ', y);
end.
Выполним эту программу в среде PascalABC. Значения переменных x и y поменялись местами! 
Такая передача параметров называется передачей по ссылке, а параметры называют параметрами - переменными/
Практическое задание и Домашнее задание