Сравнительный анализ языков программирования высокого уровня Си и Паскаль — КиберПедия 

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

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Сравнительный анализ языков программирования высокого уровня Си и Паскаль

2020-03-31 880
Сравнительный анализ языков программирования высокого уровня Си и Паскаль 0.00 из 5.00 0 оценок
Заказать работу

Содержание

Введение

1. Сравнительный анализ языков программирования высокого уровня Си и Паскаль

1.1 Структура программы

1.2 Типы данных

1.2.1 Стандартные типы

1.2.2 Пользовательские типы

1.3 Арифметические операции

1.4 Указатели и векторные типы данных

1.5 Операторы ветвления

1.5.1 Условные операторы с несколькими условиями

1.5.2 Операторы-переключатели

1.6 Циклы

1.6.1 Организация операторов циклов

1.6.2 Безусловный переход

1.7 Пользовательские подпрограммы

1.8 Итоги анализа сравнения языков программирования Паскаль и Си

2 Практическая реализация задания

2.1 Описание задачи и ограничений на ее выполнение

2.2 Реализация задания

2.3 Алгоритмы, реализованные в процессе решения задачи

Заключение

Список использованных источников

 


 

Введение

 

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

·   постановка задачи;

·   сбор данных, необходимых для решения задачи;

·   реализация алгоритма обработки данных;

·   трансляция алгоритма в структуру, способную решить поставленный алгоритм - программу или пакет программ;

·   тестирование и отладка программы или пакета программ;

·   применение программы или пакета программ к поставленной задаче;

·   анализ полученных результатов.

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


 

Сравнительный анализ языков программирования высокого уровня Си и Паскаль

 

Язык высокого уровня - тип языка компьютерного программирования. Языки высокого уровня предназначены для выражения потребностей программиста, а не возможностей компьютера. Они используют абстрактные данные и контролируют структуры, символические обозначения и переменные. Существует много языков высокого уровня, в том числе Бейсик (BASIC), Кобол (COBOL), Паскаль (Pascal), Фортран (FORTRAN), Алгол (Algol) и Си (C). Чтобы можно было использовать программы, написанные на языках высокого уровня, их нужно перевести в машинные коды. Рассмотрим в противопоставлении языки высокого уровня Си и Паскаль.

 

Структура программы

 

Для определения множеств имен переменных используется понятие идентификатора [3]. Идентификаторами в Паскале является произвольный набор символов. Требования к идентификаторам:

·   идентификатор состоит из латинских букв и цифр (заглавные и строчные буквы не различаются);

·   идентификатора должен начинаться обязательно с буквы ("а1", а не "1а");

·   идентификатор может состоять из любого количества символов, но распознаются только первые 63;

·   служебные слова запрещается использовать в качестве идентификаторов.

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

Структура программы на языке Турбо Паскаль:

·   заголовок, название программы;

·   подключение внешних модулей;

·   описание констант;

·   задание типов;

·   раздел объявления переменных;

·   описание функций;

·   описание процедур;

·   начало основной программы;

·   тело основной программы;

·   конец основной программы.

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

Структура Си-программ [4]. Идентификатором в языке Си называется последовательность цифр, букв и специальных символов. При этом первой стоит буква или специальный символ. Для получения идентификаторов можно использовать строчные или прописные буквы латинского алфавита. Специальным символом может служить символ подчеркивания «_».

Два идентификатора, для получения которых применяются совпадающие строчные и прописные буквы, считают различными. К примеру: abc, ABC, A328B, a328b. Компилятор допускает всякое количество символов в идентификаторе, но значим только первый 31 символ. Идентификатор образуется на этапе объявления переменной, функции, структуры и т. п. После этого его можно применять в последующих операторах разрабатываемой программы. Важно отметить некоторые особенности при выборе идентификатора. Во-первых, идентификатор и ключевое слово не должны совпадать. Также не должно быть совпадения с зарезервированными словами и названиями функций библиотеки компилятора языка СИ.

Во-вторых, важно обратить особое внимание на применение символа подчеркивания «_» первым символом идентификатора, так как идентификаторы выстраиваются так, что, с одной стороны, могут совпадать с именами системных функций и «или» переменных, но при этом при применении таких идентификаторов программы могут стать непереносимыми, т. е. их нельзя применять на компьютерах других типов.

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

