Краткие сведения и инструкции
Программы с линейной структурой являются простейшими и используются, как правило, для реализации простых вычислений по формулам. Программа представляет собой последовательную запись инструкций, выполняемых одна за другой.
Алгоритм программы с линейной структурой может быть представлен в виде схемы, показанной на рис.1.1
Рис. 1.1
При составлении программы, в первую очередь, необходимо определить исходные данные и объявить типы переменных. Объявления типов переменных обычно помещают в начале программы, вслед за ее заголовком, снабжая инструкцию объявления кратким комментарием о назначении переменной. Инструкция объявления записывается так:
Тип Имя_Переменной;
Объявление переменной можно совместить с ее инициализацией. В этом случае объявлений переменной записывают следующим способом:
Тип Имя_Переменной= Начальное_значение;
В последнем выражении знак “=” обозначает инструкцию присваивания. Она предназначена для изменения значения переменных, в том числе и для вычислений по «формуле». В отличие от других языков программирования в Си и C++ инструкция присваивания, выполняющая некоторое действие, может быть записана несколькими способами. Например, вместо x = x + dx можно записать x + = dx, а вместо i= i+1 воспользоваться оператором инкремента и записать i++.
Вывод информации и сообщений на экран монитора обеспечивает функция printf(). Первым параметром этой функции является строка вывода, определяющая выводимый текст и формат вывода значений переменных, имена которых указаны в качестве остальных параметров функции.
Для ввода исходных данных с клавиатуры предназначена функция scanf(), первым параметром которой является управляющая строка, остальные параметры – адреса переменных, значения которых были введены. (Использование имени переменной, а не ее адреса в качестве параметра функции scanf() является типичной ошибкой начинающих программистов).
Для иллюстрации действия указанных операций рассмотрим следующий пример.
Пример №1:Введем программу, печатающую на экране: “Сейчас 2012 год”.
#include<stdio.h>
/* пример к лаб. работе №1*/
main ( )
{ // Начало тела главной функции
int year, month; // Объявление переменных
year = 2012; //Инициализация переменных
month=10;
printf(“Сейчас %d год %d месяц\n”,year,month); // вывод
} // Конец тела главной функции
Рассмотрим эту программу. Первая строка #include<stdio.h> подключает стандартный файл ввода/вывода языка Cи. Это так называемый заголовочный файл (header files). В файле stdio.h находится информация о стандартной функции вывода printf (), которую мы используем.
Вторая строка /*Пример…*/ – комментарий. С помощью этой конструкции можно выделить целый блок программы. Строка main() – определяет имя функции. Строка: { - содержит открывающую скобку, обозначающую начало тела функции main(). Строка: int year, month; объявляет (декларирует) переменные year и month и сообщает компилятору, что они целые (int).
Строка: year = 2012; является оператором присваивания.
Строка: printf (“Сейчас % d год %d месяц\n”, year, month); является вызовом стандартной функции printf(), которая выводит на экран некоторую информацию. Она состоит из двух частей: имени функции printf() и двух её аргументов “сейчас %d год %d месяц \ n” и year, month разделённых запятой. Первый аргумент называется управляющей строкой (Control String). Она может содержать любые символы или спецификации формата, начинающиеся с символа %. Спецификация %d указывает, что будет выводиться целое число. Комбинация символов “\n” сообщает функции printf() о необходимости перевода каретки на новую строку.
Последняя строка программы “}” содержит закрывающую фигурную скобку тела функции main(). В программе также использованы четыре комментария. Двойной слеш комментирует не долее одной строки.
Если программа не содержит ошибок, то после компиляции и выполнения её на экране появится сообщение: Сейчас 2000 год. Если была допущена ошибка, то после компиляции, строка, в которой эта ошибка была допущена, будет подсвечена. Переход к предыдущей ошибке осуществляется комбинациями клавиш ALT+F7, а к последующей ALT+F8.
Усовершенствуем пример 1. Введем строковую переменную, например, «Имя» и инициализируем ее.
#include<stdio.h>
/* пример к лаб. работе №1*/
main()
{
int year, month;
year = 2012;
char *name= “Ivan”;
printf(“Сейчас % d год\n”,year);
}
Используйте для вывода новой переменной оператор printf() и спецификатор вывода %s. С помощью функции scanf () введите новое имя и распечатайте его
Пример №2.Требуется вычислить длину окружности.
Для вычисления нам потребуется ввести данные с клавиатуры, и мы будем использовать библиотечную функцию scanf(), которая позволит вводить данные во время выполнения программы.
/* ПРОГРАММА
Вычисление длины окружности */
#include <stdio.h>
main ()
{
int radius;
float length;
printf (“Введите значение радиуса :\n”);
scanf (“%d”, &radius);
length = 3.1415*2*radius;
printf (“Радиус–%d\n длина – %f\n”, radius, length);
}
Отличие этого примера от предыдущего заключается в том, что:
1) объявлены две переменные разных типов: radius – типа целое (int); length – типа с плавающей точкой (float);
2) используется функция scanf() для ввода с клавиатуры значения радиуса окружности.
Первый аргумент функции scanf()- “%d” указывает, что будет вводиться целое десятичное число, второй аргумент указывает имя переменной, которой будет присвоено введённое значение.
В языке Си имеются специальные унарные и бинарные операторы, из которых наиболее хорошо известны положительное приращение (++) и отрицательное приращение (--), позволяющие с помощью единственного оператора добавить 1 или вычесть 1 из любого значения. Сложение и вычитание допускаются в середине выражения. Кроме того, можно задавать операции приращения до, и после вычисления самого выражения.
Пример №3.
sum=a+b++;
sum=++a+b;
Первый оператор суммирует a и b, затем результат присваивает sum, и потом значение b увеличивается на 1. Во втором выражении a увеличивается на 1, затем суммируются a и b, и далее результат присваивается sum.
Задание на выполнение работы
1) Ввести программу примера №1, провести её компиляцию и выполнение.
2) Ввести программу примера №2, провести отладку и запустить на выполнение.
3) Модифицировать программу примера №2 таким образом, чтобы она вычисляла длину окружности и площадь круга для любых радиусов.
4) Ввести программу и проверить действие инкрементных операторов присваивания, используя круглые скобки:
Пример №4
#include <stdio.h>
#include <conio.h>
main ( )
{
int a, b, sum;
a=b=5;
sum=a+b;
printf("a=%d b=%d sum=%d\n" , a, b, sum);
sum=a+++b;
printf ("a=%d b=%d sum=%d\n" , a, b, sum);
sum=++a+b;
printf ("a=%d b=%d sum=%d\n" , a, b, sum);
sum=--a+b;
printf ("a=%d b=%d sum=%d\n" , a, b, sum);
sum=a-++b;
printf ("a=%d b=%d sum=%d\n" , a, b, sum);
sum=a+b;
printf ("a=%d b=%d sum=%d\n" , a, b, sum);
getch();
}
5) Скопировать пример 4, открыть ИС Borland C++ 5.0, вставить файл, произвести запуск и вывести результат в блокнот.
Отчёт должен содержать:
1) Тексты выполняемых программ.
2) Результаты расчётов.
Контрольные вопросы
1. Какие стандартные функции содержатся в файлах stdio.h и conio.h ?
2. Что означает «инкремент»?
3. Что означает «декремент»?
4. Как выполняется операция присваивания?
5. Какой спецификатор применяется для ввода и вывода строки символов?
6. В каком заголовочном файле содержится функция getch()?
Работа № 2