- •Лабораторная работа№1 программирование арифметических операций
- •Представление данных в языке
- •Арифметические операции
- •Задание на лабораторную работу
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №2 директивы препроцессора и функции printf() и scanf()
- •Директивы препроцессора
- •Функции ввода/вывода printf() и scanf()
- •Задание на лабораторную работу
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №3 условные операторы языка с
- •Условные операторы if и switch
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №4 операторы циклов языка с
- •Теоретические сведения
- •Оператор цикла while
- •Оператор цикла for
- •Оператор цикла do while
- •Программирование вложенных циклов
- •Задание на лабораторную работу
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №5 массивы
- •Теоретические сведения
- •Int array2d[100][20];//двумерный массив 100х20 элементов
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №6 работа со строками в языке с
- •Теоретические сведения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №7 функции
- •Теоретические сведения
- •Варианты заданий
- •Контрольные вопросы
Задание на лабораторную работу
Написать программу вычислений в соответствии с заданным вариантом
(числовые параметры задаются самостоятельно вводом с клавиатуры).
Сделать вывод о полученных результатах работы программы.
Варианты заданий
Вариант |
Тип переменных |
Вычислить |
1 |
Вещественный Целочисленный |
|
2 |
Вещественный Целочисленный |
|
3 |
Вещественный Целочисленный |
|
4 |
Вещественный Целочисленный |
|
5 |
Вещественный Целочисленный |
|
6 |
Вещественный Целочисленный |
|
7 |
Вещественный Целочисленный |
|
8 |
Вещественный Целочисленный |
|
9 |
Вещественный Целочисленный |
|
10 |
Вещественный Целочисленный |
|
Контрольные вопросы
Приведите примеры правильных имен переменных.
Чему будет равна переменная c в строке программы float c=9/2 ?
Приведите примеры неправильных имен переменных.
Как записывается оператор умножения в языке С?
Как изменится значение переменной i в строчке программы i=i+1?
Что такое операция декремента?
Лабораторная работа №2 директивы препроцессора и функции printf() и scanf()
Цель работы: изучить особенности работы директив препроцессора и функций printf() и scanf().
Директивы препроцессора
Почти все программы на языке С используют специальные команды для компилятора, которые называются директивами. В общем случае директива – это указание компилятору языка С выполнить то или иное действие в момент компиляции программы. Существует строго определенный набор возможных директив, который включает в себя следующие определения:
#define, #elif, #else, #endif, #if, #ifdef, #ifndef, #include, #undef.
Директива #define используется для задания констант, ключевых слов, операторов и выражений, используемых в программе. Общий синтаксис данной директивы имеет следующий вид:
#define <идентификатор> <текст>
или #define <идентификатор> (<список параметров>) <текст>
Следует заметить, что символ ‘;’ после директив не ставится. Приведем примеры вариантов использования директивы #define.
Листинг 1. Примеры использования директивы #define.
#include <stdio.h>
#define TWO 2
#define FOUR TWO*TWO
#define PX printf(“X равно %d.\n”, x)
#define FMT «X равно %d.\n»
#define SQUARE(X) X*X int main()
{
int x =TWO; PX;
x = FOUR;
printf(FMT, x);
x = SQUARE(3); PX;
return 0;
}
После выполнения этой программы на экране монитора появится три строки:
X |
равно |
2. |
X |
равно |
4. |
X |
равно |
9. |
Директива #undef отменяет определение, введенное ранее директивой
#define. Предположим, что на каком-либо участке программы нужно отменить определение константы FOUR. Это достигается следующей командой:
#undef FOUR
Интересной особенностью данной директивы является возможность переопределения значения ранее введенной константы. Действительно, повторное использование директивы #define для ранее введенной константы FOUR невозможно, т.к. это приведет к сообщению об ошибке в момент компиляции программы. Но если отменить определение константы FOUR с помощью директивы #undef, то появляется возможность повторного использования директивы #define для константы FOUR.
Для того чтобы иметь возможность выполнять условную компиляцию, используется группа директив #if, #ifdef, #ifndef, #elif, #else и #endif. Приведенная ниже программа выполняет подключение библиотек в зависимости от установленных констант.
#if defined(GRAPH)
#include <graphics.h> //подключение графической библиотеки
#elif defined(TEXT)
#include <conio.h> //подключение текстовой библиотеки
#else
#include <io.h>//подключение библиотеки ввода-вывода
#endif
Данная программа работает следующим образом. Если ранее была задана константа с именем GRAPH через директиву #define, то будет подключена графическая библиотека с помощью директивы #include. Если идентификатор GRAPH не определен, но имеется определение TEXT, то будет использоваться библиотека текстового ввода/вывода. Иначе, при отсутствии каких-либо определений, подключается библиотека ввода/вывода. Вместо словосочетания #if defined часто используют сокращенные обозначения #ifdef и #ifndef и выше приведенную программу можно переписать в виде:
#ifdef GRAPH
#include <graphics.h>//подключение графической библиотеки
#ifdef TEXT
#include <conio.h> //подключение текстовой библиотеки
#else
#include <io.h> //подключение библиотеки ввода-вывода
#endif
Отличие директивы #if от директив #ifdef и #ifndef заключается в возможности проверки более разнообразных условий, а не только существует или нет какие-либо константы. Например, с помощью директивы #if можно проводить такую проверку:
#if SIZE == 1
#include <math.h> // подключение математической библиотеки
#elif SIZE > 1
#include <array.h>//подключение библиотеки обработки массивов
#endif
В приведенном примере подключается либо математическая библиотека, либо библиотека обработки массивов, в зависимости от значения константы SIZE.
Используемая в приведенных примерах директива #include позволяет добавлять в программу ранее написанные программы и сохраненные в виде файлов. Например, строка
#include <stdio.h>
указывает препроцессору добавить содержимое файла stdio.h вместо приведенной строки. Это дает большую гибкость, легкость программирования и наглядность создаваемого текста программы.