Ключевыми словами называются зарезервированные идентификаторы, наделенные определенным смыслом. Их можно применять только в соответствии со значением, известным компилятору языка СИ. Приведемсписокключевыхслов: auto double intstruct 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 используются для организации связи с функциями, которые написаны на других языках, а также для применения команд языка ассемблера непосредственно в теле будущей программы на языке СИ. Ключевые слова не могут применяться в качестве идентификаторов.

 

Типы данных

Стандартные типы

В Паскале все переменные должны объявляться в специально отведенном для этого месте - до начала блоковых скобок программы или функции и после ключевого слова 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

 

Не все типы данных поддерживаются компиляторами по умолчанию. К примеру, компилятор BorlandPascal 7.0 MS-DOS требует подключения математического сопроцессора для использования типа данных EXTENDED. Также есть особенность с использованием типа CHAR- несмотря на то, что он целочисленный, его нельзя использовать в математических выражениях, так как он является сугубо контейнером для символов. Тип BOOLEANможет содержать константные выражения TRUEи FALSE, соответствующие логическим 0 и 1, но при этом он занимает полный байт. Тип STRINGведет себя как массив элементов типа CHAR, но при этом длина этого массива хранится в нулевом элементе; этим объясняется ограниченность длины 255 символами. Также в языке Паскаль есть специальный тип указателя POINTER, характеризующийся отсутствием адреса переменной.

Типы данных Си отличаются структурированностью относительно типов в Паскале: все названия целочисленных типов представляется как комбинация ограниченного количества ключевых слов, из которой можно сразу сделать вывод о характере хранимого типа. К примеру, тип unsignedshortint обозначает беззнаковое короткое целое число. Вещественных типов намного меньше, чем в Паскале (их три), и для их работы не требуется дополнительных настроек компилятора. Типы данных Си приведены в таблицах 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
longdouble 10

 

В языке Си отсутствуют специальные символьные типы; тип char может интерпретироваться как математическое значение или символ, в зависимости от использования. Специального типа для строк нет; строки представляются в виде массивов элементов типа char, концом строки считается первый с начала строки элемент, содержащий ноль. Вследствие этого в системе MS-DOS длина строк ограничена только размером сегмента (64 Кбайт). Логических типов в Си также нет; вместо этого реализована система, в которой любое целое число может быть представлено в виде логической константы: все, что не «0», эквивалентно истинному высказыванию, иначе ложному. В результате в Си возможно использовать математические выражения в качестве логических и наоборот, что добавляет гибкости языку. Типа аналогичного POINTERнет, взамен предоставлена гибкая система указателей, зависящих от типа разыменованного значения. Зато есть тип void, который характеризует отсутствие возвращаемого значения.


 

Пользовательские типы

В обоих языках реализована возможность создавать псевдонимы для существующих типов и новые типы. [7]Кроме стандартных типов данных Паскаль поддерживает скалярные типы, определенные самим пользователем. К ним относятся перечислимые типы (когда непосредственно, в разделе описания типов, заранее записываются все значения для переменных этого типа) и интервальные (когда задаются границы диапазона значений для данной переменной), указательные типы (кроме Pointer), структурированные типы и процедурные типы. Данные этих типов занимают в памяти один байт, поэтому скалярные пользовательские типы не могут содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок, экономит память.

Перечислимый тип данных задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. При описании отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для каждой переменной. Обе константы должны принадлежать одному и тому же стандартному типу (кроме real). Указательные типы - их значениями являются адреса памяти. В отличие от стандартного указательного типа Pointer, пользовательский тип определяет множество значений, которые указывают на динамические переменные определенного типа, называемого базовым типом. Указатель на какой-либо тип может быть описан до объявления самого типа.

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

[8] В языке Си существует пять способов создания пользовательских типов данных. Пользовательские типы данных можно создавать с помощью:

·   структуры - группы переменных, имеющей одно имя и называемой агрегатным типом данных. Кроме того, еще известны термины: соединение или конгломерат;

·   объединения, которое позволяет определять один и тот же участок памяти как два и более типов переменных;

·   битового поля, которое является специальным типом элемента структуры или объединения, позволяющим легко получать доступ к отдельным блокам;

·   перечисления - списка поименованных целых констант;

