Главная страница

Язык Си часть 1. Язык Си Часть Интегрированная среда, первая программа


Скачать 1.52 Mb.
НазваниеЯзык Си Часть Интегрированная среда, первая программа
Дата08.10.2019
Размер1.52 Mb.
Формат файлаpdf
Имя файлаЯзык Си часть 1.pdf
ТипПрограмма
#89146
страница1 из 3
  1   2   3

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ
ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Ульяновский государственный технический университет»
Язык Си
Часть 1. Интегрированная среда, первая программа,
ветвления.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ, ЗАДАНИЯ И ПРИМЕРЫ
ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
ДЛЯ
СТУДЕНТОВ НАПРАВЛЕНИЯ
09.03.02 «Информационные системы и технологии»
Составители:
А.Е. Докторов, Е.А. Докторова
Ульяновск
2015

2
ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ
Интегрированная среда разработки, ИСР (англ. IDE, Integrated de-
velopment environment) – система программных средств, используемая программистами для разработки программного обеспечения
(ПО).
Обычно, среда разработки включает в себя: текстовый редактор, компилятор, средства автоматизации сборки, отладчик.
При начальном изучении языков программирования Си и С++ бу- дем использовать кроссплатформенную интегрированную среду Co-
deBlocks, которая включает в себя все указанные компоненты. На- помним, что кроссплатформенность – это способность программного обеспечения функционировать в нескольких различных операцион- ных системах или на разных аппаратных платформах.
Для инсталляции (англ. installation — установка, размещение, мон- таж) интегрированной среды будем использовать файл codeblocks-
8.02mingw-setup.exe (или более поздней версии), который можно взять по адресу http://ivk.ulstu.ru/files или найти в интернете. При самостоя- тельном поиске обратите внимание, чтобы инсталлятор содержал компилятор.
Инсталляция осуществляется простым запуском на исполнение файла codeblocks-8.02mingw-setup.exe (желательно от имени админи- стратора, не забывая провести проверку на вирусы). Весь процесс идет практически в автоматическом режиме. При этом надо запом- нить путь размещения файлов интегрированной среды, например:
c:\Program Files\CodeBlocks. Знание пути поможет быстро обнаружить и устранить некоторые проблемы. Например, если по указанному пу-

3 ти не будет присутствовать каталог MinGW, то будет отсутствовать компилятор с языка Си.
CodeBlocks кроме самой интегрированной среды содержит множе- ство других файлов, например, достаточно подробное руководство по интегрированной среде разработки программ CodeBlocks (на англий- ском языке).
В каталоге c:\Program Files\CodeBlocks\MinGW есть подкаталоги:
bin – содержит исполняемые файлы, выполняющие разнообразные действия в интегрированной среде (в том числе компиляцию и сборку программ), include – содержит включаемые файлы, lib – библиотечные файлы.
Что такое включаемые и библиотечные файлы, как идет сам про- цесс преобразования (см. Рис. 1.) текстового файла на языке Си (файл с расширением c, например, main.c) в исполняемый (executable) файл
(файл с расширением exe, например, first.exe), который мы можем с помощью операционной системы загрузить в память компьютера и выполнить, иллюстрируется в книге на странице 65.
По схеме видно, что текст программы, написанный программи- стом, после добавления дополнительной информации, обрабатывается препроцессором, компилятором и компоновщиком. Это процесс сборки программы в интегрированной среде автоматизирован и не требует раздельного запуска препроцессора, компилятора и компо- новщика.
Каждая программа, подготовленная в интегрированной среде, мо- жет иметь свои персональные настройки для дальнейшей обработки.
Персональные настройки сохраняются в файле проекта (файл с рас- ширением cbpcodeblocks project). Заметим, что процесс пошаговой отладки программы, можно выполнить только с использованием про- екта. Процесс работы в интегрированной среде отражен на рисунках со второго по седьмой.

