Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Структурированный типы данных




КУРСОВАЯ РАБОТА

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

 

выполнил: ст. г. И-101 Дондуков А.С.

№ вариата: 14

проверила: Эрдынеева Л.И

 

 

Улан-Удэ

2011 г.

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

БУРЯТСКИЙ ФИЛИАЛ ГОУ ВПО «СибГУТИ»

Кафедра «Информатики и вычислительной техники»

 

Рассмотрено

На кафедре «ИВТ»

Зав. кафедры

Чимитова Е.Г. /________/

«_____»_______200_г.

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

 

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

Студенту _гр. И-101_._Дондукову Арсалану Сергеевичу

Тема задания и исходные данные

Разработать программу модульной структуры для создания и обработки внешнего файла в соответствии с вариантом задания. Структура данных по варианту  №    _14_

Программа должна выполнять в общем три задачи: 1. Создание файла. 2. Чтение данных из файла. 3. Вывод данных на экран дисплея. 4. Обработка данных по заданию Б.

Все полученные результаты отобразить на экране.

Пояснительная записка

 

1. Введение

2. Теоретическая часть

3. Проектная часть_

4. Тестирование и отладка программы

5. Заключение

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

Проектная часть

1. __Структура основной программы. Описание основной программы._______

2. __Структура модуля работы с файлами, процедуры и функции содержащиеся в модуле (описание блок-схемы и текста подпрограммы)__________________

Приложение

1. _Блок- схема основного модуля, и подпрограмм_

2. _Листинг программы

3. Тестовые результаты_

Дата выдачи «5» мая 2011 г.

Срок окончания «_21_» июня 2010 г.

Руководитель курсовой работы _______________________/Эрдынеева Л.И./_

 

Задание принял к исполнению __________________________

 


Содержание

 Введение…………………………………………………………………………..…..5

Теоретическая часть…………………………………………………………………...5

1. Структурированные типы данных……………………………………………..….6

2. Способы описание функций…………………………………………………….....9

3. Создание и обработка модулей…………………………………………………....12

4. Проектирование программ………………………………………………………...13

5. Создание графического интерфейса……………………………………………....14

6. Постановка задачи……………………………………………………………….…15

7.1 Исходные данные……………………………………………………………....16

7.2 Выходные данные……………………………………………………………...17

8.Таблица значения переменных………………………………………………….....18

9. Основная функция void main()……………………………………………………..19

9.1 Блок схема………………………………………………………………………20

9.2 Текст программы……………………………………………………………….21

10. Тестирование программы………………………………………………………....30

Заключение…………………………………………………………………….…..35

Список использованной литературы……………………………………….……36


Введение

Язык программирования С++ царит в компьютерном мире. Есть масса причин для узучения этого языка – это продвижение по служебной лестнице, предназначен для разработки высокопроизводительного программного обеспечения и получение высокооплачиваемой работы. С другой стороны, изучение С++ может превратиться в настоящую каторгу, так как на самом деле это язык с множеством мудреных правил. Обилие инструментов для разработки программ на языке С++ с первого взгляда могут перепутать начинающегося разработчика.

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

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

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

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

- алфавит и идентификаторы

- элементарные типы, объявления и пределения

- операции, выражения и операторы

- функции и их характеристики

- производные типы и средства их построения

- функции-члены, конструкторы и операторные функции

- механизмы наследования, инкапсуляции и полиморфизма

- шаблоны             

- потоки ввода-вывода

- средства обработки исключительных ситуаций.

Информация о контроле типов, типизации и прочих важных характеристиках языков программирования; сведения об алгоритмах преобразования, дополнительном коде и о преобразовании дробной части вещественного числа. Эти приложения включены в книгу с единственной целью: чтобы при обсуждении того, что делается, не возникало вопросов по поводу того, как это делается; элементы теории комплексных чисел. Комплексные числа - наш полигон. Многие конструкции языка C++ мы в дальнейшем будем отрабатывать применительно к множеству комплексных чисел; элементарные сведения об устройстве ЭВМ.

Структурированный типы данных

  Структура – это объединение одного или нескольких объектов (перемменых, массивов, указателец, других структур и т.д.) Как и массив, она представляет собой совокупность данных. Отличнем является те, что к ее элементам необходимо обращаться по имени и что различные элементы структуры не обязательно должны принадлежать одному типу. Переменные, из которых состоит структура, называется членами. Члены структуры еще называются элементами или полями.

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

Вектор есть совокупность элементов одного типа; struct является совокупностью элементов (практически) произвольных типов. Например:

struct address { // почтовый адрес

char* name;    // имя "Jim Dandy"

long number;  // номер дома 61

char* street;       // улица "South Street"

char* town;    // город "New Providence"

char* state[2]; // штат 'N' 'J'

int zip;     // индекс 7974

 }

