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

Автор работы: Пользователь скрыл имя, 15 Декабря 2013 в 20:35, курсовая работа

Описание работы

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

Содержание работы

•Введение
•1. Сравнительный анализ языков программирования высокого уровня Си и Паскаль
•1.1 Структура программы
•1.2 Типы данных
•1.2.1 Типы данных в Паскале
•1.2.2 Типы данных в СИ
•1.2.3 Пользовательские типы
•1.3 Арифметические операции
•Заключение
•Список использованных источников

Файлы: 1 файл

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

— 43.65 Кб (Скачать файл)

Содержание

 

  • Введение
  • 1. Сравнительный анализ языков программирования высокого уровня Си и Паскаль
  • 1.1 Структура программы
  • 1.2 Типы данных
  • 1.2.1 Типы данных в Паскале
  • 1.2.2 Типы данных в СИ
  • 1.2.3 Пользовательские типы
  • 1.3 Арифметические операции
  • Заключение
  • Список использованных источников

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

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

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

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

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

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

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

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

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

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

 

 

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

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

 

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

1.1.1 Структура программы на Паскаль

Программа на языке Паскаль  состоит из заголовка, разделов описаний и раздела операторов. Заголовок  программы содержит имя программы, например:

Program PRIM;

Описания могут включать в себя:

  • раздел подключаемых библиотек (модулей);
  • раздел описания меток;
  • раздел описания констант;
  • раздел описания типов;
  • раздел описания переменных;
  • раздел описания процедур и функций.

 

Раздел описания модулей определяется служебным словом USES и содержит имена подключаемых модулей (библиотек) как входящих в состав системы Turbo Pascal, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми:

uses CRT, Graph;

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

label 3, 471, 29, Quit;

Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описания констант:

const K= 1024; MAX= 16384;

В разделе описания переменных необходимо указать все переменные, используемые в программе, и определить их тип:

var P,Q,R: Integer;

    A,B:   Char;

    F1,F2: Boolean;

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

Раздел операторов представляет собой составной оператор, который содержит между служебными словами

begin.......end

последовательность операторов. Операторы  отделяются друг от друга символом ;. Текст программы заканчивается символом точка.

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

 

Пример 1

program Primer; {вычисление суммы двух чисел}

var

   x,y,s: integer;

begin

  WriteLn('Введите через пробел два числа ');

  ReadLn(x,y);

  s := x + y;

  WriteLn('Сумма чисел равна ',s);

end.

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

Пример 2

program Primer; {вычисление суммы двух чисел}

uses Crt; {подключение модуля, необходимого для процедур

           очистки экрана и задержки}

var

  x,y,s: integer;

begin

  ClrScr; {очистка экрана}

  WriteLn('Введите через пробел два числа ');

  ReadLn(x,y);

  s := x + y;

  WriteLn('Сумма чисел равна ',s);

  ReadKey; {ожидание нажатия клавиши}

end.

 

1.1.2 Структура  программы на Си.

Рассмотрим  структуру исходной программы на Си и опеределим термины, используемые при описании языка.  
    Исходная программа - это совокупность следующих объектов: директив, указаний компилятору, объявлений и определений.  
    Директивы задают действия препроцессора по преобразованию текста программы перед компиляцией.  
    Указания компилятору - это команды, выполняемые компилятором во время процесса компиляции. Объявления задают имена и атрибуты переменных, функций и типов, используемых в программе.  
    Определения - это объявления, определяющие переменные и функции.  
    Определение переменной в дополнении к ее имени и типу задает начальное значение объявленной переменной. Кроме того, определение предполагает распределение памяти для переменной.  
    Определение функции специфицирует ее структуру, которая представляет собой смесь из объявлений и операторов, которые образуют саму функцию. Определение функции также задает имя функции, ее формальные параметры и тип возвращаемой величины.  
    Исходная программа может содержать любое число директив, указаний компилятору, объявлений и определений. Любой из объектов программы имеет определенный синтаксис, и каждая составляющая может появляться в любом порядке.  
    В следующем примере иллюстрируется простая исходная программа на языке Си.  
    int х = 1; /* Определение переменных */  
    int у = 2;  
    extern int   printf(char * , ...) /* Объявление функции */  
    main() /* Определение функции main */  
    {  
    int z; /* Объявление переменных */  
    int w;  
    z = у + х; /* Операторы */  
    w = у - х;  
    printf("z = %d   \nw = %d   \n", z, x); }  
    Эта исходная программа определяет функцию с именем main и объявляет функцию printf. Переменные х и у задаются своими определениями. Переменные z и w только объявляются.  
    Каждая программа содержит главную программную функцию. В Си главная программная функция должна быть именована как main. Функция main служит точкой старта при выполнении программы и обычно управляет выполнением программы, организуя вызовы других функций. Программа обычно завершает выполнение по окончанию функции main, хотя она может завершиться и в других точках. 
    Исходная программа обычно включает в себя несколько функций, каждая из которых предназначена для выполнения определенного задания. Функция main может вызывать эти функции с тем, чтобы выполнить ту или иную задачу. Функция возвращает управление при выполнении оператора return или по окончанию самой функции (выход на конец функции).  
    Все функции, включая функцию main, могут быть объявлены с параметрами. Вызываемые функции получают значения параметров из вызывающих функций. Значения параметров функции main могут быть переданы из внешнего окружения. Например, они могут быть переданы из командной строки.  
    Соглашение Си требует, чтобы первые два параметра функции main (если они необходимы) назывались argc и argv.  
    Параметр argc определяет общее число аргументов, передаваемых функции main. Параметр argv объявляется как массив указателей, каждый элемент которого ссылается на строковое представление аргумента, передаваемого функции main. Третий параметр функции main (если он есть) традиционно задается с именем envp. Однако Си не требует этого имени. Параметр envp - это указатель на массив указателей строковых величин, которые определяют окружение, в котором выполняется программа.  
    Операционная система поддерживает передачу значений для argc, argv, и envp параметров, а пользователь поддерживает задание значений фактических параметров для функции main. Соглашение о передаче параметров в большей степени определяется операционной системой, чем самим языком Си.

