
- •2 Сравнительный анализ языков программирования высокого уровня Си и Паскаль
- •2.1 Структура программы
- •2.2.2 Пользовательские типы
- •2.3 Арифметические операции
- •Окончание таблицы 2.3.1
- •Окончание таблицы 2.3.2
- •2.4 Указатели и векторные типы данных
- •2.5.2 Операторы-переключатели
- •2.6.2 Безусловный переход
- •2.7 Пользовательские подпрограммы
- •2.8 Итоги анализа сравнения языков программирования Паскаль и Си
- •3.2 Реализация задания
- •3.3 Алгоритмы, реализованные в процессе решения задачи
Министерство образования и науки Российской федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра ЭМИС
Пояснительная записка к курсовой работе по дисциплине «Программирование»
на тему: «Создание программы для работы с последовательностями»
Оценка:_________________ |
Выполнил: студент гр. 891 _________________П.Жарков «____»______________ 2012г. Проверил: Старший преподаватель ____________А.А.Матолыгин «____»______________ 2012г. |
2012
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра ЭМИС
ЗАДАНИЕ
По курсовому проектированию по дисциплине |
Программирование |
|||||||||
Студенту |
Жаркову П. |
|||||||||
Группа |
891 |
Факультет |
ЭФ |
|||||||
1. Тема: |
Создание программы для работы с последовательностями |
|||||||||
2. Срок защиты студентом курсовой работы (проекта): |
|
|||||||||
3. Исходные данные к заданию: |
|
|||||||||
1. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание |
||||||||||
языка / Пер. с англ., предисл. И послесл. Д. Б. Подшивалова. – М: Финансы |
||||||||||
и статистика, 1982. – 151 с., ил. |
||||||||||
2. Брайан Керниган, Деннис Ритчи. Язык программирования C. – Москва: |
||||||||||
Вильямс, 2006. — 304 с. |
||||||||||
4. Перечень подлежащих разработке вопросов: |
|
|||||||||
|
||||||||||
|
||||||||||
элементов. |
||||||||||
|
||||||||||
5. Структура пояснительной записки: |
|
|||||||||
1. Введение |
||||||||||
2. Сравнительный анализ языков высокого уровня Паскаль и Си |
||||||||||
3. Реализация проекта |
||||||||||
4. Выводы |
||||||||||
5. Приложение (справочное): исходный код программы |
||||||||||
6. Дата выдачи задания: |
|
|||||||||
Руководитель: |
|
Матолыгин А.А. |
||||||||
|
Подпись |
|
||||||||
Задание принял к исполнению (дата) |
|
|||||||||
|
|
Жарков П. |
||||||||
|
Подпись студента |
|
Содержани
1 Введение 5
2 Сравнительный анализ языков программирования высокого уровня Си и Паскаль 6
2.1 Структура программы 6
2.2 Типы данных 9
2.2.1 Стандартные типы 9
2.2.2 Пользовательские типы 12
2.3 Арифметические операции 14
2.4 Указатели и векторные типы данных 18
2.5 Операторы ветвления 20
2.5.1 Условные операторы с несколькими условиями 20
2.5.2 Операторы-переключатели 21
2.6 Циклы 23
2.6.1 Организация операторов циклов 23
2.6.2 Безусловный переход 25
2.7 Пользовательские подпрограммы 26
2.8 Итоги анализа сравнения языков программирования Паскаль и Си 28
3 Практическая реализация задания 29
3.1 Описание задачи и ограничений на ее выполнение 29
3.2 Реализация задания 30
3.3 Алгоритмы, реализованные в процессе решения задачи 34
Заключение 36
Список использованных источников 37
1 Введение
В современную эпоху компьютеризации и информатизации перед обществом встает задача реализации все более и более сложных алгоритмов обработки потоков данных в кратчайшие сроки [1]. Реализацией этой задачи занимаются инженеры различных специальностей во всем мире. Для решения той или иной задачи в сфере информатики решаются следующие подзадачи:
-
постановка задачи;
-
сбор данных, необходимых для решения задачи;
-
реализация алгоритма обработки данных;
-
трансляция алгоритма в структуру, способную решить поставленный алгоритм – программу или пакет программ;
-
тестирование и отладка программы или пакета программ;
-
применение программы или пакета программ к поставленной задаче;
-
анализ полученных результатов.
Для создания программы, способной решать поставленные задачи, используются различные языки программирования. На данный момент в мире существует большое количество языков программирования разных уровней, отличающихся друг от друга не только по синтаксису, но и по структуре работы с данными. В качестве объекта исследования для получения информации о возможностях функционально – ориентированных языков программирования высокого уровня будут рассматриваться два характерных представителя языков этого класса – Паскаль и Си. В сравнительном анализе этих двух языков необходимо будет определить характерные особенности в их структуре и выделить из них наиболее удобный в плане реализации поставленных задач.
2 Сравнительный анализ языков программирования высокого уровня Си и Паскаль
Язык высокого уровня [2] - тип языка компьютерного программирования. Языки высокого уровня предназначены для выражения потребностей программиста, а не возможностей компьютера. Они используют абстрактные данные и контролируют структуры, символические обозначения и переменные. Существует много языков высокого уровня, в том числе Бейсик (BASIC), Кобол (COBOL), Паскаль (Pascal), Фортран (FORTRAN), Алгол (Algol) и Си (C). Чтобы можно было использовать программы, написанные на языках высокого уровня, их нужно перевести в машинные коды. Рассмотрим в противопоставлении языки высокого уровня Си и Паскаль.
2.1 Структура программы
Для определения множеств имен переменных используется понятие идентификатора [3]. Идентификаторами в Паскале является произвольный набор символов. Требования к идентификаторам:
-
идентификатор состоит из латинских букв и цифр (заглавные и строчные буквы не различаются);
-
идентификатора должен начинаться обязательно с буквы ("а1", а не "1а");
-
идентификатор может состоять из любого количества символов, но распознаются только первые 63;
-
служебные слова запрещается использовать в качестве идентификаторов.
Программа составляется из операторов Паскаля, которые разделяются символом ";". Для выделения группы операторов используют операторные скобки: begin…..end. Несколько операторов, заключенных в операторные скобки, называют составным оператором. В тексте программы фигурными скобками выделяются комментарии, которые игнорируются при выполнении программы. В тексте лекций будем также использовать фигурные скобки для комментирования.
Структура программы на языке Турбо Паскаль:
-
заголовок, название программы;
-
подключение внешних модулей;
-
описание констант;
-
задание типов;
-
раздел объявления переменных;
-
описание функций;
-
описание процедур;
-
начало основной программы;
-
тело основной программы;
-
конец основной программы.
Переменные, объявленные внутри основного блока программы, помещаются в сегмент данных и инициализируются нулем компилятором; переменные, объявленные внутри подпрограмм, объявляются внутри сегмента стека и не инициализируются. Все тело программы представляет собой жесткую конструкцию, в которую нельзя вносить никаких изменений без потери работоспособности проекта.
Структура Си-программ [4]. Идентификатором в языке Си называется последовательность цифр, букв и специальных символов. При этом первой стоит буква или специальный символ. Для получения идентификаторов можно использовать строчные или прописные буквы латинского алфавита. Специальным символом может служить символ подчеркивания «_».
Два идентификатора, для получения которых применяются совпадающие строчные и прописные буквы, считают различными. К примеру: abc, ABC, A328B, a328b. Компилятор допускает всякое количество символов в идентификаторе, но значим только первый 31 символ. Идентификатор образуется на этапе объявления переменной, функции, структуры и т. п. После этого его можно применять в последующих операторах разрабатываемой программы. Важно отметить некоторые особенности при выборе идентификатора. Во-первых, идентификатор и ключевое слово не должны совпадать. Также не должно быть совпадения с зарезервированными словами и названиями функций библиотеки компилятора языка СИ.
Во-вторых, важно обратить особое внимание на применение символа подчеркивания «_» первым символом идентификатора, так как идентификаторы выстраиваются так, что, с одной стороны, могут совпадать с именами системных функций и «или» переменных, но при этом при применении таких идентификаторов программы могут стать непереносимыми, т. е. их нельзя применять на компьютерах других типов.
В-третьих, на идентификаторы, применяемые для определения внешних переменных, должны быть наложены ограничения, которые формируются используемым редактором связей. Кроме того, использование различных версий редактора связей или различных редакторов определяет различные требования на имена внешних переменных.
Ключевыми словами называются зарезервированные идентификаторы, наделенные определенным смыслом. Их можно применять только в соответствии со значением, известным компилятору языка СИ. Приведем список ключевых слов: auto double int struct break else long switch register tupedef char extern return void case float unsigned default for signed union do if sizeof volatile continue enum short while. При этом в определенных версиях реализации языка СИ зарезервированными словами являются следующие: _asm, fortran, near, far, cdecl, huge, pascal, interrupt. Ключевые слова far, huge, near дают возможность определить размеры указателей на области памяти.
Ключевые слова _asm, cdecl, fortran, pascal используются для организации связи с функциями, которые написаны на других языках, а также для применения команд языка ассемблера непосредственно в теле будущей программы на языке СИ. Ключевые слова не могут применяться в качестве идентификаторов.
2.2 Типы данных
2.2.1 Стандартные типы
В Паскале все переменные должны объявляться в специально отведенном для этого месте – до начала блоковых скобок программы или функции и после ключевого слова var. Так же объявляются собственные типы (после ключевого слова type). Объявление переменных стандартного типа: идет допустимое название переменной, затем после двоеточия тип данных, хранящихся в этой переменной. Типы данных Паскаля перечислены в таблицах 2.2.1 - 2.2.3 [5].
Таблица 2.2.1 - Целочисленные типы в Паскале
Тип |
Диапазон |
Знаковость |
Размер в байтах |
Byte |
0 .. 255 |
Unsigned |
1 |
ShortInt |
-128 .. 127 |
Signed |
1 |
SmallInt |
-32768 .. 32767 |
Signed |
2 |
Word |
0 .. 65535 |
Unsigned |
2 |
Integer |
-32768 .. 32767 |
Signed |
2 |
Cardinal |
0 .. 4294967295 |
Unsigned |
4 |
LongWord |
0 .. 4294967295 |
Unsigned |
4 |
LongInt |
−2147483648 .. 2147483647 |
Signed |
4 |
Таблица 2.2.2 – Вещественные типы в Паскале
Тип |
Диапазон |
Значащих цифр |
Размер в байтах |
Single |
|
7-8 |
4 |
Double |
Зависит от платформы |
- |
8 |
Real |
Зависит от платформы |
- |
6 |
Extended |
|
19-20 |
10 |
Таблица 2.2.3 - Специальные типы в Паскале
Тип |
Значения |
Размер в байтах |
Char |
0..255 (символы ASCII) |
1 |
String |
Строки не длиннее 255 символов |
1..256 |
Boolean |
true/false |
1 |
Pointer |
Указатель |
4 |
Не все типы данных поддерживаются компиляторами по умолчанию. К примеру, компилятор Borland Pascal 7.0 MS-DOS требует подключения математического сопроцессора для использования типа данных EXTENDED. Также есть особенность с использованием типа CHAR – несмотря на то, что он целочисленный, его нельзя использовать в математических выражениях, так как он является сугубо контейнером для символов. Тип BOOLEAN может содержать константные выражения TRUE и FALSE, соответствующие логическим 0 и 1, но при этом он занимает полный байт. Тип STRING ведет себя как массив элементов типа CHAR, но при этом длина этого массива хранится в нулевом элементе; этим объясняется ограниченность длины 255 символами. Также в языке Паскаль есть специальный тип указателя POINTER, характеризующийся отсутствием адреса переменной.
Типы данных Си отличаются структурированностью относительно типов в Паскале: все названия целочисленных типов представляется как комбинация ограниченного количества ключевых слов, из которой можно сразу сделать вывод о характере хранимого типа. К примеру, тип unsigned short int обозначает беззнаковое короткое целое число. Вещественных типов намного меньше, чем в Паскале (их три), и для их работы не требуется дополнительных настроек компилятора. Типы данных Си приведены в таблицах 2.2.4 и 2.2.5 [6].
Таблица 2.2.4 - Целые типы в Си
Тип |
Диапазон |
Размер в байтах |
(signed) char |
-128...127 |
1 |
unsigned char |
0…255 |
1 |
(signed) short (int) |
-32768…32767 |
2 |
unsigned short (int) |
0…65535 |
2 |
(signed) long (int) |
−2147483648 .. 2147483647 |
4 |
unsigned long (int) |
0 .. 4294967295 |
4 |
(signed) int |
Зависит от компилятора |
2/4 |
unsigned (int) |
Зависит от компилятора |
2/4 |
Таблица 2.2.5 - Вещественные типы в Си
Тип |
Диапазон |
Размер в байтах |
Float |
|
4 |
Double |
|
8 |
long double |
|
10 |
В языке Си отсутствуют специальные символьные типы; тип char может интерпретироваться как математическое значение или символ, в зависимости от использования. Специального типа для строк нет; строки представляются в виде массивов элементов типа char, концом строки считается первый с начала строки элемент, содержащий ноль. Вследствие этого в системе MS-DOS длина строк ограничена только размером сегмента (64 Кбайт). Логических типов в Си также нет; вместо этого реализована система, в которой любое целое число может быть представлено в виде логической константы: все, что не «0», эквивалентно истинному высказыванию, иначе ложному. В результате в Си возможно использовать математические выражения в качестве логических и наоборот, что добавляет гибкости языку. Типа аналогичного POINTER нет, взамен предоставлена гибкая система указателей, зависящих от типа разыменованного значения. Зато есть тип void, который характеризует отсутствие возвращаемого значения.