·   ключевого слова typedef, которое определяет новое имя для существующего типа;

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

 

Арифметические операции

 

Арифметическая операция - вычислительная операция над числами. Во многих языках программирования определены двуместные арифметические операции: сложения, вычитания, умножения, деления, деления нацело, вычисление остатка от деления. Допустимые операции в языке Паскаль представлены в таблице 2.3.1 [9].

Таблица 2.3.1 Операции в Паскале

Приоритет операции

Символ

Выражение

Название операции

Тип переменных

Логические операции

1

Not

Not A

 «не»

Логический, целый

2

And

A and B

«и»

 

3

Or

A or B

«или»

 

3

Xor

A xor B

«искл. или»

 

Математические операции

2

*

A*B

Умножение

Целый, вещественный

2

/

A/B

Деление

 

2

Div

A div B

Деление без остатка

Целый

2

Mod

A mod B

Остаток от деления

 

3

+

A+B

Сложение

Целый, вещественный, строки

3

-

A-B

Вычитание

Целый, вещественный

Операции сравнения

4

=

A=B

Равно

Целый, вещественный, логический, строки
4

<>

A<>B

Не равно

 
4

>

A>B

Больше

 
4

<

A<B

Меньше

 
4

>=

A>=B

Больше либо равно

 
4

<=

A<=B

Меньше либо равно

 

Специфические операции

1

@

@A

Адрес

Любой
1

^

A^

Разыменование

Указатель
2

Chl

A chl B

Сдвиг влево

Целый
2

Shr

A shr B

Сдвиг вправо

 
2

*

A*B

Пересечение

Множество
3

+

A+B

Объединение

 
3

-

A-B

Вычитание

 
4

In

A in B

Вхождение в множество

Элементы множества
                 

 


 

Для строк операция сложения выступает как конкатенация - присоединение второй строки к «хвосту» первой. Как правило, для большинства операций характерно неявное приведение типов, поэтому они являются в некотором роде универсальными.

Операции в языке Си более универсальны из-за отсутствия логических типов и упразднения типов строк и символов, однако и они имеют свои особенности. Список допустимых операций в Си приведен в таблице 2.3.2 [10]. В языке существует жесткая иерархия по приоритету выполнения операций, что позволяет более детально прорабатывать структуру программ. Также введено понятие ассоциативности - приоритет выполнения операций может быть как слева направо, так и справа налево. Большинство операций допустимы для всех типов, исключения составляют побитовые и логические операции, а так же операции деления без остатка и остаток от деления для вещественных типов. Особенностью языка Си является тернарный оператор условия (x?y;z), который представляет простейший условный переход.

Таблица 2.3.2 - Операции языка Си

Оператор Название Класс Приоритет Ассоциативность
++/-- Инкремент, декремент Постфиксный 16 Слева направо
++/-- Инкремент, декремент Префиксный 15 Справа налево
~ Побитовое НЕ Унарный 15 Справа налево
! Логическое НЕ Унарный 15 Справа налево
- + Изменение знака, плюс Унарный 15 Справа налево
& Адрес Унарный 15 Справа налево
* Разыменование Унарный 15 Справа налево
(имя типа) Приведение типа Унарный 14 Справа налево
* / % Мультипликативные операции Бинарный 13 Слева направо
+ - Аддитивные операции Бинарные 12 Слева направо
<<>> Сдвиг влево и вправо Бинарный 11 Слева направо
<><= >= Отношения Бинарный 10 Слева направо
==!= Равенство / неравенство Бинарный 9 Слева направо
& Побитовое И Бинарный 8 Слева направо
^ Побитовое исключающее ИЛИ Бинарный 7 Слева направо
| Побитовое ИЛИ Бинарный 6 Слева направо
&& Логическое И Бинарный 5 Слева направо
|| Логическое ИЛИ Бинарный 4 Слева направо
?; Условие Тернарный 3 Справа налево
= += -= *= /= %= <<= >>= &= ^= |= Присваивание Бинарный 2 Справа налево
Оператор Название Класс Приоритет Ассоциативность
, Последовательная оценка Бинарный 1 Слева направо

 

