WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 | 4 | 5 |   ...   | 10 |
Камчатский государственный технический университет Кафедра информационных систем В.В. Портнягина, Н.Н. Портнягин ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ TURBO PASCAL Часть 2 Рекомендовано Дальневосточным региональным учебно-методическим центром (ДВ РУМЦ) в качестве учебно-методического пособия (практикума) для студентов специальности 220201 «Управление и автоматика в технических системах» вузов региона Петропавловск-Камчатский 2007 УДК 681.3(075.8) ББК 32.973-018 П60 Рецензенты:

И.Г. Проценко, доктор технических наук, заместитель директора по научной работе Камчатского центра связи и мониторинга А.С. Латкин, доктор технических наук, профессор заместитель директора по научной работе НИГТЦ ДВО РАН Портнягина В.В., Портнягин Н.Н.

П60 Практикум по программированию на языке Turbo Pascal. Часть 2: Учебно-методическое пособие (практикум). – Петропавловск-Камчатский: КамчатГТУ, 2007. – 127 с.

ISBN 978–5–328–00128–1 Практикум предназначен для приобретения практических навыков алгоритмизации задач и программирования на языке Turbo Pascal в соответствии со стандартами и действующей рабочей программой специальности 220201 «Управление и автоматика в технических системах».

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

Практикум содержит около 300 вопросов и задач, 50 упражнений для самостоятельного решения, систематизированных в соответствии с темами и объединенных в десяти лабораторных работах.

УДК 681.3(075.8) ББК 32.973-018 ISBN 978–5–328–00128–1 © КамчатГТУ, 2007 © Авторы, 2007 2 Содержание Введение................................................................................. 4 Лабораторная работа № 1.

Текстовый тип данных.......................................................... Лабораторная работа № 2.

Перевод чисел из одной системы счисления в другую систему числения с использованием операторов обработки символьной информации............... Лабораторная работа № 3.

Перечислимый и интервальный типы данных................... Лабораторная работа № 4.

Множественный тип данных (I)........................................... Лабораторная работа № 5.

Множественный тип данных(II).......................................... Лабораторная работа № 6.

Тип данных – запись (I)........................................................ Лабораторная работа № 7.

Тип данных – запись (II)....................................................... Лабораторная работа № 8.

Процедуры и функции.......................................................... Лабораторная работа № 9.

Организация программ с использованием подпрограмм и функций....................................................... Лабораторная работа № 10.

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

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

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

вопросы численного программирования – вычисление определенного интеграла методом Симпсона.

В лабораторной работе № 1 рассматриваются задачи обработки текстовых данных.

В лабораторной работе № 2 рассматриваются вопросы перехода из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную и обратно.

В лабораторной работе № 3 рассматриваются программы с использованием перечисляемого и интервального типов данных.

Лабораторная работа № 4, Лабораторная работа № 5 – теория и упражнения посвящены типу данных множество.

В лабораторной работе № 6 рассматривается способ организации данных В лабораторной работе № 6, лабораторной работе № рассматриваются способы организации данных с помощью типа данных запись.

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

В лабораторной работе № 9 приведены 16 вариантов задач (по три в каждом варианте) для самостоятельного решения, которые предполагают использование подпрограмм и функций.

В лабораторной работе № 10 описан численный метод и алгоритм вычисления определенного интеграла по методу Симпсона.

В каждой из работ приведены вопросы для защиты соответствующей лабораторной работы и для контроля понимания студентом пройденной темы.

ЛАБОРАТОРНАЯ РАБОТА № ТЕКСТОВЫЙ ТИП ДАННЫХ Цель работы 1. Получение навыков в написании программ, содержащих символьную и строковую информацию на языке Паскаль.



2. Подпрограммы стандартных библиотек Теоретический материал 1. Общие положения Pascal оперирует с символьной информацией, которая может быть представлена отдельными символами или строками символов.

2. Символьные данные Для хранения и обработки отдельных символов используются переменные типа Char. Символьные данные могут быть либо константами, либо переменными. Переменная символьного типа должна быть объявлена в разделе описания переменных так:

<Имя> : Char ; где имя – имя переменной символьного типа;

Пример 1.

VAR OTV: Char ; {переменной OTV присвоен тип Char} CH: Char ; {переменной CH присвоен тип Char} Значениями типа Char служат все символы, которые могут высветиться на экране дисплея: цифры, буквы, знаки операций, специальные символы и т. д. Переменная, объявленная как Char, может принимать значение только одного символа.

Переменная типа Char может получить значение в результате выполнения операции присваивания или ввода (Read, ReadLn).

2.1. Таблица кодирования символов Все символы упорядочены, то есть каждый из них имеет свой порядковый номер – код. Для кодировки символов используется код ASCII (American Standard Code For InFormation Interchange – американский стандартный код для обмена информацией). Для хранения символа отводится один байт. Мы имеем возможность закодировать 256 символов в диапазоне 0..255 Символы с кодами 0..31 относятся к служебным кодам.