4
Рис. 1. Схема обработки программы
Новый проект создается в интегрированной среде очень просто
(см. Рис. 2). Достаточно выбрать вариант «Create a new project». На этом же рисунке видно, что открытие уже существующего проекта не сложнее (Open an existing project).
В дальнейшем мы будем писать программы, которые используют так называемые устройства стандартного ввода (клавиатура) и стан- дартного вывода (экран дисплея). Такие программы также называют- ся консольными приложениями.
Консоль
компьютера (англ. console — пульт управления) — сово- купность устройств (в том числе устройств ввода-вывода), обеспечи- вающая взаимодействие человека-оператора с компьютером. Заме-

5 тим, что Microsoft Management Console в Microsoft Windows – это обо- лочка для управления системной конфигурацией Windows. Существу- ет также специальный тип окна, используемый текстовыми програм- мами
(командная строка) – такие окна также могут быть названы кон- сольными.
Выбираем консольное приложение (Рис. 3) и язык программиро- вания (Рис. 4), а далее, не забываем дать имя проекту и указать его расположение на носителе информации (Рис. 5).
Рис. 2. Создание нового проекта

6
Рис. 3. Выбор консольного приложения
Рис.4. Выбор языка программирования

7
Рис. 5. Определение имени проекта и места его расположения
Обратите внимание на то, какое будет имя проекта и полный путь к файлу проекта. Причем место размещения (Folder to create project in:) запоминается интегрированной средой после предыдущего запуска и предлагается при следующем запуске.
При выборе компилятора и конфигураций для создания исполняе- мых файлов (Рис. 6.) достаточно убедиться, что выбран GNU GCC
Compiler и будут созданы нужные конфигурации.
По завершении выбора конфигурации в нашем распоряжении бу- дет три окна (см. Рис.7.): 1) окно управления проектами, 2) окно ре- дактирования текста программы, 3) окно статуса выполнения (в дан- ном случае компиляции).
Исходный текст (Source, выделен стрелкой), надо раскрыть, дваж- ды кликнув левой кнопкой мыши сначала на слове Source, а потом на слове main.c (имя файла с программой на языке Си), которое появится ниже. Только после этого мы увидим в окне текстового редактора шаблон программы на языке Си (см. Рис. 8).

8
Рис. 6. Выбор компилятора и конфигураций
Рис. 7. Интегрированная среда разработки