Приведение типов в Си происходит автоматически в тех местах, где это возможно без потенциальных потерь. Так, к примеру, приведение типа char к типу float компилятор проведет сам, а обратное преобразование придется делать явно. Также в Си в сравнении с Паскалем появляется адресная арифметика - арифметические операции допустимы для указателей, и во многих случаях происходит неявное преобразование между целочисленными типами и указателями. Однако эти преобразования срабатывают не всегда. К примеру, при присваивании указателю целочисленной константы с целью установить его в данный адрес компилятор сообщит о несоответствии типов. В таких случаях также необходимо явное приведение.

 

Операторы ветвления

 

Оператор ветвления[12] - оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

 

Операторы-переключатели

Конструкция переключателя имеет несколько (две или более) ветвей. Переключатель выполняет одну заданную ветвь в зависимости от значения вычисляемого ключевого выражения. Принципиальным отличием этой инструкции от условного оператора является то, что выражение, определяющее выбор исполняемой ветви, возвращает не логическое, а целое значение, либо значение, тип которого может быть приведён к целому [12].

В языке Паскаль в переключателе допустимо использовать в качестве выражения переменные целого и символьного типа. В качестве меток переключения могут использоваться как константы указанных типов, так и диапазоны; переменные в качестве меток не допускаются. Синтаксис: на первое место выносится ключевое слово CASE, после которого следует выражение, завершающееся ключевым словом OF. После OF без дополнительных символов начинается перечисление меток переключения, указываемых как простые константные выражения. После самой метки следует через двоеточие оператор, выполняющийся для этой метки. В качестве метки «по умолчанию» при необходимости используют ключевое слово ELSE. Завершается оператор ключевым словом END.

В языке Си в качестве переключателя используется оператор switch. Синтаксис его описания следующий: вначале ставится ключевое слово switch, после которого в круглых скобках располагается выражение для переключения по меткам переключателя. Затем начинается тело переключателя, оформляемое фигурными скобками. Метки внутри тела переключателя обозначаются при помощи ключевого слова case, после которого располагают константное выражение или символьную переменную для определения значения метки. После ставится двоеточие и следует набор операторов, количество которых не ограничивается языком. Метка «по умолчанию» задается ключевым словом default.

У переключателей в Си есть особенность, которую можно охарактеризовать как «проваливание» [4]. Оно обрабатывается при помощи оператора break, использующегося для выхода из тела переключателя. В том случае, если в конце набора операторов метки и перед новой меткой нет оператора break, то управление перейдет к следующим операторам до первого оператора break либо до завершения тела переключателя. Эта особенность имеет как свои плюсы, так и свои минусы. К положительным качествам можно отнести то, что оно позволяет связать несколько случаев с одним действием; но в то же время оно обычно приводит к необходимости заканчивать каждый случай оператором break, чтобы избежать перехода к следующему случаю. Проваливание с одного случая на другой неустойчиво, поэтому не рекомендуется использовать его часто [4].

В обоих языках операторы переключения работают намного быстрее обычных условных переходов, так как они используют исключительно целые типы, а в Паскале даже допустима работа с множествами и диапазонами. Вследствие громоздкости конструкции switch из-за «проваливания», а так же отсутствия в Си диапазонов и множеств, оператор переключения в Паскале превосходит соответствующий оператор языка Си как по удобству использования, так и по быстродействию и объему решаемых задач.

 

Циклы

Безусловный переход

Оператор BREAK существует в обоих языках программирования, и в обоих языках относительно циклов он несет одинаковую функциональную нагрузку - выход из текущего блока цикла. Оператор BREAK предназначен для досрочного завершения цикла. При его выполнении происходит немедленный выход из текущего цикла и переход к выполнению оператора, следующего за циклом. Оператор CONTINUE завершает текущую итерацию цикла, осуществляя переход к концу тела цикла. Главное различие для языков Си и Паскаль в использовании этих операторов в том, что в Си это именно операторы, а в ранних версиях Паскаля (включая BorlandPascal и DelphiPascal) это процедуры.

Оператор GOTO и система меток также имеется в обоих языках. В Паскале оператор GOTO осуществляет переход к оператору, помеченному специальной меткой, которая отделяется от самого оператора двоеточием. В качестве метки может быть использовано любое целое число без знака, содержащее более четырех цифр, или любое имя. Чтобы можно было использовать метку, она должна быть в обязательном порядке объявлена в разделе меток в описательной части программы. Этот раздел начинается служебным словом LABEL, после которого через запятую перечисляются метки [13]. В языке Си метки обозначаются таким же образом, но описывать их не нужно. В обоих языках использование этих операторов основано на аналоге оператора языка Ассемблер, поэтому и различий в их использовании нет.

 

