Основы программирования на языке Паскаль
Основы программирования на языке Паскаль
| |
|Краткий курс лекций |
|"Основы программирования на языке Паскаль" |
| |
| |
|Введение. |
| Прежде всего, следует напомнить, что изучение языка программирования |
|представляет собой знакомство с формальными правилами записи алгоритмов для|
|их последующего выполнения компьютером. Формальность сия проистекает из |
|самих принципов, заложенных в архитектуру вычислительных устройств, и |
|жесткости математической логики. Поэтому, постарайтесь воспринять все |
|довольно строгие правила как неизбежность, настроить себя на серьезную, |
|скрупулезную, порой сложную работу. Однако не стоит бояться, расстраиваться|
|и сетовать на судьбу: немного аккуратности, внимания, знания предыдущего |
|материала - и вы уже программист. |
| |
|Основные понятия. |
| Как и любой алгоритм, являющийся, как вы помните, последовательностью |
|инструкций, программа на языке Паскаль состоит из команд (операторов), |
|записанных в определенном порядке и формате. |
| Команды позволяют получать, сохранять и обрабатывать данные различных |
|типов (например, целые числа, символы, строки символов, т.д.). Однако кроме|
|команд в записи программы участвуют еще так называемые "служебные слова". |
|Это и есть элементы формальности, организующие структуру программы. Их не |
|так много, но их значение трудно переоценить. Служебные слова можно |
|использовать только по своему прямому назначению. Переопределять их не |
|разрешается. |
| Вам уже известно, что основное назначение компьютера - облегчить |
|человеку работу с большими объемами информации, поэтому подавляющее |
|большинство программ построено по одному, довольно простому принципу: |
|получение данных из внешнего мира (ввод), обработка их по соответствующему |
|алгоритму, хранение необходимой информации и вывод во внешний (по отношению|
|к компьютеру) мир полученных результатов. Все эти действия реализуются |
|через имеющиеся в языках программирования команды, алгоритмические |
|структуры и структуры данных. |
| |
|Основная структура программы. |
| Правила языка Паскаль предусматривают единую для всех программ форму |
|основной структуры: |
|Program ; |
| |
|Begin |
| |
|End. |
| Здесь слова Program, Begin и End являются служебными. Правильное и |
|уместное употребление этих слов является обязательным. |
| Угловые скобки в формате указывают на то, что вместо них при реальном |
|программировании должно быть подставлено конкретное значение. Сама запись |
|программы в принципе может производиться вообще в одну стоку. При этом ее |
|части должны отделяться друг от друга хотя бы одним пробелом. Однако, такая|
|запись неудобна для чтения, недостаточно наглядна, поэтому я рекомендую |
|придерживаться приведенной структуры, а в теле программы по возможности |
|записывать по одному оператору в строке. |
| Имя программы выбирается программистом самостоятельно в соответствии с|
|правилами построения идентификаторов. |
| Все объекты, не являющиеся зарезервированными в Паскале, наличие |
|которых обусловлено инициативой программиста, перед первым использованием в|
|программе должны быть описаны. Это производится для того, чтобы компьютер |
|перед выполнением программы зарезервировал память под соответствующие |
|объекты и поставил в соответствие этим участкам памяти идентификаторы. |
|Раздел описаний может состоять из пяти подразделов: |
| 1. Описание меток (Label). |
| 2. Описание типов (Type). |
| 3. Описание констант (Const). |
| 4. Описание переменных (Var). |
| 5. Описание процедур и функций (Procedure, Function). |
| При отсутствии необходимости в каком-либо виде объектов, |
|соответствующий подраздел может быть опущен. |
| |
|Алфавит языка. |
| Основу любого языка составляет алфавит, то есть конечный, |
|фиксированный набор символов, используемых для составления текстов на |
|данном языке (в нашем случае - программ). Конечно, стройность картины |
|немного портит наличие диалектов, создающихся стихийно и очень часто |
|включающих в себя апокрифические (неканонические) буквы и знаки. В |
|программировании эта проблема решается введением понятия "стандарт языка". |
|Оно практически неприменимо к языкам человеческим, вечно развивающимся и |
|изменяющимся. Мы с вами в основном будем говорить о той самодостаточной |
|части языка Паскаль, которая входит в различные его компьютерные реализации|
|в неизменном виде. В плане изучения, я не вижу большого смысла излагать вам|
|строгие правила стандарта, хотя такие существуют. Ограничимся некоторыми |
|замечаниями, раскрывающими все же формальности употребления символов в |
|языке Паскаль. |
| Итак, алфавит языка Паскаль составляют: |
| 1) буквы латинского алфавита; |
| 2) арабские цифры; |
| 3) специальные знаки. |
| Использование символов первой группы чаще всего вопросов не вызывает, |
|но свои тонкости здесь имеются. Во-первых, это употребление заглавных и |
|строчных букв. Большинство существующих трансляторов не различают буквы |
|разных регистров. Таким образом, записи "progRaM" и "PROGram" будем считать|
|идентичными. Во-вторых, некоторые символы латиницы и кириллицы совпадают по|
|начертанию. Нельзя ли вместо буквы "К" латинской написать "K" русскую? |
|Ответ: в тетради (если вы их сможете различить) - пожалуйста, в программе |
|на ЭВМ - ни в коем случае. На вид они может быть и похожи, но уж коды-то у |
|них совершенно разные, а компьютер, как вам известно, оперирует внутри себя|
|не буквами, а их числовыми кодами. |
| По поводу привычных арабских цифр сказать можно только то, что с их |
|помощью записываются не только числа. Цифры в качестве обыкновенных |
|символов могут использоваться в различных других конструкциях языка. |
| Сложнее всего обстоит дело со специальными знаками, поэтому их |
|придется разобрать подробно, иногда забегая вперед, но вы пока можете |
|пропускать мимо ушей непонятные термины, не забывая, однако, записывать все|
|в тетрадь. Потом, при изучении соответствующих структур, вы будете иметь |
|возможность заглянуть в этот раздел для того, чтобы уточнить какой знак в |
|данном месте необходимо использовать. |
| Наиболее часто употребляемым специальным символом является пробел (в |
|значимых местах мы будем обозначать его в записях знаком "V"). Его |
|использование связано с форматами основной структуры программы, разделов |
|описаний, операторов. Не следует путать наличие пробела с отсутствием |
|символа. |
| . конец программы, разделение целой и дробной частей вещественного |
|числа (десятичная точка), разделение полей в переменной типа Record; |
| , разделение элементов списков; |
| .. указание диапазона; |
| : используется в составе оператора присваивания, а также для |
|указания формата вывода в операторе Writeln; |
| ; отделяет один раздел программы от другого, разделяет операторы; |
| ' используется для ограничения строковых констант; |
| - + * / ( ) арифметические знаки (используются по своему |
|назначению); |
| < > знаки отношений; |
| = используется в составе оператора присваивания, в разделах |
|описаний констант и типов, используется как знак отношения (равно); |
| @ имя специального оператора определения адреса переменной, |
|подпрограммы; |
| ^ используется для именования динамических переменных; |
| {} ограничение комментариев в программе; |
| [ ] заключают в себе индексы элементов массивов; |
| _ символ подчеркивания используется также как любая буква, |
|например, в идентификаторах - вместо пробела; |
| # обозначение символа по его коду; |
| $ обозначение директивы компилятора, обозначение шестнадцатеричного|
|числа. |
| Возникает вопрос, а как же быть с русскими буквами и другими знаками, |
|имеющимися на клавиатуре? Некоторые версии Паскаля допускают их |
|использование в программе, но стандарт языка этого не подразумевает. |
|Поэтому включать эти символы в программу можно только в качестве строковых |
|констант или внутри комментария, то есть там, где транслятор при компиляции|
|их игнорирует. При использовании этих знаков в качестве данных, они |
|равноправны со всеми символами, которые может хранить в памяти и |
|обрабатывать компьютер. |
| |
|Идентификаторы. |
| Имена операторов, переменных, констант, типов величин, имя самой |
|программы назначаются программистом и называются в Паскале |
|идентификаторами. Существуют правила, которым должны отвечать все |
|идентификаторы: |
|идентификатор должен быть уникальным, то есть одним и тем же именем разные |
|объекты не могут быть названы; |
|идентификатор имеет ограничение по длине (зависит от конкретной реализации |
|языка на компьютере); |
|идентификатор может состоять только из символов латинского алфавита, цифр и|
|знака подчеркивания ("_"); |
|идентификатор не может начинаться с цифры. |
| |
|Константы. |
| Из всех подразделов описаний сейчас мы рассмотрим только описание |
|констант и переменных, остальные - позже. |
| Вообще говоря, в Паскале константами являются любые явно заданные в |
|программе данные (например, 7493, 'привет', 54.899). Следует обратить ваше |
|внимание на то, что при записи числовых констант с дробной частью эта часть|
|отделяется от целой не запятой, как, возможно, вы привыкли, а точкой. Для |
|записи очень больших по модулю или очень малых (близких к нулю) чисел |
|существует возможность записи их в так называемой экспоненциальной форме. С|
|такой записью вы встречались в математике и физике, но называли ее |
|стандартным видом числа. |
| Пример: 2 . 4 5 6 7 Е - 0 6 |
| ^мантисса ^порядок |
| Здесь буква "Е" отделяет мантиссу (совокупность значащих цифр числа с |
|десятичной точкой после первой) от порядка (показателя степени десятки в |
|стандартном виде числа). Вам предстоит научиться как читать числа в таком |
|виде, так и записывать. |
| Константы, представляющие собой строковые величины, заключаются в |
|апострофы. |
| Если одна и та же величина используется в программе несколько раз, то |
|удобнее было бы обозначить ее каким-нибудь именем и использовать это имя |
|везде, где требуется записать соответствующую константу. Кроме сокращения |
|размера исходного текста программы, это позволит избежать случайных ошибок,|
|а также упростит отладку программы. Описание именованных констант |
|начинается служебным словом Const. Далее следуют записи вида: |
|=; |
|Пример: |
|Const |
|Pi=3.14; |
|Name1='Татьяна'; |
|Name2='Виктор'; |
|R21=6.33187E+03; |
|W_W_W=934122; |
|Понятие переменной. Типы. |
| Данные, как вы знаете, хранятся в памяти компьютера, но для указания |
|на конкретную информацию очень неудобно все время записывать физические |
|адреса ячеек. Эта проблема в языках программирования высокого уровня, в |
|частности в Паскале, решена введением понятия переменной. Переменная в |
|Паскале - именованный участок памяти для хранения данных определенного |
|типа. Значение переменной (информация в соответствующих ячейках памяти) в |
|ходе выполнения программы может быть изменено. Константами же, как вы уже |
|знаете, называются величины, значение которых в ходе выполнения программы |
|изменено быть не может. Конкретные переменные и константы представляют |
|собой объекты уникальные и отличаются друг от друга именем. |
| В качестве данных в программах на языке Паскаль могут выступать числа,|
|символы, целые строки символов. Заметьте, что с этими различными видами |
|информации выполняются совершенно разные действия. Например, с числовыми |
|величинами производятся арифметические операции, чего невозможно сделать с |
|символьными. Кроме того, разные виды данных требуют различного объема |
|памяти для хранения. В соответствии с этими соображениями в языке Паскаль |
|введено понятие "Тип" (TYPE). Тип переменной указывает на то, какие данные |
|могут быть сохранены в этом участке памяти, и в каких действиях эта |
|переменная может участвовать. Существуют зарезервированные (базовые) типы в|
|языке Паскаль, но, как далее вы убедитесь, есть также возможность создавать|
|свои собственные, определяемые программистом типы переменных. |
| К базовым типам относятся: |
|тип целых чисел - Integer |
|тип "длинных" целых чисел - Longint |
|тип действительных (вещественных) чисел (то есть - с дробной частью) - Real|
| |
|тип неотрицательных целых чисел от 0 до 255 - Byte |
|тип неотрицательных целых чисел от 0 до 65535 - Word |
|символьный тип - Char |
|строковый тип - String |
|логический тип - Boolean |
| Физически типы данных отличаются друг от друга количеством ячеек |
|памяти (байтов), отводимых для хранения соответствующей переменной. |
|Логическое же отличие проявляется в интерпретации хранящейся информации. |
|Например, переменные типа Char и типа Byte занимают в памяти по одному |
|байту. Однако в первом случае содержимое ячейки памяти интерпретируется как|
|целое беззнаковое число, а во втором - как код (ASC) символа. |
| В отличие от констант, неименованных переменных не существует. Все |
|используемые в программе переменные должны быть описаны в соответствующем |
|разделе описания. |
| Раздел описания переменных начинается служебным словом Var, после |
|которого следуют записи следующего вида: :; |
| Список может состоять из нескольких имен (при этом они разделяются |
Страницы: 1, 2, 3, 4, 5
|