9
Рис. 8. Шаблон программы на языке Си
Причем шаблон вполне работоспособен и содержит основные час- ти программы.
Теперь рассмотрим программу построчно. Читайте также книгу, начиная со страницы 63. Обратите внимание, что в книге приведен несколько другой вариант использования главной функции, что не меняет сути описания основной функции. Отличия вызваны исполь- зованием в книге другого компилятора с языка Си.
Итак, в 1-ой и 2-ой строках представлены директивы препроцессо- ру. То, что это директива – обозначено символом «решетка» (#). В данном случае – это директива «включить» (include). Эти две дирек- тивы добавляют в текст программы заголовочные файлы, содержащие прототипы библиотечных функций стандартного ввода-вывода и функций стандартной библиотеки. Перечень прототипов функций стандартного ввода-вывода (stdio – standard input-output) и стандарт- ной библиотеки (stdlib – standard library) найдите в книге на страницах
565-570.
Прототип функции указывает на то, какого типа нужны функции параметры, и какого типа оказывается результат, возвращаемый функцией. Другие препроцессорные средства представлены в третьей главе книги (см. стр. 131).
В строке 4 начинается описание реализации (или алгоритма рабо- ты) главной функции:

10
int – тип результата работы функции или тип возвращаемого зна- чения;
main – имя главной функции;
( ) – круглые скобки – это обязательный атрибут функции (обычно в скобках записываются параметры, необходимые для работы функ- ции, но, если параметров нет, то скобки все равно обязательны).
В строках 5 ({ – открывающая фигурная скобка) и 8 (} – закры- вающая фигурная скобка) определяются начало и завершение блока программы (в данном случае – границы функции main или еѐ тело).
В строке 7 – указывается, какой результат вернет (return) функция.
Принято, что главная функция, выполняющаяся без ошибок, должна вернуть операционной системе число ноль.
И, наконец, в строке 6 вызывается на исполнение библиотечная функция вывода (printf) на стандартное устройство (экран монитора).
В функцию printf в качестве параметра (в круглых скобках) пере- дается строка текста. Константная строка в языке Си записывается в двойных кавычках (см. страницы 21-23 книги). В конце строки запи- сан управляющий символ \n, означающий, что после вывода текста на экран курсор переместится в новую строку. На странице 16 книги найдите другие управляющие символы, а начиная со страницы 553 – коды символов.
При этом обратите внимание, что коды одних и тех же по прори- совке символов в разных операционных системах разные. Даже для таких «родственных» систем, как MS DOS и Windows есть отличия. В
MS DOS используется кодовая страница 866, а в Windows – 1251. От- личия в кодировке, конечно, проявляются только для «расширенной» части алфавита, то есть не латиницы. Латинские буквы, символы цифр и основные знаки препинания имеют одинаковую кодировку.
Текст программы, подготовленный в интегрированной среде, имеет кодировку 1251. Текст, выводимый в консольное окно, по умолчанию

11 имеет кодировку 866. Далее будет показано, как изменить кодировку в консольном окне.
Теперь перейдем к вопросу работы в интегрированной среде. Сре- да содержит меню и кнопки управления. Рассмотрим, для начала, только часть кнопок управления (см. Рис. 9).
Рис. 9. Управляющие клавиши
Полный процесс преобразования программы на языке Си (от тек- ста программы до исполняемого модуля) представлен в книге на странице 65 книги. Он содержит работу препроцессора, компилятора и компоновщика. В интегрированной среде достаточно нажать на кнопку 1 (Build – построить проект) и пройдут все три операции. При нажатии кнопки 2 (Run) программа запустится на исполнение. А при нажатии кнопки 3 (Build & Run - построить проект и запустить на ис- полнение) оба предыдущие действия – и сборка (build) программы и ее исполнение (Run). Результат сборки отображается в окне Build log
(Рис. 10).
Рис. 10. Статус завершения сборки программы
В данном случае 0 ошибок (errors), 0 предупреждений (warnings).
В противном случае будет указан номер строки и тип ошибки.

12
После запуска программы на исполнение на экране появится всплывающее консольное окно, в котором будет результат работы программы (Рис. 11).
Рис. 11. Консольное окно
По умолчанию консольное окно будет черного цвета. Для на- стройки свойств окна надо кликнуть правой кнопкой мыши в указан- ном месте и провести настройку свойств шрифта (размер, цвет, а так- же, чтобы в дальнейшем работала русификация, не забудьте выбрать не точечный тип шрифта, а True Type, который обозначен двумя бук- вами T, см. Рис. 12).
Рис. 12. Окно настройки свойств консольного окна

13
Так как текущая кодовая страница в консольном окне 866, а в тек- стовом редакторе 1251, на экран вместо текста на русском языке мо- гут отображаться непонятные символы. Чтобы реализовать русифи- кацию достаточно в программе, например, в строке 3 ввести включе- ние файла windows.h, а в строке 5 команду изменения кодовой стра- ницы на 1251 (см. Рис. 13). С помощью функции system можно вы- полнить любую команду, доступную в консольном окне. Сама коман- да, как легко заметить, пишется в кавычках. В строке 5 записана ко- манда chcp (change code page) – изменить кодовую страницу. За ко- мандой следует номер кодовой страницы (1251), а далее перенаправ- ление вывода (обозначен знаком >) сообщения («Текущая кодовая страница 1251») на «пустое» (NUL) устройство.
Рис. 13. Использование команд в консольном окне
В данном примере в 7-ой строке с помощью функции system вы- зывается пауза в выполнении программы.
На этом первое знакомство с интегрированной средой разработки программ можно завершить и перейти к рассмотрению языка Си.

14
ЯЗЫК СИ
Тема №1. Функции стандартного ввода–вывода, вычисление
математических функций
Задание:
1) составить программу для проведения математических вычисле- ний по индивидуальным вариантам заданий, которые представлены далее по тексту;
2) все исходные данные, необходимые для вычислений, вводить с клавиатуры;
3) запущенная на исполнение программа должна выводить инфор- мацию об авторе и назначении программы (задание должно приво- диться полностью);
4) перед запросом ввода данных с клавиатуры обязательно должно быть сообщение о типе и количестве вводимых данных;
5) изучить наиболее распространенные математические функции
(даже если они не используются при выполнении индивидуального задания), перечень функций дан ниже по тексту.
Краткая теоретическая справка и рекомендации по выполне-
нию
При выполнении лабораторного задания обязательным является изучение материала по теме в книге
Подбельский
В. В. Программирование на языке Си: учебное пособие для вузов / Под-
бельский В. В., Фомин С. С. – 2-е изд., доп. – Москва: Финансы и ста-
тистика, 2005. – 600 с.. Авторы считают, что нет необходимости под- робного переписывания материала из книги. Здесь чаще всего будут присутствовать задание на необходимость изучения соответствующе- го материала и указание страницы в тексте книги. То есть, для выпол- нения лабораторного задания требуется выборочное чтение книги.