Функция printf() возвращает число выведенных символов или отрицательное значение в случае ошибки.

Чтобы принять  аргументы командной строки, используются два специальных встроенных аргумента: argc и argv. Параметр argc содержит количество аргументов в командной строке и является целым числом, причем он всегда не меньше 1, потому что первым аргументом считается имя программы. А параметр argv является указателем на массив указателей на строки. В этом массиве каждый элемент указывает на какой-либо аргумент командной строки. Все аргументы командной строки являются строковыми, поэтому преобразование каких бы то ни было чисел в нужный двоичный формат должно быть предусмотрено в программе при ее разработке.

Вот простой  пример использования аргумента  командной строки. На экран выводятся  слово Привет и ваше имя, которое надо указать в виде аргумента командной строки.

#include <stdio.h>

#include <stdlib.h>

 

int main(int argc, char *argv[])

{

  if(argc!=2) {

    printf("Вы забыли ввести свое имя.\n");

    exit(1);

  }

  printf("Привет %s", argv[1]);

 

  return 0;

}

1.2 Типы данных.

1.2.1 Типы данных  в Паскале.

Простые типы данных Паскаля: числа с плавающей запятой (real), целые (integer), символьный (char), логический (boolean) и перечисления (конструктор нового типа, введённый в Паскале).

Целочисленные типы:

Тип

Диапазон

Формат

Размер в байтах

Byte

0..255

Беззнаковый

1

ShortInt

−128..127

Знаковый

1

SmallInt

−32768..32767

Знаковый

2

Word

0..65535

Беззнаковый

2

Integer

-32768..32767

Знаковый

2

Cardinal

=LongWord

Беззнаковый

4

LongWord

0..4294967295

Беззнаковый

4

LongInt

−2147483648..2147483647

Знаковый

4

Int64

−9223372036854775808..9223372036854775807

Знаковый

8

QWord

0..18446744073709551615

Беззнаковый

8


 

 

 

 

 

 

 

 

 

 

Числа с плавающей  запятой:

Тип

Диапазон

количество значащих цифр

Размер в байтах

Real/Double

зависит от платформы

???

8

Real48

???

11-12

6

Single

1.5E-45..3.4E38

7-8

4

Extended

1.9E-4932..1.1E4932

19-20

10

Comp

−2E64+1..2E63-1

19-20

8

Currency

−922337203685477.5808..922337203685477.5807

19-20

8


 

 

var { секция объявления переменных }

r: Real;  { переменная вещественного типа }

i: Integer;  { переменная целого типа }

c: Char;  { переменная-символ }

b: Boolean;  { логическая переменная }

s: String; { переменная строки }

t: Text; { переменная для обьявления текстового файла }

e: (apple, pear, banana, orange, lemon);  { переменная типа-перечисления }

 

 

 

 

 

 

 

 

 

 

1.2.2 Типы данных в CИ.

 

 

 

  

Имя

Размер

Представляемые значения

Диапазон

(signed) char

1 байт

символы  
целые числа

 
от –128 до 127

(signed) short int

2 байта

целые числа

от -32768 до 32767

(signed) int

зависит от реализации  
(в последних компиляторах обычно 4 байта)

целые числа

 

(signed) long int

4 байта

целые числа

от -2147483648 до 2147483647

unsigned char

1 байт

символы  
целые числа

 
от 0 до 255

unsigned short int

2 байта

целые числа

0 до 65535

unsigned int

зависит от реализации  
(в последних компиляторах обычно 4 байта)

целые числа

 

unsigned long int

4 байта

целые числа

от 0 до 4294967295

float

4 байта

вещественные числа

от 1.175494351e–38  
до 3.402823466e+38

double

8 байт

вещественные числа

от 2.2250738585072014e–308  
до 1.7976931348623158e+308

long double

зависит от реализации

вещественные числа

 


 

 

 

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

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

Информация о работе Сравнительный анализ языков программирования