определяет новый тип, названный address (почтовый адрес), состоящий из пунктов, требующихся для того, чтобы послать кому-нибудь корреспонденцию (вообще говоря, address не является достаточным для работы с полным почтовым адресом, но в качестве примера достаточен). Обратите внимание на точку с запятой в конце; это одно из очень немногих мест в C++, где необходимо ставить точку с запятой после фигурной скобки, поэтому люди склонны забывать об этом.

       Переменные типа address могут описываться точно также, как другие переменные, а доступ к отдельным членам получается с помощью операции. (точка). Например:

address jd;

jd.name = "Jim Dandy";

jd.number = 61;

       Запись, которая использовалась для инициализации векторов, можно применять и к переменным структурных типов. Например:

address jd = {

"Jim Dandy",

61, "South Street",

"New Providence", {'N','J'}, 7974

};

       Однако обычно лучше использовать конструктор. Заметьте, что нельзя было бы инициализировать jd.state строкой "NJ". Строки оканчиваются символом '\0', поэтому в "NJ" три символа, то есть на один больше, чем влезет в jd.state.

       К структурным объектам часто обращаются посредством указателей используя операцию ->. Например:

void print_addr(address* p)

{

cout << p->name << "\n" << p->number << " " << p->street << "\n" << p->town << "\n" << chr(p->state[0]) << chr(p->state[1])

     << " " << p->zip << "\n"; }

Объекты типа структур можно присваивать, передавать как параметры функции и возвращать из функции в качестве результата. Например:

address current;

address set_current(address next)

{

address prev = current;

current = next;

return prev;

}

       Остальные осмысленные операции, такие как сравнение (== и!=) не определены. Однако пользователь может определить эти операции.

       Размер объекта структурного типа нельзя вычислить просто как сумму его членов. Причина этого состоит в том, что многие машины требуют, чтобы объекты определенных типов выравнивались в памяти только по некоторым зависящим от архитектуры границам  (типичный пример: целое должно быть выравнено по границе слова) или просто гораздо более эффективно обрабатывают такие объекты, если они выравнены в машине. Это приводит к "дырам" в структуре. Например, (на моей машине) sizeof (address) равен 24, а не 22, как можно было ожидать.

       Заметьте, что имя типа становится доступным сразу после того, как оно встретилось, а не только после того, как полностью просмотрено все описание. Например:

struct link{

link* previous;

link* successor;

}

Новые объекты структурного типа не могут быть описываться, пока все описание не просмотрено, поэтому

struct no_good {

no_good member;

};

является ошибочным (компилятор не может установить размер no_good). Чтобы дать возможность двум (или более) структурным типам ссылаться друг на друга, можно просто описать имя как имя структурного типа. Например:

struct list;   // должна быть определена позднее

struct link {

link* pre;

link* suc;

link* member_of;

};

struct list {

link* head;

}

Без первого описания list описание link вызвало бы к синтаксическую

ошибку.

 

3. Способы описания функций

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

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

extern float pow (float, int);     // pow () определена в другом месте

   int main ()

{

   for (int i=0; i<10; i++) cout << pow (2, i) << '\n';

   }

Первая строка является описанием функции. Она задает pow как функцию с параметрами типа float и int, возвращающую значение типа float. Описание функции необходимо для ее вызова, ее определение находится в другом месте.

При вызове функции тип каждого фактического параметра сверяется с типом, указанным в описании функции, точно так же, как если бы инициализировалась переменная описанного типа. Это гарантирует надлежащую проверку и преобразования типов. Например, вызов функции pow(12.3,"abcd") транслятор сочтет ошибочным, поскольку "abcd" является строкой, а не параметром типа int. В вызове pow(2,i) транслятор преобразует целую константу (целое 2) в число с плавающей точкой (float), как того требует функция. Функция pow может быть определена следующим образом:

 

float pow (float x, int n)

{

if(n<0)

     error ("ошибка: для pow () задан отрицательный показатель");

     switch (n)

    {

     case 0: return 1;

     case 1: return x;

     default: return x * pow (x, n-1);

     }

}

       Первая часть определения функции задает ее имя, тип возвращаемого значения (если оно есть), а также типы и имена формальных параметров (если они существуют).Значение возвращается из функции с помощью оператора return.

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

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

int pow (int, int);

double pow (double, double); //

x = pow (2,10);// вызов pow(int,int)

y = pow (2.0, 10.0);// вызов pow(double,double)

       Такое многократное использование имени называется перегрузкой имени функции или просто перегрузкой;

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

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

    void swap (int * p, int * q)

    {

      int t = * p;

      * p = * q;

      * q = t;

    }

 

Унарная операция * называется косвенностью (или операцией разыменования), она выбирает значение объекта, на который настроен указатель. Функцию можно вызывать следующим образом:

    void f (int i, int j)

   { swap (& i, & j); }

       Если использовать передачу параметра по ссылке, можно обойтись без явных операций с указателем:

    void swap (int&r1,int&r2)

{ int t = r1;

     r1 = r2;

     r2 = t;  }

    void g (inti,intj)

{ swap (i,j);

}

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

В общем виде функцию можно представить так:

Тип имя_функции (список_параметров)

{

Инструкции

returne (возвращаемое значение функции)

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...