15
По теме №1 мы должны рассмотреть в языке Си:
1) представление числовой информации (стр. 17-20);
2) переменные и их типы (стр. 23-27), приведение типов (стр. 55);
3) операция и оператор присваивания (стр. 39, 53-55);
4) арифметические операции и операторы (стр. 36-37);
5) выражения и приведение арифметических типов (стр. 50);
6) библиотечные математические функции (стр. 562-564);
7) структуру простой программы (стр. 66) и функции форматного ввода и вывода (стр. 69-77, 337-353), а также пример выполнения.
По первому пункту обратите внимание на диапазоны представле- ния числовой информации.
По второму пункту заметим, что числа с плавающей точкой (ве- щественные) включают в себя и целочисленный диапазон.
По третьему пункту важным является тип данных, присваиваемых той или иной переменной, а также возможность объединения в одном операторе арифметического действия и присваивания.
В четвертом пункте обратите внимание, что оператор деления ис- пользуется как для целочисленного деления, так и для деления чисел с плавающей точкой. Будет ли результатом деления целое число или число с плавающей точкой зависит от исходных данных.
В пятом пункте интересны операторы инкремента (++, увеличение целого числа на единицу) и декремента (--, уменьшение целого числа на единицу). Заметьте, что они могут быть префиксными и постфикс- ными.
В шестом пункте для каждой функции обратите внимание на тип обрабатываемых данных, например, результатом функции abs(–3.7) будет число 3, а не 3.7 как ожидалось, т.к. функция abs может рабо- тать только с целыми числами. Прототипы математических функций приведены в файле math.h, а подробный их перечень в приложении 3 книги (стр. 562-564). Здесь приведем только краткий перечень мате-

16 матических функций для изучения (в тригонометрических функциях углы измеряются в радианах):
abs – абсолютная величина целого числа,
acos – вычисление арккосинуса,
asin – вычисление арксинуса,
atan – вычисление арктангенса,
atan2 – вычисление арктангенса (вычисляет угол по значению кате- тов),
atof – преобразует строку в число с плавающей точкой,
cabs – вычисляет абсолютную величину комплексного числа,
ceil – округление до ближайшего целого в большую сторону,
cos – вычисляет косинус,
coshвычисляет гиперболический косинус,
exp – вычисляет экспоненту (например, exp(x) вычисляет e
x
),
fabs – абсолютная величина числа с плавающей точкой,
floor – округление до ближайшего целого в меньшую сторону,
fmod – остаток целочисленного деления двух чисел (результат – число с плавающей точкой),
frexp – вычисляет значение мантиссы m и показателя степени n для преобразования числа с плавающей точкой к виду
n
m 2

