Отправляет email-рассылки с помощью сервиса Sendsay

Все про Pascal

  Все выпуски  

Все про Pascal


Информационный Канал Subscribe.Ru - www.lycos.ru



Рассылка проекта www.pascal.km.ru [#001]

Ведущий рассылки Дмитрий


Статьи

Исходники

Программы

Книги

Задачи

Уроки

Форум


Содержание выпуска




Шаг за шагом.

Каждая программа, написанная на ТП 7.0 можно условно разделить на три основные части: · Раздел объявлений (декларационная часть) · Раздел текстов процедур и функций · Раздел основного блока Далее мы видим более подробную таблицу:

Раздел объявлений (декларационная часть)

Program Заголовок(имя) программы; {$ …} Глобальные директивы компилятора; Uses Подключаемые библиотеки; Label Объявление глобальных меток; Const Объявление глобальных констант; Type Объявление глобальных типов; Var Объявление глобальных переменных;

Раздел текстов процедур и функций

Procedure (Function) Заголовок процедуры(функции) Label Объявление локальных меток; Const Объявление локальных констант; Type Объявление локальных типов; Var Объявление локальных переменных; Begin Основной блок процедуры или функции; End;

Раздел основного блока

Begin Основной блок программы; End. Начнем все по порядку. В этом выпуске рассылке мы будем рассматривать раздел объявлений (декларационная часть), а в следующем все остальное.

Заглавие

Заглавие в Паскале необязательно. Но по правилам хорошего тона в программирование требуют задания имени, чтобы уже при первом знакомстве с программой было представление о её предназначении. Рассмотрим правила записи заглавия(имени). Имя программы записывается в её начало и перед именем должен стоять оператор Program, например: Program Your_first; Program YourFirst; Также нужно учесть что имя программы не должно содержать пробелов (вместо них можно использовать "_"), имена не должны дублироваться(то есть внутри программы не могут быть объявлены объекты, имя которых совпадает с именем программы.)

Глобальные директивы компилятора

В этом разделе мы можем дать указания компилятору, которые будут определять режимы его работы при трансляции последующей программы. Директивы указываются как комментарии и начинаются парой символов "{$" и заканчиваются символом "}" .

Оператор Uses

Оператор Uses играет важную роль в подключении модулей к тексту программы. В этом операторе мы указываем, из какой библиотеки будет использовать модуль в данной программе, чтобы компилятор выбрал нужный модуль из этой библиотеки и включил их в текст программы. Понятия " библиотека ", " модуль " составляют основу терминологии программирования на Паскале. Библиотека состоит из набора модулей, каждый из которых имеет свое имя, компилируется отдельно, подключается как уже "черный ящик " с известным интерфейсом. Каждый модуль(Unit, как его называют в Паскале) представляет собой программу, включающую декларации типов и переменных, процедуры и функции. Не нужно забывать, что оператор Uses может быть использован в программе только один раз, при этом у него есть свое четкое место(он стоит перед всеми прочими операторами и разделами). Названия библиотек, подключаемых к программе с помощью этого оператора, разделяются запятой, например: Uses CRT, Dos, Graph, Overlay;

Объявление глобальных меток, констант, типов и переменных.

Следом за строкой, содержащей оператор Uses, идут строки объявляющие: ·Метки(Label) ·Константы (Const) ·Определенные пользователем типы данных (Type) ·Переменные(Var) В турбо Паскале жесткое соблюдение именно такого порядка объявлений не требуется. На практике в большинстве прогарам часть, заключающая в себе объявления глобальных объектов, непосредственно предшествует основному блоку программы. В разделе описания меток Label содержаться перечисляемые через запятую имена меток переходов. Следует помнить, что имена меток переходов не должны дублировать друг друга. Имя метки перехода может представлять собой целое число (от 0 до 9999), строку символов или символьно-цифровую конструкцию. Например : Label 1, 5, 9999, h2, m10, 4t32e, metka_153. В разделе Const содержаться перечисленные через запятую константы, используемые а программе. Например: Const Year=2002; Month='Апрель'; Day='Понедельник'; Раздел описания типов Type позволяет программисту определить новый тип в программе . В данном разделе могут быть использованы ранее определенные в разделе Const константы. В разделе описания глобальных переменных Var содержится список переменных, используемых в программе, и определяется их тип. Например: Var A,b,c : integer; {переменным a, b, c присваиваэться тип Integer} DDT:Real; {(целое число) а переменной DDT присваивается тип} {Real (вещественное число)} Примечание : Разделы Label, Const, Type, и Var могут располагаться в произвольном месте программы. При этом каждый из этих разделов может встречаться в программе несколько раз или вообще не встречаться в ней.

Исходники

Программа "Калькулятор":

В этот раз мы приведем исходник простого четырех функционального калькулятора. program calc; {Имя программы} var Number_1,Number_2,answer:real; {Переменным присваиваеться тип Real} action:char; {Переменным присваивается тип Char} begin write('Введите первое число '); {Вывод строки} readln(Number_1); {Чтение строки} write('Введите второе число '); readln(Number_2); write('Введите действие '); readln(action); if action= '+' then {Сравнение переменной с символом действия} begin answer:=Number_1+Number_2; writeln('Сумма чисел равна ' ,answer:4:2); end; if action= '-' then begin answer:=Number_1-Number_2; writeln('Разница чисел равна ' ,answer:4:2); end; if action= '*' then begin answer:=Number_1*Number_2; writeln('Произведение чисел равно ' ,answer:4:2); end; if action= '/' then begin if Number_2=0 then writeln('На 0 делить нельзя') else answer:=Number_1 / Number_2; writeln('Частное чисел равно ' ,answer:4:2); end; end. А теперь разберем как оно все работало: Программа Калькулятор. Задаются глобальные переменные. Начало программы. Выводится сообщение на экран монитора. Считывается первое число с переходом на следующею строку. Выводится сообщение на экран монитора. Считывается второе число с переходом на следующею строку. Выводится сообщение на экран монитора. Считывается действие с переходом на следующею строку. Если действие равно "+" тогда ответу присваивается значение первое число + второе число. Выводится сообщение и ответ на экран монитора. Если действие равно "-" тогда ответу присваивается значение первое число - второе число. Выводится сообщение и ответ на экран монитора. Если действие равно "*" тогда ответу присваивается значение первое число * второе число. Выводится сообщение и ответ на экран монитора. Если действие равно "/" тогда если второе число = 0 тогда выводится сообщение с переходом на следующею строку , остальным значениям второго числа ответу присваивается значение первое число * второе число. Выводится сообщение и ответ на экран монитора.

Программа "тест":

В этом исходнике мы приведем пример создания самого простого теста: Program test; const {Задаются глобальные константы} a='Сколько вам лет? '; b='Вы курите?(Отвечать "да" или "нет") '; var {Задаются глобальные переменные} answer_1:integer; answer_2:string; begin write(a); {Выводит константу "а"} readln(answer_1); {Читает первый ответ} if answer_1 > 100 then begin write('НЕ ВРИ!!!'); exit; end; write(b); readln(answer_2); {Читает второй ответ} if(answer_1<18) and (answer_2 = 'Да')or (answer_1<18)and(answer_2 = 'да') then begin writeln('А я, твоей маме расскажу'); end; if (answer_1 > 18) and (answer_2 = 'Да')or (answer_1>18)and(answer_2 = 'да') then begin Writeln('Вам следует задуматься о своём здоровье'); end; if(answer_1 > 0)and (answer_2 = 'Нет') or (answer_2 = 'нет') then begin writeln('Молодец!!! Так держать, тогда всегда будешь в форме!!!'); end; end. А теперь подробно рассмотрим, по какой системе работает эта программа: Программа Тест. Задаются глобальные константы. Задаются глобальные переменные. Начало программы. Выводится на экран монитора константа "а". Считывается первый ответ с переходом на следующею строку. Если первый ответ больше 100 тогда вывести сообщение на екран. Выводится на экран монитора константа "b". Считывается второй ответ с переходом на следующею строку. Если первый ответ меньше 18 и второй ответ = "Да" тогда Выводится сообщение на экран монитора с переходом на следующею строку. Если первый ответ больше 18 и второй ответ = "Да" тогда Выводится сообщение на экран монитора с переходом на следующею строку. Если первый ответ больше 0 и второй ответ = "Нет" тогда Выводится сообщение на экран монитора с переходом на следующею строку. Конец программы.

Ошибки

(В каждом выпуске мы будем рассматривать по 5 ошибок)
1.Out of memory (выход за пределы памяти) Данная ошибка появляется, если компилятор израсходовал всю доступную ему память. Для решения этой проблемы измените значение области Destination с Memory на Disk. Разместите вначале Вашей программы директиву {$L-}, удалите из памяти резидентные программы, в использование которых нет крайней необходимости. Если не одна из рекомендаций не помогает, то, возможно, Ваша программа или программный модуль слишком велик, чтобы компилировать их в таком объеме памяти. В этом случае программу или программный модуль необходимо разбить на две или более программных модуля. 2.Identifier expected (ожидается идентификатор) В этом месте должен находиться идентификатор. 3.Unknown identifier (неизвестный идентификатор) Этот идентификатор не был описан. 4.Duplicate Identifier(повторение идентификатора) 5.Syntax error(синтаксическая ошибка) В исходном тексте найден недопустимый символ. Возможно, не заключена в кавычки строковая константа.

Несколько компьютерных анекдотов

Ага, а мне вот как-то рассказали, как одна барышня звонила на какую-то фирму и ругалась что они ей какой-то не такой софт подсунули, что он не инсталлируется, хотя она все, мол делает в соответствии с инструкцией (а софт ентот с дискет ставился). Ну, послали спеца из фирмы, продавшей этот софт, на месте разобраться what's, собственно, up... Приехал он, а барышня ему и говорит: "Вот у вас в инструкции написано - " вставьте дискету #1", ну я вставила, потом написано вставить дискету #2, ну, говорит, я ее вставила, потом - дискету #3, ну вставила я ее (с трудом, правда) , но вот дискета #4 уже просто в дисковод не лезет!!! " ...на примере какого-то бухгалтерского пакета. В режиме удаления записи на экране появляется подсказка: "Желаете удалить запись ?" [Да] [Hет] По умолчанию подсветка стоит на "Hет" (как и должно быть в режимах удаления). Спрашивают экзаменуемую: "Желаете Вы удалить запись ?". "Да" - отвечает она. "Тогда отвечайте "ДА" и нажимайте на клавишу "Enter" - "ДА" - громко ГОВОРИТ женщина и нажимает на клавишу "Enter". Приехали американцы посмотреть и побольше узнать о наших школах. Ходят, смотрят. Один из них спросил: - Вы используете компьютеры в школах? - Да, с первого класса. Заходят в класс, видят: стоят на подоконнике 4 компьютера. Учительница говорит: - Сидоров, возьми 1 компьютер и поставь его на стол. Дети, сколько компьютеров осталось на подоконнике?

Вопрос-ответ

Вопрос : При программировании и попытке использовать модуль WinCrt, Borland Pascal 7.0 выдаёт ошибку "Error 15: File not found (Wincrt.tpu).". Подскажите, как от неё избавиться ? Ответ : Компилировать под Windows, а не в реальный режим DOS, где WinCRT не может быть по определению. Вопрос: Есть результаты нескольких опытов. Нужно записать их в файл, затем найти из них наибольший и наименьший, и из этих двоих найти среднее значение. Последние два задания не самые сложные. Я не могу понять, как из текстового файла вытянуть цифры???? Помогите, кто может!!! Ответ: Не нужно всяких Val и Str... Если я правильно понял, то чтение происходит из файла типа Text. А это значит, что если указатель этого файла стоит перед цифрой, и из него читается переменная численного типа, то все будет OK даже без Str. Короче это абсолютно тоже самое, что чтение с экрана, поскольку экран - это тоже текстовый файл с именем, не помню каким, кажется Screen, но может и нет. Например, в фале записано следующее: test 100 100 Далее, в разделе var: var f : Text; s1,s2 : string; n : byte; begin ... ReadLn(f,s1); ReadLn(f,n); ReadLn(f,s2); ... end. Таким образом, s1 будет равна 'test', n = 100, s2 = '100'. Все очень просто... PS. Экран - это текстовый файл по умолчанию... Есть еще такие же файлы, например принтер или клава...
Наверх Дополнительную информацию про Pascal можно получить на сайте: Все про Pascal Присылайте ваши вопросы и предложения

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное