Сведения о расходе горючего на автобазах городаРефераты >> Программирование и компьютеры >> Сведения о расходе горючего на автобазах города
В том случае если функция не должна выполнять никаких действий и не должна возвращать никаких значений, тело функции буде состоять из фигурных скобок {}.
При обращении к функции, формальные параметры заменяются фактическими, причем соблюдается строгое соответствие параметров по типам. В отличие от своего предшественника – языка С, язык С++ не предусматривает автоматического преобразования в тех случаях, когда фактические параметры не совпадают по типам с соответствующими им формальными параметрами. Говорят, что язык С++ обеспечивает «строгий контроль типов». В связи с этой особенностью языка С++ проверка соответствия типов формальных и фактических параметров выполняется на этапе компиляции.
Формальные параметры функции – это обобщенное представление данных, которые нужны функции для ее работы. Их еще называют аргументами.
Фактические параметры – это те конкретные данные, которые передаются функции при каждом ее вызове.
Переменные, объявленные внутри функции, называются локальными. Под эти переменные (если только они не имеют описателя static – см. далее) память выделяется при каждом вызове функции и освобождается при ее завершении.
Формальные параметры по определению являются локальными. Формальные параметры в С++ могут иметь любой встроенный или производный тип.
Строгое согласование по типам между формальными и фактическими параметрами требует, чтобы в модуле до первого обращения к функции было помещено ее объявление (прототип), содержащее сведения о ее типе (о типе результата, т.е. возвращаемого значения) и о типах всех параметров. Именно наличие такого прототипа позволяет компилятору выполнять контроль соответствия типов параметров. Прототип функции может внешне почти полностью совпадать с заголовком ее определения:
тип_функции имя_функции (спецификация_формальных_параметров);
Основное различие – точка с запятой в конце объявления (прототипа). Второе отличие - необязательность имен формальных параметров в прототипе даже тогда, когда они есть в заголовке определения функции.
Примеры:
void f( ); // функция не имеет параметров и не возвращает значение
extern double sqrt( double ); // внешняя функция с параметром и возвращаемым значением типа double
char* strcpy( char *to, const char *from); // функция имеет два параметра и возвращает указатель на char.
2. Решение экономической задачи
«Сведения о расходе горючего на автобазах города»
2.1 Постановка задачи
Цель курсового проекта – разработка программы на языке Си++ для решения экономической задачи «Сведения о производительности труда». Реализована эта задача должна быть двумя путями: с использованием файлов, и на базе динамических структур (односвязного списка). Программа должна обеспечивать:
1. Ввод с клавиатуры исходных данных, требуемых для решения данной задачи.
2. Длительное хранение и корректировку этих данных (нужно создать файл для хранения исходных данных и предусмотреть возможность дополнения, изменения, удаления записей и их вывода на экран монитора или принтер).
3. Создание динамической структуры заданного типа (односвязный список), при этом данные должны вводиться в процессе диалога с клавиатуры.
4. Добавление новых элементов в созданную динамическую структуру или исключение существующих; корректировку элементов списка; вывод элементов динамической структуры на экран монитора или принтер в заданном порядке; сохранение структуры в файле и ее воссоздание.
Формула расчета и вид выходного документа указаны в таблице 2.1
Таблица 2.1
№ п/п |
Автобаза |
Израсходовано топлива, тонн |
Количество автомашин, штук |
Средний расход, кг |
1 2 . |
A |
T |
K |
С=Т/K |
Итого |
S1 |
S2 |
S3 |
При разработке программы необходимо в максимальной степени использовать механизм функций языка С++ (действия над данными, как ввод, вывод, корректировка и другие, должны быть оформлены в виде отдельных функций). Кроме того, при разработке программы необходимо задействовать возможности модульного программирования.
2.2 Разработка алгоритма решения задачи
Разрабатывать программу мы будем в среде программирования Borland C++ версии 5.2.
Так как программа у нас будет объемная, и в наши задачи входит обучение модульному программированию мы разобьем программу на модули. Обязательно должен быть головной модуль и заголовочный. В головном модуле будет выводится шапка программы и основное меню. Заголовочный модуль будет содержать работу с файлами и односвязными списками. Но так как это тоже будет большой объем, мы разобьем заголовочный модуль на два модуля: один - работа с файлами, другой - работа со списком.
Итак, наша программа будет состоять из головного модуля:
- cursovoi.cpp,
и двух заголовочных:
- f1.h,
- s1.h.
Теперь определимся с данными:
Исходными данными у нас являются:
-наименование Автобазы (строковый тип),
-объем израсходованного топлива (вещественный тип),
-количество автомашин (целый тип),
и расчетные данные:
-производительность автобазы (вещественный тип).
Автобаз будет неопределенное количество. Для хранения данной информации можно воспользоваться как массивами, так и структурами (типами, определяемыми пользователями). Проанализировав вышеуказанную информацию (информация по автобазам разных типов, количество автобаз не известно) мы остановимся на структурах. Мы создадим структуру predpr, содержащую информацию о автобазах, и будем обращаться к ней при помощи переменной типа predpr.
Структура predpr и переменная ved типа predpr будут объявлены как глобальные переменные.
Для структуризации программы, ее удобочитаемости и наглядности построение программы будет основываться на функциях.
Так как информация о автобазах однотипная, и нам придется передавать ее в функции и обратно, практически все остальные переменные будут локальными, для избежания путаницы и зацикливания.
В С++ используются два типа файлов: текстовые и двоичные (бинарные). По умолчанию файлы открываются в текстовом режиме. Это означает, что при вводе из текстового файла последовательность символов "возврат каретки / перевод строки " преобразуется в символ '\n' ; при выводе - наоборот. В процессе ввода - вывода производятся, как и в Паскале, преобразования данных из внутреннего (машинного) представления в символьное и наоборот.