Сравнительное изучение языков си и паскаль Л.А.Прокушев Москва 1997 150стр В пособии совместно представлены программные средства языков Паскаль и Си для реализации алгоритмов с целью подчеркивания их ру щественного сходства на начальном этапе изучения языков. Рассмотрены типовые задачи с параллельным представлением текстов программ. .Предназначается для пользователей ЭВМ, владеющих одним из указанных языков программирования, которым необходимо достаточно быстро освоить другой язык, опираясь на подобие этих процедурных структурированных языков. ВВЕДЕНИЕ
Языки программирования предназначены для записи алгоритмов решения задач в- виде программы для ЭВ1\Л. Программа, получив исходные данные, должна за конечное число действий (команд) по обработке информации выдать определенный результат. Для того чтобы изучить язык, необходимо разобраться в том, как этот язык реализует семь основных понятий программирования: ; 1) представление данных разных типов и выделение для них места в оперативной памяти; -
2) ввод данных, т. е. чтение информации, например с клавиатуры или внешних носителей данных;
: 3) вывод результатов (промежуточных и выходных) для пользователя либо запись на внешний носитель данных;
4) последовательное выполнение операций и команд по обработке данных (для реализации последовательных алгоритмов); •'• 5) выполнение операций и команд по заданному условию (для организации ветвящихся алгоритмов); . ,
6) повторное выполнение команд фиксированное количество раз по заданному условию (для организации циклических алгоритмов); v 7) выделение группы команд в поименованный программный мо-• дуль (подпрограмму) и обращение к нему из программы и других подпрограмм (реализация модульного принципа программирования).. * Этими базовыми элементами программирования не исчерпываются возможности развитых алгоритмических языков, но их изучение помогает быстро освоить новый язык и писать на нем программы. Языки программирования Паскаль и Си относятся к числу наибо-. лее популярных и распространенных алгоритмических языков. Они создавались примерно в одно время (в начале 70-х годов), но с разными целями.
Паскаль был разработан Никлаусом Виртом (профессором Швейцарского технического института в Цюрихе) на основе языка Алгол-60 как язык для обучения современным принципам структур-. "ного программирования. Простота и концептуальная стройность языка позволяют его быстро освоить. Развитые средства представления структур данных дают возможность создавать алгоритмически сложные программы, поэтому этот язык полезен для решения разнообразных прикладных задач. Создаваемый как учебный язык, он строго типизирован. Это означает; что транслятор следит за тем, чтобы все " переменные были отнесены к одному из типов данных и использовались в программе в соответствии со своим назначением. Тем са-.мым повышается надежность программ. Оптимизирующие свойства трансляторов позволяют создавать эффективные программы, поэтому Паскаль может использоваться как язык системного программирования.
Свойство открытости к восприятию новых идей в программировании способствовало развитию Паскаля из учебного языка в современный язык профессионального программирования. Прежде всего это относится к разновидностям Паскаля для персональных ЭВМ (ПЭВМ), называемых Турбо Паскаль, которые работают в интегрированной среде программирования.
Турбо среда, разработанная фирмой Борланд, предназначена для полной обработки программ и включает средства для работы с файлами, редактор и отладчик программ, компилятор, компоновщик, средства модульного программирования, библиотеку подпрограмм. Язык Си, разработанный Д.Ритчи в США, предназначался для разработки системного программного обеспечения ЭВМ. В нем реализован компромисс между машинно-ориентированным языком ассемблера (прямой доступ к ячейкам памяти и манипулирование битами) и процедурно-ориентированным языком, который включает все управляющие конструкции структурного программирования.
Такие свойства языка Си, как лаконичность, мощность, гибкость, предоставляют программисту-профессионалу возможность создавать большие структурированные программы любой сложности м назначения, используя принципы и средства модульного программирования (раздельная разработка подпрограмм),
•Однако в отличие от Паскаля, язык Си не является строга типизированным, и его компилятор не контролирует согласование типов данных. Поэтому язык Си не гарантирует надежности программ и ответственность за надежность программного продукта ложится на программиста, что предъявляет высокие требования к его квалификации. На ПЭВМ реализованы версии языка Турбо Си, работающие в Турбо среде.
Таким образом, можно утверждать, что языки Паскаль и Си - это структурированные, модульные, компилируемые, универсальные языки, между которыми много общего, но и немало различий. Паскаль является более последовательным и структурным языком, а Си довольно свободным- и гибким . Паскаль заботится о пользователе лучше, чем Си, и больше подходит для обучения основам, программирования. Турбо Паскаль и Турбо Си по своим возможностям ближе друг к другу, чем Си и Паскаль. Турбо Си добавляет некоторые структуры к Си, а Турбо Паскаль обеспечивает некоторую гибкость Паскалю.
Пользователь, освоивший Турбо Паскаль, может попробовать изучить возможности Турбо Си, чтобы начать быстро писать программы. В свою очередь пользователю, работающему с Турбо Си, ком-
4
пилятор предоставляет возможность включать в программу модули, написанные на Турбо Паскале, поэтому он должен знать, как составляются ПАСКАЛЬ-программы.
Цель данного пособия - сопоставить языки Турбо Паскаль и Турбо Си, выявить сходство и различие представления структур данных и языковых конструкций и проиллюстрировать программные тексты на одинаковых примерах.
В качестве версий языков будем использовать Турбо Паскаль 5.0 и Турбо Си 2.0, который поддерживает проект стандарта языка Си, предложенный Американским национальным институтом стандартов (ANSI). В пособии вместо названий языков указанных версий с целью сокращения будут использоваться обозначения Паскаль и Си. Рамки данного пособия не позволяют представить все возможности языка Си, поэтому для его углубленного изучения следует обратиться к специальным изданиям по этому языку.
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ.....'..,................................................................,...............3
1. БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКОВ ...'................................................5
• 1.1. Алфавит..................................................„...............................5
1.2. Лексемы ...............................'.....................................'.............6
1.3. Идентификаторы...............................................Г....................6
2. ДАННЫЕ И ИХ ТИПЫ...................................................................Г8
е 2.1. Константы............................................................................1Ъ
2.2. Переменные.........)...............................................................16
2.3. Простые типы переменных ..................................................18
2.4. Сложные (составные) типы данных......................................23
3. ОПЕРАЦИИ И ВЫРАЖЕНИЯ............'............................................38
3.1. Интерпретация выражения ..................................................38
3.2. Преобразование типов операндов ......................................42
3.3. Именующие выражения.......................................................44
3.4. Арифметические выражения и операции..................;..........45
3.5. Логические выражения и операции.....................................50
3.6. Поразрядные операции.................................,....................,52
3.7. Операции и оператор присваивания....................................55
3.8. Операция определения размера объекта............................58
3.9. Операции и выражения ^указателями................................58
3.10. Операции с множествами в Паскале .................................64
3.11. Условная операция в Си....................................................65
3.12. Операция последовательного вычисления в Си.................65
ЗЛЗ. Операции и выражения ссылок..........................................66
3.14. Сопоставление операций Паскаля и Си.............................68 >
4. СТРУКТУРА ПРОГРАММ..............................................................69 ;
4.1.Структура программы на Паскале.........................................69
4.2. Структура программы на Си ...»............................................72
5. КОНСОЛЬНЫЙ ВВОД-ВЫВОД ДАННЫХ......................................73 .
5.1. Процедуры ввода-вывода в Паскале....................................74
5.2.Функции ввода-вывода в Си.................................................77
5.3. Соответствие команд ввода-вывода Паскаля и Си...............82
6. РЕАЛИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНЫХ АЛГОРИТМОВ...................83
7. ВЕТВЯЩИЕСЯ АЛГОРИТМЫ........................................................84
7.1.Простые операторы...................:..........................................85
7.2. Условный оператор.........%....................................................87
7.3. Оператор выбора (переключатель)......................................90
8. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ..............................;.......................93
8.1. Оператор цикла с предусловием.........................................93
150
8.2. Оператор цикла с постусловием..........,..............•........."........96
8.3. Оператор цикла FOR .........................•.................................97
8.4. Обработка массивов....................................;....................100
9. МОДУЛЬНЫЙ ПРИНЦИП ПРОГРАММИРОВАНИЯ......................109
' 9.1. Процедуры и функции Паскаля..........................................110
г 9.2. Функции в Си.....................................................................113
> 9.3. Сопоставление подпрограмм и способов передачи
данных в Паскалей Си..................................................................117
9.4. Блочная структура одномодульных программ.................... 121
9.5. Многомодульные программы............................................ 136
ЗАКЛЮЧЕНИЕ...............................................................................149
Библиографический список......................................................... 150
Hosted by uCoz