Заключение

 

По результатам проделанной работы можно сделать следующие выводы:

Проведен сравнительный анализ языков высокого уровня Паскаль и Си и сделан вывод, что для реализации курсового проекта в соответствии с заданием выгоднее использовать язык Си.

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

Разработаны алгоритмы поиска подпоследовательностей одинаковых элементов в множественном виде, алгоритмы создания графических элементов меню.

Создана программа поиска подпоследовательностей, имеющая следующие функции:

·   возможность сохранять последовательность в файлы;

·   возможность раздельного либо смежного сохранения и загрузки последовательностей в файлы.

программирование последовательность си паскаль


 

Приложение

 

Листинг.H

#include <graphics.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <string.h>

#include <stdlib.h>menu();*gpath="C:\\BORLANDC\\Progs\\kurs\\open.txt";*gpath_1="C:\\BORLANDC\\Progs\\kurs\\about.txt";*gpath_2="C:\\BORLANDC\\Progs\\kurs\\save.txt";=10;_so=0;{size;*element;

};search {index;size;

};

#include "C:\BORLANDC\Progs\kurs\alg.cpp"

#include "C:\BORLANDC\Progs\kurs\menu.cpp".CPP_new(intn,posled*p) {>size=n;>element=new int[n];

}_delete(posled*p) {p->element;

}_rand(posled*p) {(inti=0;i<p->size;i++) {

    p->element[i]=random(randmax);

}

}_search(posled*p,intnum) {=1,len=1,indmax=-1;=1;(inti=1;i<=p->size;i++) {

    if(p->element[i]==p->element[i-1]&&i<p->size) len++;

    else {

        if(len>lenmax) {

                       lenmax=len;

                       if(num==1) indmax=i-len;

                       elseindmax=-1;

                       nummax=1;

                       }

              else if(len==lenmax) {

                       nummax++;

                       if(nummax==num) indmax=i-len;

                       }

              len=1;

              }

}={0};.index=indmax;.size=lenmax;;

}_save(char*path,posled*p) {

FILE*f;

f=fopen(path,"w+");(!f) return;(f,"%d ",p->size);(inti=0;i<p->size;i++) fprintf(f,"%d ",p->element[i]);(f);

}_open(char*path,posled*p) {

FILE*f;=0,i=0;

f=fopen(path,"r");(!f) {

    posled_new(0,p);

    return;

}(f,"%d ",&buf);_new(buf,p);(!feof(f)) {=0;(f,"%d ",&buf);>element[i++]=buf;

}(f);

}.CPP_note() {(1,15);(180,50,460,430);(1,0);(inti=0;i<3;i++) fillellipse(i*80+240,75,10,10);(1,2);(i=0;i<3;i++) {

    bar(i*80+236,73,i*80+238,40);

    bar(i*80+242,73,i*80+244,40);

}

}start() {_set=0;work=0;(start_set<0) start_set=1;if(start_set>1) start_set=0;();_note();(0,0,2); setcolor(4);(320,120,"Create with:");(1);(320,200,"File");(320,280,"Generator");(9);(210,140,430,140);(240,215+start_set*80,400,215+start_set*80);p={0};*posl=&p;key=getch();(key) {

    case 27: menu(); return;

    case 80: start_set++; break;

    case 72: start_set--; break;

    case 13:

              work=1;

              switch(start_set) {

                       case 0: posl_open(gpath,posl); break;

                       case 1: posled_new(48,posl); posled_rand(posl); break;

              }

              break;

}(work) {

    draw_note();

    charbuf[15]={0};

    int j=1;

    search m={0};

    if(!posl->size) {

              outtextxy(320,220,"Cannot open file");

              getch(); menu(); return; }

    for(inti=0;i<posl->size;i++) {

              char b1[5]={0};

              sprintf(b1,"%d",posl->element[i]);

              strcat(buf,b1);

              outtextxy(220+(i%6)*40,130+(i/6)*30,buf);

              buf[0]=0;

    }

    while(m.index>=0) {

              m=index_search(posl,j++);

              if(m.index==-1) break;

              for(int k=0;k<m.size;k++) {

                       int l=m.index+k;

                       rectangle(201+(l%6)*40,116+(l/6)*30,

                                          239+(l%6)*40,144+(l/6)*30);

                       }

              }

    sprintf(buf,"Size: %d",m.size);

    outtextxy(320,125+(i+1)*5,buf);

    if(bool_so) posl_save(gpath_2,posl);

    elseposl_save(gpath,posl);

    getch(); menu();

}();

}options() {_note();_sel=0;(opt_sel<0) opt_sel=1; else if(opt_sel>1) opt_sel=0;(0,0,3); setcolor(4);(320,120,"OPTIONS");[20]={0};(0,0,1); setcolor(1);(buf,"Max rand num: %d",randmax); outtextxy(320,200,buf);(buf,"Similar i/o files:%s",(bool_so?" yes":" no"));(320,280,buf);(280,215+opt_sel*80,360,215+opt_sel*80);key=getch();=0;(key) {

    case 27: menu(); return;

    case 75: dir--; break;

    case 77: dir++; break;

    case 72: opt_sel--; break;

    case 80: opt_sel++; break; }(opt_sel) {

    case 0: if(randmax>20) dir*=10; randmax+=dir; break;

    case 1: if(dir) bool_so=1-bool_so; break;

}(randmax<1) randmax=1; else if(randmax>100) randmax=99;();

}about() {_note();(0,0,2); setcolor(4);(320,100,"ABOUT");*f=fopen(gpath_1,"r+");(0,0,1);(230,130,410,130);(f) {

    charbuf[30]={0};

    inti=0;

    while(!feof(f)) {

              buf[0]=0;

              fgets(buf,30,f);

              buf[strlen(buf)-1]=0;

              outtextxy(320,160+i*30,buf);

              if(strlen(buf)) i++;

              }

    line(230,160+i*30,410,160+i*30);

    }{

    char error[50]={0};

    sprintf(error,"Cannot open \"%s\"",gpath_1);

    outtextxy(320,160,error);

    }();(f);();

}menu() {_set=0;(menu_set<0) menu_set=3;if(menu_set>3) menu_set=0;();_note();(CENTER_TEXT,CENTER_TEXT);(0,0,3);(4);(320,120,"MENU");(0,0,2);(1);(320,200,"START");(320,250,"OPTIONS");(320,300,"ABOUT");(320,350,"EXIT");(9);(210,140,430,140);(240,215+menu_set*50,400,215+menu_set*50);key=getch();(key) {

    case 27: exit(0); break;

    case 13: switch(menu_set) {

              case 0: start(); return;

              case 1: options(); return;

              case 2: about(); return;

              case 3: exit(0);

     } break;

    case 72: menu_set--; break;

    case 80: menu_set++; break; }();

}