Таблица Базовая таблица кодировки ASCII 32 48 0 64 @ 80 P 96 ` 112 p 33 ! 49 1 65 A 81 Q 97 a 113 q 34 “ 50 2 66 B 82 R 98 b 114 r 35 # 51 3 67 C 83 S 99 c 115 s 36 $ 52 4 68 D 84 T 100 d 116 t 37 % 53 5 69 E 85 U 101 e 117 u 38 & 54 6 70 F 86 V 102 f 118 v 39 ‘ 55 7 71 G 87 W 103 g 119 w 40 ( 56 8 72 H 88 X 104 h 120 x 41 ) 57 9 73 I 89 Y 105 i 121 y 42 * 58 : 74 J 90 Z 106 j 122 z 43 + 59 ; 75 K 91 [ 107 k 123 { 44, 60 < 76 L 92 \ 108 l 124 45 - 61 = 77 M 93 ] 109 m 125 } 46. 62 > 78 N 94 ^ 110 n 126 ~ 47 / 63 79 O 95 _ 111 o 2.2. Запись символов, специальные и управляющие символы В том случае, если в программе требуется использовать значение символьной переменной или константы, его необходимо заключить в апострофы или записать с использованием знака #, за которым следует код символа.

Например, 'А' обозначает букву А, ';' – точку с запятой, ' ' – пробел, #32 или #$20 являются также символами пробела (32 – это код, соответствующий пробелу, а шестнадцатеричное число 20 равно десятичному 32).

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

– #07 (BEL) – подача короткого звукового сигнала;

– #08 (BS) – удаление символа слева от курсора и смещение курсора на одну позицию назад, соответствует клавише ;

– #09 (НТ) – горизонтальная табуляция: смещение курсора в позицию, кратную 8, плюс 1 (9, 17, 25 и т. д.), соответствует клавише <Таb>;

– #10 (LF) – перевод строки, курсор смещается по вертикали вниз на одну строку;

– #11 (VT) – вертикальная табуляция;

– #12 (FF) – прогон страницы;

– #13 (CR) – возврат каретки или перевод строки, выполняет перемещение курсора в начало следующей строки экрана (соответствует клавише );

– #26 (SUB) – конец файла, вводится нажатием комбинации клавиш + ;

– #27 (ESC) – конец работы, символ соответствует клавише ;

– #32 (ВL) – пробел и т. д.

2.3. Операции отношения Переменную типа Char можно сравнить с другой переменной типа Char или с символьной константой. Результатом операции сравнения является логическая константа TRUE (истина) или FALSE (ложь). Сравнение основано на том, что каждому символу поставлено в соответствие число, причем символу '0' соответствует число меньшее, чем символу '9', символу 'А' – меньшее, чем 'В' и т. д. Таким образом, можно записать: ' 0 ' < ' 1 ' <... ' 9 '... < ' A ' < ' B ' <... < ' Z ' <.

' a ' < ' b ' <...< ' z '. Символам русского алфавита соответствуют числа большие, чем символам латинского алфавита, при этом справедливо следующее: ' А ' < ' Б ' < ' С '... < ' Ю ' < ' Я ' < ' а ' < ' б ' < ' в '<... < ' э ' < ' ю ' < ' я '.

Строчные латинские буквы идут друг за другом, не перемешиваясь с другими символами, точно также прописные буквы, цифры, русские буквы строчные и прописные. Из всех символов составлен список, и из двух символов меньше тот, который встречается в списке раньше (a > b, a < b, a < > b).

Мы можем использовать упорядоченность множества символов и, в случае необходимости, объявлять переменную цикла со счетчиком типом Char:

For k : = ' а ' To ' z ' Do;

2.4. Встроенные функции К символьным данным (тип Char) можно применять встроенные функции (см. таблицу 2).

Таблица Имя Тип Наименование Тип аргумента функции результата Возвращает значение Chr (x ) Byte Символьный символа по его коду Возвращает порядковый Ord (ch ) Символьный Целый тип номер Возвращает значение, Pread ( ch ) Символьный Символьный которое соответствует Ord (x ) – 1 (предыдущий символ) Возвращает значение, Succ ( ch ) Символьный Символьный которое соотв. Ord (x ) + (следующий символ) Преобразует строчную Upcase ( ch ) Символьный Символьный букву в заглавную. Обрабатывает только буквы латинского алфавита.

Пример 2.

– Ord (' A ') = 65 – функция возвращает код заглавной латинской буквы А (65).





– Chr (128) = ' Б ' – функция возвращает заглавную русскую букву ( Б ).

– Pread (' Б ') = ' А ' – функция возвращает букву А, предыдущую по отношению к букве Б.

– Succ (' Г ') = ' Д ' – функция возвращает букву Д, следующую по отношению к букве Г.

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

Задача Написать программу, выводящую на экран символы с кодами от32 до 255.

Program Lab1_1;

Uses Crt;

Var k : Byte;

Begin ClrScr;

For k : = 32 To 255 Do WriteLn (Chr (k), ' ');

ReadLn;

End.

Протокол работы программы: ! “ # $ % & ‘ ( ) * +, -. / 0 1 2 3 4 5 6… и так далее.

Пояснения к программе. В цикле выводим значения параметра цикла k типа Byte. Этот параметр пробегает значения от 32 до 255, задающие коды выводимых символов. На каждой итерации этого цикла на основании значения параметра цикла определяется сам символ с помощью стандартной функции Chr, затем этот символ и пробел (помещенные в одинарные кавычки), выводятся на экран.

3. Строковый тип данных String Строка – это последовательность символов кодовой таблицы ASCII. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться в пределах от 0 до 255. Для определения данных строкового типа используется идентификатор String, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки принимается равной 255 байтам.

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

Type <имя типа> = String [максимальная длина строки];

Var <идентификатор> : < имя типа >;

Переменную типа String можно задать и без описания типа: Var <идентификатор> : String [максимальная длина строки];

Определение строкового типа устанавливает максимальное количество символов, которое может содержать строка.

Строковые данные могут использоваться в программе также в качестве констант. Не допускается применение строковых переменных в качестве селектора в операторе Case.

Пример 3.

Const Address = ' ул. Переверткина, 25 ' ; {Строковая константа} Type Flot = String [125] ; {Длина строки 125 символов} Var Fstr : Flot ; {Описание с заданием типа} Stl : String ; {По умолчанию длина строки – 255} St2 : String [50] ; {Длина строки – 50} Nazv : String [280] ; {Ошибка, длина Nazv превышает 255} Тип String похож на одномерный массив символов, но в отличие от массива символов, количество символов в строке может меняться от 0 до N. К любому символу в строке можно обратиться так же, как к элементу массива, т.е. указав рядом с именем переменной типа String, в квадратных скобках индекс символа в строке.

Пример 4.

St [2] – 2-ой символ в строке St;

St [i] –i-ый символ в строке St.

3.1. Внутреннее представление строки В самом начале строки (под нулевым номером) расположен байт, содержащий значение текущей длины строки.

Поэтому для определения объема памяти в байтах, требуемой для размещения строки, к значению ее максимальной длины прибавляется 1. Например, для размещения в памяти переменных Fstr, St2 требуется соответственно 126 байтов и 51 байт.

3.2. Операции над строками Для строк применимы операции: операция объединения строк (конкатенация) и операция сравнения.

Операция объединения строк обозначается знаком плюс (но это не сложение).

Пример 5.

St1 : = ' abed ' ;

St2 : = ' efk ' ;

St := Stl + St2 ;

Результат работы функции: St содержит 'abedefk'.

Если длина результирующей строки превысит допустимую длину (255), то «лишние» символы отбрасываются.

Перечислим операции сравнения: =, > =, >, < >, <, <=.

Сравнивать можно строки разной длины. Сравнение осуществляется слева направо в соответствии с ASCII кодами символов. Считается, что отсутствующие символы в более короткой строке имеют код, меньше кода любого действительного символа. Например, 'АВ' больше, чем 'А'.

3.3. Строковые встроенные функции Тип данных String используется при обработке текстов, а это означает, что нам необходимо уметь:

– копировать часть строки;

– удалять часть строки;

– вставлять подстроку (т. е. часть строки) в данную строку;

– осуществлять поиск подстроки (т. е. часть строки) в данной строке.

Для реализации этих операций в Турбо-Паскале существуют стандартные процедуры и функции (см. табл. 3).

Таблица Функции и процедуры Назначение 1 Length (Z: String): Integer Возвращает текущую длину строки Z Concat (Zi, [Z2,..., Zn] : String) : Возвращает слияние (конкатенацию) String; строк Z1, Z2,..., Zn.

Copy (Z: String; Index: Integer; Возвращает подстроку строки Z длиной Count: Integer): String; Count, начинающуюся с позиции Index.

Окончание табл. 1 Pos (Substr: String; Z: String): Определяет первое вхождение подстроByte; ки Z в строку Substr и возвращает 0, если Z не содержит Substr или номер первого символа Substr в Z.

Insert (Source: String; Var Z : Вставляет в строку Z подстроку Source, String;Index : Integer); начиная с позиции Index.

Delete (Var Z: String; Index: Удаляет из строки Z подстроку длиной Integer; Count: Integer); Count, начинающуюся с позиции Index.

Pages:     || 2 | 3 | 4 | 5 |   ...   | 10 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.