Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
21 -
Лабораторная работа 1-10
Интегрированная среда разработки Dev-C++
Целью работы является знакомство с интегрированной средой разработки Dev-C++, предназначенной для разработки программ на языке С.
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, интегрированная среда разработки Dev-C++.
Программа на языке C представляет собой совокупность следующих элементов:
директив препроцессора;
указаний компилятору;
объявлений переменных и функций;
определений функций;
выполняемых операторов.
Директивы препроцессора определяют действия по преобразованию текста исходной программы перед компиляцией.
Указания компилятору это специальные инструкции для компилятора языка С.
Объявления переменных задают имена и атрибуты переменной, а объявления функций задают их имена, типы возвращаемых значений и атрибуты формальных параметров.
Определение функции специфицирует тело (текст) функции, который представляет собой блок последовательность операторов. Тело функции содержит объявления и/или выполняемые операторы. Началом блока служит символ "{", окончанием символ "}". Определение функции имеет следующий синтаксис:
тип-возвращаемого-значения идентификатор-функции (параметр-1, параметр-2,…)
где тип-возвращаемого-значения один из типов переменных C (например, int или float), идентификатор-функции имя функции, параметр-1, параметр-2,… параметры функции. Если функция имеет несколько параметров, они отделяются друг от друга запятыми. Если функции не передается никаких параметров, то в качестве единственного параметра (в соответствии со стандартом ANSI) задается ключевое слово void или просто пустые скобки.
Выполняемые операторы определяют действия программы по реализации алгоритма ее работы.
Возвращаемое функцией значение определяется в теле функции с помощью оператора return (в теле функции может быть несколько операторов return). Оператор return имеет следующий синтаксис:
return выражение;
где выражение вычисляется и подставляется вместо вызова функции. Тип результата вычисления выражения должен совпадать с типом-возвращаемого-значения в определении функции.
Признаком окончания операторов объявлений и выполняемых операторов является символ ";".
Чтобы программа на языке C была скомпилирована и выполнена, она должна содержать, по крайней мере, одно определение функции. Если программа содержит несколько функций, то среди них выделяется одна функция, которая должна иметь имя main. С нее начинается выполнение программы. Если программа содержит только одну функцию, то она и является главной (и должна иметь имя main).
Функция main возвращает значение типа int (обычно при нормальном завершении программы в выражении в операторе return задается число 0). Пока будем считать, что в функцию main не передается никаких аргументов, т.е. определение функции имеет следующий вид:
int main(void).
Таким образом, общая структура (скелет) простой программы на языке C будет выглядеть следующим образом:
операторы #include
int main(void)
{
операторы объявления
выполняемые операторы
return 0;
}
Интегрированная среда разработки IDE (Integrated Development Environment) Dev-C++ для языков C и C++ включает в себя следующие основные компоненты:
Эта IDE имеет набор меню, которые дают возможность именовать и сохранять файл исходного кода, а также компилировать, компоновать, выполнять и отлаживать программы, не покидая окно IDE. Если компилятор обнаруживает ошибки, выполняется возврат в программу редактора (при этом указываются ошибочные строки программы и соответствующие сообщения об ошибках). Если программа содержит несколько исходных модулей, в IDE создается проект, в котором указываются имена файлов, содержащих исходные модули. Это дает возможность не только компоновать все объектные модули проекта в единый загрузочный модуль, но и автоматически перекомпилировать только те модули проекта, в которых были сделаны изменения.
Вызов пунктов меню, переключение окон и выход из IDE выполняется в Dev-C++ таким же образом, как и в других приложениях Windows.
Окно редактора Dev-C++ имеет следующий вид:
Панели инструментов можно добавлять или удалять с помощью контекстного меню, которое вызывается, если щелкнуть правой кнопкой мыши на свободном месте панелей инструментов.
Папка инсталляции Dev-C++ DevCppInstall содержит:
Инсталляция Dev-C++ выполняется при запуске файла
devcpp-4.9.9.2_setup.exe
и содержит следующие шаги:
1. Выбор языка интерфейса в диалоговом окне Installer Language: Russian русский, Ukrainian украинский или English английский, а затем нажатие кнопки OK.
2. Нажатие кнопки Согласен в диалоговом окне Лицензионное соглашение.
3. Выбор полной (Full) установки в диалоговом окне Компоненты устанавливаемой программы, а затем нажатие кнопки Далее.
4. Выбор папки установки Dev-C++ в диалоговом окне Выбор папки установки (рекомендуется папка C:/Dev-Cpp), а затем нажатие кнопки Установить.
После завершения установки программа Dev-C++ запускается автоматически.
При первом запуске программы можно выбрать язык меню в раскрывающемся списке Select your language: Russian (Русский) или Ukrainian (Українська), а также возможность вывода всплывающих подсказок с параметрами функций при включении переключателя Yes, I want to use this feature.
Запуск программы Dev-C++ выполняется либо с помощью значка , либо запустив файл devcpp.exe в папке C:/Dev-Cpp.
Перед работой с Dev-C++ должна быть выполнена настройка IDE.
Если язык интерфейса для команд меню, кнопок панелей инструментов и выводимых сообщений не задан при первом запуске программы, для изменения интерфейса в меню Tools (Сервис) надо выбрать команду Environment Options (Параметры среды) и во вкладке Interface (Интерфейс) диалогового окна этой команды из раскрывающегося списка поля Language (Язык) задать язык интерфейса: Russian (Русский) или Ukrainian (Українська).
В дальнейшем предполагается, что в качестве языка интерфейса выбран русский язык.
Во вкладке в раскрывающемся списке Тема устанавливается также вид (тема) графических элементов окна IDE. Можно установить одну из трех тем: New Look, Gnome или Blue (в дальнейшем предполагается, что установлена тема New Look). Рекомендуется также включить переключатели Не показывать заставку при запуске и Использовать тему XP, а также для стиля диалогов задать стиль Windows 2000.
Шрифт и размер шрифта, используемые в редакторе, устанавливаются во вкладке Вид диалогового окна команды Параметры редактора меню Сервис. В раскрывающихся списках Шрифт в областях Шрифт редактора и Линейка этой вкладки рекомендуется установить моноширинный шрифт Courier New и в раскрывающихся списках Размер размер шрифта (рекомендуемый размер 12). Линейка это область серого цвета слева от текста программы. Ширину этой области можно изменить с помощью поля Ширина в области Линейка. При включении переключателя Номера строк в области Линейка на линейке будут выводиться номера строк программы.
Цветовое оформление различных элементов программы: ключевых слов, комментариев к программе, директив препроцессора и т.д. можно установить с помощью полей вкладки Синтаксис диалогового окна Параметры редактора меню Сервис.
Следует отметить, что в редакторе Dev-C++ используется кодировка ANSI (Windows-1251), а в окне приложения MS DOS кодировка OEM. Поэтому буквы кириллицы в строках формата функции printf() или в выводимых значениях строк будут передаваться неправильно. Чтобы этого избежать, необходимо выполнить следующие действия:
После этого, все буквы кириллицы в выводимых в окне приложения MS DOS строках будут автоматически перекодироваться из кодировки ANSI в кодировку OEM. Исключением является буква і украинского языка, которую надо набирать в латинском регистре (EN).
Создать простую программу, состоящую из одного модуля, в Dev-C++ можно одним из следующих способов:
При этом в области редактора появляется новая вкладка с пустым содержимым Безымянный1, Безымянный2 и т.д.
Набор и редактирование текста программы в Dev-C++ выполняется так же, как и в приложении Блокнот. Для вырезания, копирования и вставки фрагментов программы можно использовать команды Вырезать, Копировать и Вставить меню Правка, либо клавиши Ctrl+X, Ctrl+C Ctrl+V. Если текст программы был изменен, но изменения не сохранены, перед именем файла в названии вкладки выводятся символы "[*]".
При сохранении вновь созданного файла (с помощью команды Сохранить как меню Файл) рекомендуется задавать имя файла латинскими буквами. При сохранении файла в окне Сохранить файл следует в раскрывающемся списке Тип файла задать тип C source files (*.c).
Повторно сохранить отредактированный файл можно с помощью одной из следующих операций:
Открытие файла с программой выполняется одним из следующих способов:
Закрыть файл с программой можно:
Простую одномодульную программу в Dev-C++ можно сразу откомпилировать, скомпоновать и выполнить одним из следующих способов:
Отдельно компиляция программы выполняется:
а выполнение программы:
Если же ошибок не обнаружено, выводится следующее диалоговое окно:
Если при компиляции и компоновке не обнаружено ошибок, в Dev-C++ открывается окно выполнения программы как окно приложения MS DOS:
Следует отметить, что при запуске программы в окне в Windows XP после выполнения оператора return окно выполнения программы автоматически закрывается и часто результат выполнения программы увидеть нельзя.
Чтобы этого не происходило, обычно перед оператором return ставят оператор
getchar();,
который вызывает функцию ввода символа. Эта функция, так же как и функция printf(), находится в разделе stdio.h стандартной библиотеки C. В этом случае окно выполнения приложения MS DOS закрывается при вводе любого символа (или просто нажатия клавиши Enter). Иногда программа уже ожидает ввода символов. В этом случае в программе необходимо два раза повторить вызов функции getchar().
Отсутствие в программе синтаксических ошибок не является гарантией того, что программа будет работать правильно, т. е. выдавать верные результаты. Обычно причиной неправильной работы программы является либо неверный алгоритм, либо неверная реализация правильного алгоритма, либо нарушение правил языка C (например, правил по преобразованию типов переменных).
Чтобы выявить ошибки при работе программы использовать один из следующих способов:
Операторы printf() можно вставить, чтобы проверить выполнение каких-либо фрагментов программы, например, выполнение цикла:
printf("\nLoop begin"); /* Фиксация начала цикла */
for(i=0; i < 10; i++)
{
sum += a[i];
}
printf("\nLoop end"); /* Фиксация окончания цикла */
Кроме того, операторы можно использовать для вывода текущих значений каких-либо переменных, например, изменения переменных i и sum в цикле:
for(i=0; i < 10; i++)
{
sum += a[i];
/* Вывод значений i и sum при выполнении цикла */
printf("\ni=%d sum=%d", i, sum);
}
Для запуска программы в режиме отладки необходимо выполнить одну из следующих операций:
При первом запуске будет выведено сообщение:
Ваш проект не содержит отладочной информации, хотите разрешить отладку и перестроить проект?
Если в процессе отладки были внесены изменения в программу, будет выведено сообщение:
Исходный файл новее исполняемого модуля. Хотите пересобрать исполняемый модуль?
На эти вопросы необходимо ответить Yes и повторно запустить отладку.
Управление выполнением программы в режиме отладки производится с помощью команд меню Отладка, либо аналогичных им кнопок на панели инструментов. Однако более удобным является использование вкладки Отладка в нижней части окна Dev-C++. В этой вкладке находятся кнопки всех необходимых для отладки инструментов:
При работе в режиме отладки можно задать в программе точки прерывания операторы, перед выполнением которых работа программы будет приостановлена. Чтобы задать такую точку или точки, необходимо щелкнуть мышью слева от этих операторов, и операторы будут выделены красным цветом:
При повторном щелчке мышью слева от оператора точка прерывания для этого оператора будет удалена.
Чтобы запустить программу и остановить выполнение в точке прерывания, надо установить курсор в первой точке прерывания и нажать кнопку Выполнить до курсора (). При этом цвет выделения первой точки прерывания измениться с красного на синий:
Чтобы остановить выполнение программы в следующей точке прерывания, надо повторно нажать кнопку Выполнить до курсора (). Кнопка Продолжить выполнение () выполняет программу либо до следующей точки прерывания, либо (после последней точки прерывания) до конца. Для прекращения выполнения программы в режиме отладки надо нажать кнопку Остановить выполнение ().
С помощью кнопки Следующий шаг () можно выполнять программу по одному оператору (шагу). При этом оператор, который будет выполняться следующим, подсвечивается синим цветом со стрелкой слева:
При использовании кнопки Следующий шаг () для пошагового выполнения вызов функций пользователя в операторе рассматривается как один шаг. Чтобы перейти к пошаговому выполнению операторов вызываемой функции (в данном случае функции calcint()) надо использовать кнопку Шаг внутрь ():
Чтобы проверить правильность работы программы, часто требуется отслеживать изменение значения переменных при выполнении программы в режиме отладки. В качестве переменной могут выступать простые переменные, а также массивы, структуры и объединения (в этом случае будут отслеживаться все элементы массивов, структур или объединений). Можно также отслеживать отдельные элементы массивов, структур и объединений. Чтобы отследить значения какой-либо переменной или ее элемента при выполнении программы надо (после достижения точки прерывания или выполнения очередного шага программы) нажать на кнопку Добавить в наблюдаемые () и ввести имя переменной (или имя элемента переменной, например a[0]) в диалоговом окне:
После этого имена и текущие значения переменной будут выводиться в левом окне IDE (как это показано на рисунке для второй точки прерывания):
Значение переменной (или всех ее элементов) можно также узнать, если просто указать на ее имя в тексте программы курсором мыши (для этого во вкладке Параметры среды меню Сервис должна быть включена опция Следить за переменной под мышью).
Чтобы убрать переменную из списка наблюдаемых, надо выделить строку для этой переменной в левом окне IDE и нажать на кнопку Удалить объект наблюдения ().
Для отладки программы, содержащей несколько функций, можно использовать обратную трассировку. Это средство позволяет проследить (в обратном порядке) какие функции вызвали выполняемую в данный момент функцию. Для каждой функции выводится:
Так, в приведенном выше примере функция main() вызывает функцию calcint(), которая, в свою очередь, вызывает либо функцию addint(), либо функцию substractint(). Если при пошаговом выполнении программы или достижении очередной точки прерывания текущий выполняемый оператор находится в функции addint():
то во вкладке Отслеживать вкладки Отладка будет выведена обратная трассировка вызовов для функции addint():
Большие и сложные программы обычно разбиваются на программные модули. В C программные модули это функции. В ходе выполнения программы одни функции вызывают другие, и, после выполнения функции, управление возвращается в вызывающую функцию. Выполнение программы начинается с выполнения функции с именем main. Функции небольшой программы можно собрать в одном файле, однако если программа большая, лучше разбить ее на несколько файлов, в каждом из которых содержатся одна или несколько функций. В этом случае при модификации программы достаточно перекомпилировать только те файлы, в которых произведены изменения, а затем повторно выполнить компоновку и запуск программы. Этот процесс можно выполнять вручную, однако, многие IDE (не только для языка C) позволяют автоматизировать процесс создания и модификации больших программ с помощью проектов.
Проект это набор файлов, содержащих программные модули, которые рассматриваются как одна программа.
Создать новый проект можно либо с помощью команды Проект подменю команды Создать меню Файл, либо нажав кнопку Проект () на панели инструментов.
После этого открывается диалоговое окно нового проекта:
Во вкладке Basic этого окна необходимо выбрать вид проекта: приложение Windows (Windows Application), консольное приложение (Console Application), статическая библиотека (Static Library), библиотека динамических связей (DLL) для Windows или пустой проект (Empty Project). Для создания многомодульных программ с выводом в окно MS DOS лучше выбрать вид Empty Project. Затем в области Параметры проекта задается имя проекта (латинскими буквами) и тип проекта (C-проект). После нажатия кнопки OK выбирается папка, в которой будет сохранен файл с данными о проекте (с расширением .dev).
После этого в левом окне IDE во вкладке Проект появляется имя проекта. С помощью контекстного меню для проекта можно выполнить следующие операции:
В проекте должен быть хотя бы один файл. После создания или добавления всех модулей проекта:
можно запускать проект на компиляцию и выполнение, используя те же команды и кнопки, что и для одномодульных программ. При этом будут повторно компилироваться только те файлы проекта, в которых проведены изменения. Загрузочный файл для проекта имеет то же имя, что и имя проекта, но с расширением .exe.
Примечания:
Справочная система вызывается с помощью команд меню Справка и организована по тому же принципу, что и все справочные системы для приложений Windows. С помощью команды Справка Dev-C++ можно получить сведения о работе в среде IDE (основных выполняемых операциях и командах меню) в разделе Dev-C++ 5, а в разделе An Introduction to C Programming содержатся краткие сведения о языке C.
Можно также добавить дополнительные справочные данные в меню Справка. Так, папку Docs, содержащую папку cpp_manpages с тремя файлами: c++ man.chm, cpp.chm и manpages.chm надо скопировать в папку Dev-Cpp. Чтобы сделать доступными эти файлы при работе с Dev-C++, надо выполнить следующие действия:
В результате в меню Справка появится новая команда c++ man.chm, которая выводит на экран справочник по C/C++ (cpprefrrence.com) и справочные страницы для Linux (manpages.com).
Контактная информация адреса сайтов разработчиков Dev-C++, компилятора Mingw, а также дополнительных ресурсов содержится в диалоговом меню команды О Dev-C++ меню Справка.
Множество символов языка C включает в себя:
буквы и цифры;
пробельные символы;
разделители;
специальные символы.
В C используются прописные (A-Z) и строчные (a-z) латинские буквы и цифры от 0 до 9. Эти символы используются при формировании констант, идентификаторов и ключевых слов. Внутри символьных констант, символьных строк и комментариев можно использовать и другие символы клавиатуры, включая буквы кириллицы.
Пробельные символы отделяют друг от друга элементы программы и включают, помимо символа пробела, символы табуляции, перевода строки, возврата каретки, новой страницы, вертикальной табуляции и новой строки. Комментарии компилятор C также рассматривает как пробельные символы. Нажатие клавиш Ctrl+Z (код ASCII 1A) рассматривается как индикатор конца файла.
Символы-разделители языка C приведены в следующей таблице:
Символ |
Наименование |
Символ |
Наименование |
, |
Запятая |
{ |
Левая фигурная скобка |
. |
Точка |
} |
Правая фигурная скобка |
; |
Точка с запятой |
< |
Знак «меньше» |
: |
Двоеточие |
> |
Знак «больше» |
? |
Знак вопроса |
[ |
Левая квадратная скобка |
|
Одиночная кавычка (апостроф) |
] |
Правая квадратная скобка |
! |
Восклицательный знак |
# |
Знак номера |
| |
Вертикальная черта |
% |
Процент |
/ |
Наклонная черта (слеш) |
& |
Амперсант |
\ |
Обратный слеш |
^ |
Стрелка вверх |
~ |
Тильда |
- |
Знак минус |
_ |
Подчеркивание |
= |
Знак равенства |
( |
Левая круглая скобка |
+ |
Знак плюс |
) |
Правая круглая скобка |
* |
Знак умножения (звездочка) |
Специальные символы предназначены для представления пробельных и неграфических в строках и символьных константах и представлены в следующей таблице:
Символ |
Код ASCII |
Наименование |
Символ |
Код ASCII |
Наименование |
\n |
0A |
Новая строка |
\a |
07 |
Звуковой сигнал |
\t |
09 |
Горизонтальная табуляция |
\' |
2C |
Апостроф |
\v |
0B |
Вертикальная табуляция |
\" |
22 |
Двойная кавычка |
\b |
08 |
Забой |
\\ |
5C |
Обратный слеш |
\r |
0D |
Возврат каретки |
\ddd |
Байтовое значение в восьмеричном представлении |
|
\f |
0C |
Новая страница |
\xdd или \Xdd |
Байтовое значение в шестнадцатеричном представлении |
Идентификаторы это имена переменных, функций и меток, используемых в программе. Идентификатор это последовательность из одной или нескольких латинских букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания. В идентификаторе допускается любое число символов, однако компилятором учитываются только первые 32 символа. Прописные и строчные буквы в идентификаторах считаются разными символами.
Компилятор языка C не разрешает использование идентификаторов, совпадающих по написанию с ключевыми словами. Ключевые слова это идентификаторы, которые имеют специальное значение для компилятора языка С.
Комментарий это последовательность символов, используемая для пояснения программы, отдельных ее частей и строк. Для идентификации начала комментария используются символы "/*", для идентификации окончания символы "*/".
Комментарии могут располагаться в любом месте программы, где допустимы пробельные символы и могут занимать несколько строк. Комментарии не могут быть вложенными.
В языке C различают четыре типа констант:
целые числа;
числа с плавающей точкой;
символьные константы;
символьные строки.
Целая константа это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целое значение. Если знак минус перед константой отсутствует, она считается положительной. В компьютере целая константа представляется в формате двоичного числа с фиксированной точкой.
Десятичная константа это последовательность из одной или нескольких десятичных цифр (от 0 до 9).
Восьмеричная константа представляется цифрами от 0 до 7, причем первой цифрой числа должен быть 0.
Шестнадцатеричная константа содержит впереди себя символы "0x" или "0X" и одну или более цифр от 0 до 9 и букв A(a) 10, B(b) 11, C(c) 12, D(d) 13, E(e) 14 и F(f) 15.
Следует отметить, что в языке C восьмеричные и шестнадцатеричные константы могут быть только положительными и поэтому записываются без знака.
Константа с плавающей точкой это действительное десятичное число. Если знак минус перед константой отсутствует, она считается положительной. В компьютере константа с плавающей точкой представляется в формате двоичного числа с плавающей точкой (в виде знака числа, мантиссы и порядка).
Константа с плавающей точкой записывается в двух форматах:
В первом формате разделителем между целой частью и дробной частью служит символ ".". Число в экспоненциальной форме содержит две компоненты: целое или действительное десятичное число мантиссу и целочисленный десятичный порядок. В качестве разделителя между мантиссой и порядком используется одни из символов: "e" или "E".
Символьная константа это буква, цифра, знак пунктуации или специальный символ, заключенный в одиночные апострофы символ "'".
Символьная строка это последовательность символов, заключенная в двойные кавычки. В компьютере символьная строка представляется как последовательность байт. Длина этой последовательности равна числу символов в символьной строке плюс 1, поскольку в конец строки автоматически добавляется нулевой символ "\0", служащий признаком ее окончания.
В C определены следующие типы простых переменных:
Ключевое слово |
Тип |
char |
Единичный байт, который может содержать один символ из допустимого множества символов. |
int |
Целое число. |
float |
Число с плавающей точкой одинарной точности. |
double |
Число с плавающей точкой двойной точности. |
Для простых переменных можно задать следующие квалификаторы, уточняющие тип простой переменной:
Ключевое слово |
Тип |
short |
Короткое int. |
long |
Длинное int, float или double. |
signed |
int или char со знаком (первый бит выделяется под знак). |
unsigned |
int или char без знака. |
const |
Значение переменной не может быть изменено в программе. |
volatile |
Значение переменной может изменяться в программе. |
Если тип переменной опущен, предполагается int (в этом случае должен быть обязательно задан один из квалификаторов).
При объявлении переменной ей можно задать начальное значение (инициализировать переменную). Инициализация переменной имеет следующий синтаксис:
идентификатор=константа
где идентификатор это идентификатор переменной, а константа значение (числовое и символьное), которое присваивается переменной с указанным идентификатором.
По умолчанию в C выполняются следующие соглашения:
Арифметические операторы используются для выполнения арифметических операций над константами и переменными. Комбинация переменных, числовых констант и вызовов функций, объединенных арифметическими операторами, называется арифметическим выражением.
Результат вычисления арифметического выражения может быть присвоен переменной с помощью оператора присваивания символа "=".
В языке C определены следующие арифметические операторы:
Оператор |
Действие |
+ |
Присваивание переменной положительного значения. |
- |
Присваивание переменной отрицательного значения. |
+ |
Сложение. |
- |
Вычитание. |
* |
Умножение. |
/ |
Деление. |
% |
Определение остатка от деления целых чисел. |
++ |
Увеличение значения переменной на единицу. |
-- |
Уменьшение значения переменной на единицу. |
Операции в выражении выполняются слева направо с учетом общепринятого старшинства арифметических операций. Порядок выполнения операций можно изменить, как и в математике, с помощью скобок.
Для выполнения арифметических операций в C задана следующая приоритетность (в порядке убывания приоритета):
В языке C оператор присваивания может быть простым (символ "=") или составным (знак операции и символ "="). В последнем случае запись:
переменная знак-операции = выражение
эквивалентна следующей записи
переменная = переменная знак-операции (выражение)
где знак операции один из следующих арифметических операторов: "*", "/", "%", "+" и "-".
При выполнении арифметических операций или операции присваивания переменные и константы, участвующие в этих операциях могут быть разных типов, например в следующей последовательности операторов:
double y;
float x;
y = x + 5;
суммируются переменная x, имеющая тип float и константа целого типа -5, а результат суммирования присваивается переменной y типа double.
В таких случаях в C перед выполнением операций происходит преобразование операндов из одного типа в другой.
Для арифметических операций при этом действуют следующие правила:
Типы char и short преобразуются в int.
Тип float преобразуется в double.
Если один из операндов имеет тип double, то другой преобразуется в double, и результат имеет тип double.
Если один из операндов имеет тип long, то другой преобразуется в long, и результат имеет тип long.
Если один из операндов имеет тип unsigned, то другой преобразуется в unsigned и результат имеет тип unsigned.
При присваивании значение правой части преобразуется к типу левой. Этот тип и является типом результата. При этом преобразование происходит по следующим правилам:
Символьные переменные преобразуются в целые либо со знаковым расширением, либо без него, как указано выше. При обратном преобразовании int в char старшие биты просто отбрасываются.
Типы float и double преобразуются в int отбрасыванием дробной части и округлением (для double). При обратном преобразовании сначала происходит преобразование в тип long, а затем преобразование к плавающему типу (возможно с потерей точности).
Тип double преобразуется во float с помощью округления. Обратное преобразование происходит без потери точности.
Длинные целые преобразуются в более короткие целые и в переменные типа char посредством отбрасывания старших битов. При обратном преобразовании данные дополняются нулями слева.
При преобразовании типа unsigned в тип signed старший бит рассматривается как знаковый, а при обратном преобразовании старший бит рассматривается как часть числа.
Помимо перечисленных выше преобразований, называемых неявными преобразованиями типа (поскольку они автоматически выполняются компилятором без вмешательства программиста), в C можно задать явное преобразование типа с помощью следующей операции:
(имя-типа) выражение
где выражение преобразуется к указанному типу по правилам преобразования, которые изложенным выше и присваивается некоторой фиктивной переменной указанного типа, которая затем используется вместо всего выражения. Приоритет выполнение этой операции ниже, чем присвоение знака числу, но выше, чем у арифметических операций. Например, (int) (3.8 + 5) преобразует сумму константы 3.8 типа double и 5 типа int в выражение целого типа (скобки необходимы, поскольку приоритет операции преобразования типа выше, чем у операции сложения).
Стандартная библиотека языка C разбита по группам функций, например, математические функции, функции ввода-вывода и т.д. Вызов необходимой для использования в конкретной программе группы функций осуществляется по директиве препроцессора #include, имеющий следующий формат:
#include <головной-файл>
где головной-файл имя головного файла для группы функций (например, math.h для математических функций).
Оператор #include для группы функций должен быть задан до их использования в программе (принято обычно все операторы #include для вызова разделов библиотек размещать в самом начале программы).
Функции ввода-вывода определены в головном файле stdio.h.
Функция форматного вывода printf() стандартной библиотеки C выводит символы и формирует и выводит задаваемые аргументами значения на дисплей. Функция имеет переменное число аргументов и вызывается следующим образом:
printf("строка-формата" [, аргумент-1 [,аргумент-2...]])
где строка-формата символьная строка, состоящая из обычных символов, специальных символов и, если за строкой формата следует один или несколько аргументов, спецификаций полей формата вывода (по одному для каждого аргумента).
Простая спецификация формата содержит только символ "%" и символ выводимого типа. Основные символы типов приведены в следующей таблице:
Сим-вол типа |
Тип аргумента |
Вид печати |
d |
int |
Десятичное целое число. |
i |
int signed |
Десятичное целое число со знаком. |
u |
int unsigned |
Десятичное целое число без знака |
o |
int |
Восьмеричное число без знака (без 0 в начале числа). |
x, X |
int |
Шестнадцатеричное число без знака (без 0x или 0X в начале). |
c |
int или char |
Единичный символ после преобразования в unsigned char. |
s |
char * |
Строка символов. |
f |
float или double |
Десятичное число с точкой и со знаком "-" (если число отрицательное). |
e, E |
float или double |
Десятичное число в экспоненциальной форме (целая часть, дробная часть и, после e или E показатель степени со знаком). |
g, G |
float; double |
В зависимости от величины и точности числа выводится либо по типу f, либо по типам e или E. |
% |
% |
Выводится символ "%". |
Если число спецификаций формата больше числа аргументов, излишние спецификации игнорируются. В обратном случае результат вывода не определен.
Скопируйте в свою папку программу LAB10.C из папки C Examples в папке Рабочая папка.
printf("\nProgram start);
printf ("\nThe greatest common divisor %d and %d: %d\n",m,n,x1);
Номер варианта |
Исходные данные |
Операция |
Вывод |
||
Имя |
Тип |
Значение |
|||
1 |
x1 |
double |
3.5 |
x равен целой части x1+x2 |
x1, x2 и x |
x2 |
double |
-1.8 |
|||
x |
double |
-- |
|||
2 |
x1 |
double |
8.4 |
x равен дробной части x1+x2 |
x1, x2 и x |
x2 |
double |
-1.3 |
|||
x |
double |
-- |
|||
3 |
i |
double |
8.7 |
x равен целой части i*j |
i, j и x |
j |
double |
-12 |
|||
x |
double |
-- |
|||
4 |
u1 |
double |
13.3 |
u равен дробной части u1*u2 |
u1, u2 и u |
u2 |
double |
-7.8 |
|||
u |
double |
-- |
|||
5 |
a1 |
double |
-7.8 |
a равен целой части a1/a2 |
a1, a2 и a |
a2 |
double |
-4.3 |
|||
a |
double |
-- |
|||
6 |
b1 |
double |
14.6 |
b равен дробной части b1/b2 |
b1, b2 и b |
b2 |
double |
5.7 |
|||
b |
double |
-- |
|||
7 |
w1 |
double |
118.6 |
w= w1 + целая часть w2 |
w1, w2 и w |
w2 |
double |
1.52·102 |
|||
w |
double |
-- |
|||
8 |
i1 |
int |
15 |
z=i1/i2 (результат- вещественное число) |
i1, i2 и z |
i2 |
int |
6 |
|||
z |
double |
-- |
|||
9 |
d1 |
double |
18.3 |
d равен остатку от d1/d2 |
d1, d2 и d |
d2 |
double |
4.8 |
|||
d |
double |
-- |
|||
10 |
y |
int |
8 |
y1=y++ +5 y=8 y2=++y +5 |
y, y1 и y2 |
y1 |
int |
-- |
|||
y2 |
int |
-- |
Номер варианта |
Исходные данные |
Операция |
Вывод |
||
Имя |
Тип |
Значение |
|||
11 |
t |
int |
14 |
t1=t-- +7 t=14 t2=--t +7 |
t, t1 и t2 |
t1 |
int |
-- |
|||
t2 |
int |
-- |
|||
12 |
v1 |
double |
14.3 |
v равно значению первой цифры после десятичной точки в v1/v2 |
v1, v2, v1/v2 и v |
v2 |
double |
3.1 |
|||
v |
int |
-- |
|||
13 |
s1 |
double |
144.2 |
s равно значению первой цифры в целой части s1/s2 |
s1, s2, s1/s2 и s |
s2 |
double |
7.3 |
|||
s |
int |
-- |
|||
14 |
a1 |
int |
1 |
Условная операция: если x>0, то y=a1, иначе y=a2 |
x, a1, a2 и y |
a2 |
int |
-1 |
|||
x |
int |
-3 |
|||
y |
int |
-- |
|||
15 |
g1 |
int |
0 |
Условная операция: если g четное, то z=g1, иначе z=g2 |
g, g1, g2 и z |
g2 |
int |
1 |
|||
g |
int |
4 |
|||
z |
int |
-- |
В отчете должно быть представлено содержимое созданного вами документа.
Какие компоненты включают в себя интегрированная оболочка BorlandC?
Назовите окна интегрированной оболочки BorlandC++ и их назначение.
Какая операции над текстом исходной программы можно выполнить с помощью команд меню File?
С помощью какой команды можно сразу откомпилировать, скомпоновать и выполнить программу в BorlandC++?
Какие типы символов определены в C? Какие функции выполняет каждый тип символов?
Какие типы констант определены в C?
Какие типы целых констант определены в C?
Как объявляются переменные в C? Какие функции выполняют квалификаторы при объявлении переменных?
Как инициализируются переменные в C?
Какие арифметические операции определены в C?
Каков приоритет арифметических операций в C и как можно изменить порядок выполнения операций?
Какие формы оператора присваивания определены в C?
Что такое стандартная библиотека C и как включить разделы этой библиотеки в текст программы?
Как можно вывести результаты работы на экран дисплея в C?
Для каких целей используются спецификации формата и как они записываются?