,
hypot – вычисляет значение гипотенузы по значениям катетов,
ldexp – по значению мантиссы m и показателя степени n вычисляет число с плавающей точкой по формуле
n
m 2

,
log – вычисляет натуральный логарифм числа,
log10 – вычисляет десятичный логарифм числа,
modf – разбивает число с плавающей точкой на целую и дробную час- ти,
poly – вычисляет полином вида
n
n
x
a
x
a
x
a



1 1
0 0
,
pow – вычисляет число в степени,
pow10 – возведение числа 10 в степень,

17
sin – вычисление синуса угла,
sinh – вычисление гиперболического синуса,
sqrt – вычисление квадратного корня,
tan – вычисление тангенса угла,
tanh - вычисление гиперболического тангенса угла.
Пример выполнения задания по теме № 1
/* В программе использованы комментарии стр.10 */
/* Блок директив препроцессору стр. 131*/
// Включение файлов стр. 135 (// - тоже обозначает комментарий)
#include // заголовочный файл стандартного ввода-вывода
#include // заголовочный файл математических функций
#include // заголовочный файл функций ОС windows
// Замена в тексте (стр. 136) символ g будет заменен на запись 9.81
#define g 9.81
int main () /* Блок главной функции программы */
{ // начало блока главной функции
float V, H;/* Объявление переменных V и H */
system ("chcp 1251 > NUL"); // смена кодовой страницы
printf ("\n Лабораторная работа N1 вариант N12");
printf ("\n\n Выполнила студентка гр.Пд-11 Петрова Н.В.");
printf ("\n Вертикально вверх бросают камень \
со скоростью (V).");
printf ("\n Определите максимальную высоту (H) \
подъема камня.");
printf ("\n Введите начальную скорость в м/c (от 0 до 100) V=");
scanf ("%f", &V); // ввод значения скорости и размещение его ...
// по адресу
(
&
)
переменной V после преобразования к ...
// формату с плавающей точкой (см. стр. 345)

18
// Вычисление высоты проведено в два действия
H = pow (V,2); // 1) вычисление квадрата скорости
H = H / (2*g); // 2) деления квадрата скорости на 2*g
// Вывод результата вычисления в с точностью до двух знаков ...
/* При выводе результата после десятичной точки, всего выделено
пять знакомест, а после десятичной точки два знака (см. стр. 337)
*/
printf("\n Максимальная высота подъема \
камня H = %5.2f м \n", H);
// Остановка работы программы перед закрытием консольного окна
system ("pause");
return 0;
}// конец блока главной функции
Обратите внимание на то, что программа состоит из нескольких блоков, первый из которых включение (include) заголовочных файлов для обращения к библиотекам языка Си. Ни одна библиотечная функ- ция языка Си не может быть использована без указания места распо- ложения ее прототипа. Кроме того, не забудьте, что язык Си различа- ет регистр написания букв. Поэтому компилятор примет написание имени функции Printf, но укажет, что Printf– это неизвестный иденти- фикатор.
Найдите описание функций, которые относятся к используемым в программе библиотекам: математической (math), библиотеке стан- дартного ввода-вывода (stdio.h). Более пристального внимания тре- буют функции форматного ввода-вывода (scanf и printf), особенно во- просы задания формата вводимых и выводимых данных, так как вы- бор формата (как и многое другое) определяет программист. Не за- будьте, что функция scanf требует указать адрес переменной с помо- щью знака «амперсанд» (&).

19
Блок объявления главной функции, операторные скобки ( { – нача- ло блока, } – конец блока) и переменные также требуют внимания.
Наиболее часто встречающиеся ошибки:

лишняя точка с запятой после объявления функции main ();

объявление локальной переменной до фигурной скобки;

отсутствие декларирования переменных;

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