Содержание

Введение

1. Сравнительный анализ языков программирования высокого уровня Си и Паскаль

1.1 Структура программы

1.2 Типы данных

1.2.1 Стандартные типы

1.2.2 Пользовательские типы

1.3 Арифметические операции

1.4 Указатели и векторные типы данных

1.5 Операторы ветвления

1.5.1 Условные операторы с несколькими условиями

1.5.2 Операторы-переключатели

1.6 Циклы

1.6.1 Организация операторов циклов

1.6.2 Безусловный переход

1.7 Пользовательские подпрограммы

1.8 Итоги анализа сравнения языков программирования Паскаль и Си

2 Практическая реализация задания

2.1 Описание задачи и ограничений на ее выполнение

2.2 Реализация задания

2.3 Алгоритмы, реализованные в процессе решения задачи

Заключение

Список использованных источников

 


 

Введение

 

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

·   постановка задачи;

·   сбор данных, необходимых для решения задачи;

·   реализация алгоритма обработки данных;

·   трансляция алгоритма в структуру, способную решить поставленный алгоритм - программу или пакет программ;

·   тестирование и отладка программы или пакета программ;

·   применение программы или пакета программ к поставленной задаче;

·   анализ полученных результатов.

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


 

Сравнительный анализ языков программирования высокого уровня Си и Паскаль

 

Язык высокого уровня - тип языка компьютерного программирования. Языки высокого ур


Поделиться с друзьями:

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

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.334 с.