- •1. Общие правила выполнения лабораторных работ
- •2. Программное обеспечение, используемое для выполнения лабораторных работ
- •3. Лабораторная работа № 1. Создание простейшего консольного приложения C
- •3.1. Задание
- •3.2. Методические указания по выполнению лабораторной работы
- •3.2.1. Создание проекта консольного приложения
- •3.2.2. Открытие существующего проекта
- •3.2.3. Редактирование функции main Вашего проекта
- •3.2.4. Компиляция и сборка проекта
- •3.2.5. Пробный запуск проекта из интегрированной среды CodeBlocks
- •3.2.6. Запуск откомпилированного исполнительного файла проекта непосредственно из операционной системы
- •4.1. Задание
- •4.2. Методические указания по выполнению лабораторной работы
- •4.2.1.1. Создание переменных
- •4.2.1.2. Ввод значения входной переменной с клавиатуры
- •4.2.1.3. Выполнение арифметических вычислений
- •4.2.1.4. Вывод результата вычисления
- •4.2.1.5. Пример исходного текста программы
- •4.2.2. Использование переменных с модификатором const в исходных текстах приложений
- •5. Лабораторная работа № 3. Использование оператора выбора и преобразования типов значений переменных
- •5.1. Задание
- •5.2. Методические указания по выполнению лабораторной работы
- •5.2.1. Создание проекта приложения
- •5.2.3. Преобразование сигнала АЦП из целочисленного формата в формат с плавающей десятичной точкой и его масштабирование
- •5.2.4. Вычисление значения физического параметра (температуры) по значению напряжения на выходе датчика
- •5.2.5. Вывод вычисленного значения физического параметра (температуры) на дисплей
- •6. Лабораторная работа № 4. Использование оператора переключателя switch
- •6.1. Задание
- •6.2. Методические указания по выполнению лабораторной работы
- •6.2.1. Создание проекта консольного приложения
- •6.2.2. Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
- •6.2.3. Преобразование ASCII-символа шестнадцатеричной цифры в числовой формат
- •6.2.4. Вывод результата преобразования
- •6.2.5. Ввод с клавиатуры произвольного символа и завершение работы приложения
- •7. Лабораторная работа № 5. Создание и использование пользовательских функций
- •7.1. Задание
- •7.2. Методические указания по выполнению лабораторной работы
- •7.2.1. Создание проекта консольного приложения
- •7.2.2. Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
- •7.2.3. Создание и вызов функции преобразования кода ASCII-символа в число
- •7.2.3.1. Общий порядок создания и вызова функции
- •7.2.3.2. Использование функции для получения числового значения шестнадцатеричной цифры
- •7.2.4. Вывод на дисплей результата вычисления
- •7.2.5. Ввод с клавиатуры произвольного символа и завершение работы приложения
- •8.1. Методические указания по выполнению лабораторной работы
- •8.1.1. Создание проекта консольного приложения
- •8.1.2. Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
- •8.1.3. Создание и вызов функции, размещенной в отдельном файле исходного текста
- •8.1.3.1. Создание нового файла исходного текста и размещение в нем пользовательской функции
- •8.1.3.2. Создание нового файла заголовка и подключение его к проекту
- •8.1.4. Вывод на дисплей результата вычисления
- •8.1.5. Ввод с клавиатуры произвольного символа и завершение работы приложения
- •9. Лабораторная работа №7. Использование массивов, структур и указателей
- •9.1. Методические указания по выполнению лабораторной работы
- •9.1.1. Создание проекта приложения
- •9.1.3. Создание пользовательского типа данных - структуры
- •9.1.4. Подключение файла-заголовка к проекту
- •9.1.5. Создание файла исходного текста и подключение его к проекту
- •9.1.6. Создание функции, выполняющей вычисление значения линейной функции по значению ее аргумента
- •9.1.7. Создание функции, выполняющей поиск линейного отрезка, на котором находится аргумент линеаризуемой функции, и вычисление ее (линеаризуемой функции) значения
- •9.1.7.1. Оператор итерационного цикла for
- •9.1.7.2. Оператор цикла с предусловием while
- •9.1.7.3. Оператор цикла с постусловием do while
- •9.1.7.4. Передача функции вычисления значения линейной функции указателей на используемые элементы массива
- •9.1.8. Создание в файле заголовка прототипа функции
- •9.1.9. Создание константного одномерного массива, содержащего параметры граничных точек линейных отрезков линеаризуемой функции
- •9.1.10. Определение размера массива
- •9.1.11. Объявление объекта данных как глобального
- •9.1.12. Вызов функции MultyLinearFuncCalc из файла main.cpp
- •9.1.13. Вывод результата вычислений и завершение работы приложения
1.Вывод на экран стандартного заголовка приложения, включающего 3 строки: номер работы, фамилию и инициалы исполнителя, номер курса, группы и подгруппы (см. раздел 3.1.).
2.Вывод на экран строки-приглашения для ввода шестнадцатеричной цифры "Input symbol:" и ввод с клавиатуры одного символа - шестнадцатеричной цифры.
3.Преобразование введенного символа - шестнадцатеричной цифры в числовой формат и помещение полученного числа в переменную типа int, если это возможно, или сообщение
приложению об ошибке, если введенный символ не является шестнадцатеричной цифрой. Это действие должно выполняться пользовательской функцией, вызываемой из функции main.
4.Вывод на экран строки "Result = " и числа, полученного в результате преобразования, если введен корректный символ, или строки "Illegal symbol", если введенный символ не является шестнадцатеричной цифрой.
5.Ввод с клавиатуры любого символа и завершение работы приложения после его ввода и нажатия на клавишу Enter.
6.Консольное окно приложения в случае успешного выполнения должно иметь вид, показанный на рис. 29.
Запустите приложение и продемонстрируйте его работу преподавателю, введя с клавиатуры символ и получив соответствующее ему числовое значение.
7.2. Методические указания по выполнению лабораторной работы
7.2.1. Создание проекта консольного приложения
Создание проекта консольного приложения, создание исходного текста главной функции main, вывод на экран строк заголовка приложения (номер лабораторной работы, фамилия и инициалы автора, номер курса, группы и подгруппы) уже рассматривались в предыдущих работах (см. раздел 3.2.).
7.2.2.Ввод с клавиатуры символа - шестнадцатеричной цифры, которую требуется преобразовать в числовой формат
Эти действия были рассмотрены ранее (см. раздел 6.2.2.).
7.2.3. Создание и вызов функции преобразования кода ASCII-символа в число
7.2.3.1. Общий порядок создания и вызова функции
Определение функции в C имеет следующий формат:
тип имя_функции (список_параметров)
{
тело функции;
}
где:
тип
тип значения, возвращаемого функцией (функция может возвращать только скалярное значение), либо значение void, если функция не возвращает никакого значения;
имя_функции |
произвольный уникальный идентификатор, используемый для |
|
обращения к функции; |
52
список_параметров формальные параметры, передаваемые функции. Список имеет следующий формат:
тип_1 имя_1, тип_2 имя_2, ...тип_N имя_N
где тип - тип параметра, имя - имя параметра. Функция может вообще не иметь входных параметров.
Функция не может возвращать результаты работы в своих параметрах. Даже в случае, если в теле функции происходит изменение значений входных параметров, по завершении функции в них восстанавливаются старые значения (бывшие до вызова функции).
Например, следующее приложение использует созданную пользователем функцию для проверки входного параметра на нахождение в допустимых пределах и его ограничение, если входной параметр выходит за предельные значения. Показан только фрагмент приложения, относящийся к использованию функции.
...
//Определение пользовательской функции.
//Функция возвращает значение входного параметра, ограниченное
//границами [-100; 100].
//Функция имеет следующие входные параметры:
//InputVal - входное значение, которое надо проверить и
// |
ограничит. |
int UserFunction_1 (int InputVal) |
|
{ |
|
// Локальные переменные, используемые функцией. |
|
int Result; |
// Буфер результата функции. |
if (InputVal > 100) // Сравнение входного параметра с // максимальным значением.
{
//Значение входного параметра - больше максимального
//значения.
Result = 100; |
// |
Ввод максимального значения как |
|
// |
результата работы функции. |
}
else
{
if (InputVal < -100) // Сравнение входного параметра с // минимальным значением.
{
//Значение входного параметра - меньше минимального
//значения.
Result = -100; // Ввод минимального значения как // результата работы функции.
}
else
{
// Значение входного параметра - в допустимых пределах. Result = InputVal; // Ввод значение входного параметра
// как результата работы функции.
}
}
53
return Result; |
// Вывод результата работы функции и |
} |
// завершение ее работы. |
|
|
... |
// Главная функция приложения. |
int main () |
|
{ |
|
... |
// Входная переменная. |
int X; |
|
int Y; |
// Результат вычисления. |
... |
// Ввод входного значения с |
cin >> X; |
|
Y = UserFunction_1 (X); |
// клавиатуры. |
// Ограничение значения X с помощью |
|
|
// пользовательской функции, |
|
// помещение результата в переменную |
... |
// Y. |
|
|
} |
|
Вданном случае пользовательская функция имеет имя UserFunction_1. Функция имеет один входной параметр InputVal. Функция возвращает вычисленное значение типа int.
Вслучае, если функция возвращает какое-либо значение (то есть тип возвращаемого значения - не void), функция должна включать в себя оператор return, операндом которого
является значение возвращаемого типа. Данный оператор завершает работу функции и возвращает свой операнд как результат ее работы. Оператор return может располагаться в любом месте
функции. В качестве его операнда может выступать любая константа, переменная или выражение.
При создании и использовании пользовательской функции в данном приложении следует учитывать следующие особенности:
1. Имена формальных параметров параметров (в приведенном выше примере - InputVal)
доступны только в пределах самой функции. При вызове функции вместо них используются реальные переменные, подставляемые вместо этих параметров в круглых скобках после имени функции. При этом исходный текст программы может содержать одноименные переменные. Например:
... |
// Глобальная переменная, |
|
unsigned int Var1; |
||
... |
.. используемая программой. |
|
// Функция, имеющая параметр, имя |
||
float UserFunc (float Var1) |
||
|
// которого совпадает с именем |
|
{ |
// внешней переменной Var1. |
|
// Здесь используется параметр |
||
return Var1 * 3; |
||
} |
// функции. |
|
|
||
... |
// Здесь используется глобальная |
|
Var1++; |
||
... |
// переменная. |
|
|
2. Функция должна быть определена или описана до своего первого вызова. Определение функции (ее создание) уже рассматривалось в предыдущих примерах. Поскольку функция UserFunction_1 в предыдущем примере вызывается из функции main приложения, она была
определена в исходном тексте перед функцией main.
54
В случае, если вызываемая функция определена после первой строки вызова, либо она определена в другом файле исходного текста, пере первым вызовом функции необходимо разместить ее описание (прототип). Прототип функции имеет следующий вид:
тип имя_функции (список_параметров);
где тип и имя_функции имеют то же значение, что и при определении функции. Список_параметров содержит список тех же формальные параметры функции, что и при ее
определении, расположенные в том же порядке. Однако при этом в списке достаточно указывать только тип параметра, но не его имя (хотя указание имени также допустимо. Например, если функция определена следующим образом:
...
int CalcFunc (int A, int B)
{
return A/B;
}
...
то ее прототип можно записать в следующем виде:
int CalcFunc (int, int);
Точка с запятой не ставится в конце строки имени функции при ее определении, но обязательно ставится, когда строка содержит прототип функции.
7.2.3.2. Использование функции для получения числового значения шестнадцатеричной цифры
Впредыдущей лабораторной работе для определения результата использовались две переменные:
●переменная типа bool - флаг ошибки, используемый в случае, если введенный код числа не является шестнадцатеричной цифрой;
●переменная типа unsigned int, в которую помещается числовое значение шестнадцатеричной цифры в в случае успешного преобразования.
Вданной работе необходимо ограничиться использованием только одной переменной, поскольку функция может возвращать только одно значение. Поэтому функция должна возвращать следующие значения типа unsigned int:
●число от 0 до 15 - числовое значение шестнадцатеричной цифры, если код цифры находится в допустимых пределах;
●какое-либо другое число (например - 255 или 0xFF), если код цифры находится вне допустимых пределов.
Вэтом случае функция должна возвращать числовое значение шестнадцатеричной цифры либо код ошибки (значение 255), если код цифры находится вне допустимых пределов. Функция
должна иметь один параметр типа char, вместо которого при вызове функции подставляется имя переменной, содержащей код введенной с клавиатуры цифры.
55