переменные и другие идентификаторы написаны с использо- ванием букв разных регистров (заглавных и строчных);

в функции scanf забыт знак адреса переменной;

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

забыто включение заголовочного файла (будет предупреж- дение implicit declaration function ...).
Формулы для решения задач
1) Площадь треугольника:
,
2 1
h
a
S


где: а – основание, h – высота треугольника.
2) Формула Герона для вычисления площади треугольника:
,
)
(
)
(
)
(
p
r
c
p
b
p
a
p
p
S









где: p – полупериметр треугольника, a, b, c – стороны треугольника,
rрадиус вписанной окружности.

20 3) Теорема синусов:
,
2
sin sin sin
R
c
b
a







,
2
sin sin sin
R
c
b
a










,
,
углы, противолежащие соответствующим сторонам,
R – радиус описанной окружности.
4) Теорема косинусов:

cos
2 2
2 2






c
b
c
b
a
, где: a, b, c – стороны треугольника,

– угол между сторонами b и c,
5) Длина биссектрисы треугольника:




c
b
a
c
b
c
b
L
a






2 2
, где: a, b, c – стороны треугольника,
6) Длина медианы треугольника:


2 2
2 2
2
a
c
b
m




где: a, b, c – стороны треугольника,
7) Площадь эллипса:
b
a
S




, где:
a и b – радиусы эллипса.

21
Варианты заданий
1.
По значению сторон треугольника определить все его высоты.
2.
По координатам вершин квадрата вычислить площадь, вписан- ного в него круга.
3.
По сторонам треугольника вычислить биссектрисы всех его уг- лов.
4.
По сторонам треугольника вычислить площадь вписанного в не- го круга.
5.
По сторонам и основаниям трапеции вычислить еѐ диагонали.
6.
По сторонам треугольника вычислить его площадь и углы.
7.
По координатам вершин квадрата вычислить площадь описан- ного круга.
8.
По сторонам треугольника вычислить его медианы.
9.
По радиусу окружности и расстоянию до внешней точки вычис- лить угол, образованный касательными из внешней точки к ок- ружности.
10. По сторонам прямоугольника вычислить площадь описанного вокруг него круга.
11. По координатам трех точек на плоскости вычислить радиус ок- ружности, проходящей через эти точки.
12. По радиусу окружности и хорде вычислить площадь равнобед- ренного треугольника, вписанного в эту окружность (основание треугольника - хорда).
13. По величине высот, проведенных из центра окружности до хорд и углу между хордами определить расстояние от центра окруж- ности до точки пересечения хорд.
14. По сторонам треугольника определить площадь описанного во- круг него круга.
15. По стороне правильного шестиугольника вычислить его пло- щадь.

22
Примерный перечень контрольных вопросов по теме № 1
1. Как создать новый проект?
2. Как загрузить и сохранить проект и текст программы?
3. Как построить (откомпилировать) программу?
4. Как настроить консольное окно?
5. Как запустить программу на исполнение?
6. Как задать формат вывода чисел в функции printf?
7. Что делает математическая функция (выборочно из перечня)?
8. Где находится результат компиляции программы?
9. Что означает директива препроцессору #include?
10. Что означает директива препроцессору #define?
11. Какой результат будет в переменной x, после следующего вычисления:
float x = 9 / 4;
12. Поясните схему подготовки исполняемой программы.
13. Какие числа будут выведены на экран после выполнения следующих строк программы?
int x = 4;
printf (“\n %d \n”, x++);
printf (“\n %d \n”, ++x);
14. Что означает следующее сообщение при компиляции про- граммы?
warning: implicit declaration of function „pow‟
15. Что означает следующее сообщение при компиляции про- граммы?
error: „V‟ undeclared (first use in this function)
16. Найдите ошибку в следующей строке программы:
scanf("%f",V);
сообщение компилятора: warning: format „%f‟ expects type „float
*‟, but argument 2 has type „double‟

23
  1   2   3


написать администратору сайта