TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Гостевая книга

Рассылка

Благодарности

От автора

 

 

 
Выборы...
Вступление
Новости сайта
Теория
Программа
Послесловие

Вступление

Добрый день!
Хочется поделится некоторыми впечатлениями - у нас в Питере проходит выставка компании Samsung (если кому интересно, то вам в Русский Музей, она идёт до 10 ноября). Так вот был я там вчера и был там конкурс, на котором нужно было назвать, то что производит Samsung. Как выяснилось - они производят процессоры !!! Может я и отстал, но не видел ни одного проца с маркировкой Samsung за всю свою сознательную жизнь. Поэтому, когда в зале раздались негодующие выкрики, я к ним присоединился.... Однако ведущий всех успокил сказав, что они есть и всё в порядке. На выстаке они кстати не представлены не были. Так что теперь переходим с процессоров Intel на Samsung, думаю, что если поковыряться в их чайнике, то 100% найдете там новый процессор :))))
PS ведущий сказал так же сказал, что нет телефона Q100, однако сегодня мне его показали :)
PPS сходить на выставку всё же стоит, есть чего посмотреть.

Новости сайта

На нашем сайте появился архив рассылки в формате chm. Архив будет постоянно пополняться и каждый раз будет лежать по этой ссылке - http://www.ibp7.narod.ru/arxiv.chm. Сейчас его объём 80 kb.

Теория

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

case ключ_выбора of список_выбора else операторы end;
Список выбора при этом состоит из нескольких конструкций вида выбор : оператор;

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

case day of
	1 : writeLn ('Понедельник');
	2 : writeLn ('Вторник');
	3 : writeLn ('Среда');
	else
		 writeLn ('Какой-то другой день.');
end;
Итак ключ выбора - это у нас day. Для него мы составляем список выбора - список возможных значений и что мы будем делать при этих значениях. Так если day = 1, то мы выведем Понедельник, если 2 - Вторник и т.д. Часть, которая начинается с else может отсутствовать - она схожа с частью оператора if-then-else. Поэтому она выполняется, если ключ выбора не удовлетворяет ни одному условию из списка. У нас она выполнится, если day не равен 1, 2 или 3, например при day=0 или day=4.

О том, что никогда не меняется - константы!

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

Program ИмяПрограммы;
uses список подключаемых модулей;
const
   Здесь идёт объявление констант.
var
  Здесь идёт объявление переменных.
begin
  Здесь идёт текст программы.
end.
Объявить константу можно следующим образом: ИМЯ_КОНСТАНТЫ = ЗНАЧЕНИЕ; Обратите внимание, что мы пишем просто равно, без двоеточия! Например напишем программу, которая считает число П/2 (П = 3.14259265)
Program PI_DEL_TWO;
const
  pi = 3.14159265;
var
  pid2 : real;
begin
  pid2 := pi / 2
end.
Константы могут быть не только числовые, но и текстовые. Например
const
   Text = 'Hello, World!';
begin
	writeLn (Text)
end.
- ещё одна вариация на тему hello world!

Зачем нужны константы, ведь вполне можно использовать численные значения ? Константы нужны для удобства! При компиляции они автоматически заменяются своими значениями. Но например, если это число нужно изменить ? (число П не изменишь, но например стоимость товара или ширина шкафа) Тогда просто меняете значение константы, номер версии программы на 1.01 и получаете совершенно новый продукт :)

Программа

Давайте сегодня напишем маленькую ходилку - нажимая на клавиши будем двигать курсор по экрану. Управление выберем самое примитивное.... нет не стрелки :) ... они как не странно несколько сложнее, а буквы w, a, s, d. Выход из программы будем осуществлять по клавише ESC.

Для передвижения курсора нам понадобится функция gotoxy (X, Y) - передвижение курсора на координаты X,Y. При этом левому верхнему углу экрана соответсивуют координаты (1,1) а правому нижнему (80, 25). Это функция из модуля CRT.

Program CURSOR;

uses CRT;

const
     LEFT = 'a';
     RIGHT = 'd';
     UP = 'w';
     DOWN = 's';
     ESC = 27;

var
   x, y : integer;
   key  : char;

begin
     ClrScr;

     key := #0;
     x := 1;
     y := 1;

     while key <> chr  (ESC) do
     begin
          key := readkey;

          case key of
               LEFT  :  begin
                         if (x - 1) >= 1 then
                           x := x - 1
                         else
                            x := 80
                        end;
               RIGHT :  begin
                         if  (x + 1) <= 80 then
                             x := x + 1
                         else
                           x := 1
                        end;
               UP    :  begin
                         if  (y - 1) >= 1 then
                           y := y - 1
                         else
                           y := 25
                        end;
               DOWN  :  begin
                         if  (y + 1) <= 25 then
                           y := y + 1
                         else
                           y := 1
                        end
          end;

          gotoxy (x, y)
    end
end.
Что сразу бросатеся в глаза ? Наверное key := #0; - что это за #0 ? Значек диез "#" означает, что это не число, а символ! Существует так называемая таблица символов, каждый символ имеет в ней свой номер. Например весёлая рожица - #1, цифра 0 - #48, буква Ъ - #154, буква ъ - #234. Заглавные и строчные буквы имеют разные номера. Символы можно выводить с помощью функции write, например write (#1, #32, #2) - посмотрите, что выйдет (#32 - символ пробела). Вот мы и присваиваем переменной key символ под номером 0! key - переменная типа char (анг. символ). Переменные типа char имеют размер в 1 байт и принемают значения от 0 до 255.

В переменных x и y - у нас хранятся координаты. В начале мы присваем им значения 1,1 - т.к. после выполнения Clrscr курсор перемещается в эту точку.

Цикл while у нас идёт с условием key <> chr (ESC). Функция chr (X) преобразует целое число к символу. Константа ESC имеет значение 27 - код клавиши ESC, однако мы помним, что Паскаль - строго типизированный язык, поэтому мы должны преобразовать целое число 27 к символу 27!

key := readkey; - функция readkey считывает символ с клавиатуры, не выводя его на экран и возращает его.

Теперь вырисовывается алгоритм :) программы - считываем клавишу с клавиатуры, проверяем его на совпадение с функциональными клавишами. Цикл выполняется, пока мы не нажмём клавишу ESC.

Эта программа представляет собой упрощение алгоритма лежашее в основе многих игрушек.

Послесловие

Нам по прежнему не задали программу максимум. Наш примерный план - добраться до Window'sa. На этом сегодня всё. Если звёзды будут благосколонны, то на этой неделе выйдет ещё один выпуск.

Если, что надо - мыльте ibp7@yandex.ru.
© 2002 Использование материалов без согласия авторов запрещено.

 

На первую страницу

 

Rambler's Top100 PROext: Top 1000 Rambler's Top100
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz