Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИДЗ 1 Вариант 8.doc
Скачиваний:
12
Добавлен:
20.06.2014
Размер:
131.58 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Индивидуальное домашнее задание

по дисциплине «Программирование на языках высокого уровня»

Сравнительный анализ представления данных и семантики языков программирования C и Pascal.

Студент

Ельшаева Н.А.

подпись, дата

фамилия, инициалы

Группа

АС-09

Принял

Фарафонов А.С.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2010

Задание кафедры.

Сравнительный анализ представления данных и семантики языков программирования C и Pascal.

Вариант 8:

Агрегатные данные.

Алфавит.

Содержание

Введение

1. Представление данных.

Агрегатные данные

1.1. Массивы

1.2. Строки

1.3. Структуры

1.4. Объединения

2. Семантика языков

Алфавит

2.1. Алфавит в Паскаль

2.2. Алфавит в Си

3. Вывод

4. Список литературы

Введение

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

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

Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называют языками «высокого уровня». В настоящее время насчитывается несколько сотен таких языков, а если считать и их диалекты, то это число возрастет до нескольких тысяч. Языки программирования высокого уровня существенно отличаются от машинно-ориентированных (низкого уровня) языков. Во-первых, машинная программа в конечном счете записывается с помощью лишь двух символов 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операции, ориентированных на структуру процессора. Как правило, этот набор состоит in сравнительно небольшого числа простейших операций, типа: переслать число и ячейку; считать число из ячейки; увеличить содержимое ячейки на +1 и т.п. Команда на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код и адреса ячеек, с содержимым которой выполняется закодированное действие.

1. Представление данных

1.1 Массивы

Массивы в Си значительно проще, чем в Паскале. Массивы в Си могут иметь целый, символьный или перечислимый тип индексов, в то время как в Паскале используется любой перечислимый тип. Все области индексов начинаются от 0 и идут до n-1 (где n - размер массива). Это сильно отличается от Паскаля, где вы устанавливает границы индекса, как вам удобно. В Си массив индексируется согласно арифметике ссылок, и следующие выражения идентичны:

a[i] в Паскаль, a[i] и *(a + i) в Си.

Основной формат описания массивов следующий:

Турбо Паскаль:

<имя>:array[<низ>..<верх>] of <тип>; <тип> <имя>[<размер>];

Турбо Си:

<тип> <имя>[<размер>];

(где <размер> равен (1 + <низ> - <верх>))

Многоразмерные массивы в Си определяются так же, как в Паскале: <тип> сам является массивом какого-либо типа, или вы добавляете значения размеров в конец:

<тип> <имя> [<размер1>] [<размер2>] [<размер3>];

Отметим, что в отличие от Паскаля, вы не имеете возможности применять короткую запись, т.е. [] скобки с запятыми.

В Си выделяется область памяти достаточная для <размера> с учетом <типа>, a <имя> является константой-указателем на начало этой области.

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

Вот, например, функция, которая получает массив

int и возвращает минимальное значение массива.

int amin(int a[], int n); /* описание функции */

{

int min,i;

min = a[0];

for (i = 1; i < n; i++)

if (a[i] < min)

min = a[i];

return(min);

}

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