Смекни!
smekni.com

Методическая разработка по C++.(45 страниц) (стр. 3 из 6)

Директивы Include

Во многие программы на (Турбо) Си подставляются один или несколько файлов, часто в самое начало кода главной функции main.

Появление директив

#include <файл_1>

#include "файл_2"

...

#include <файл_n>

приводит к тому , что препроцессор подставляет на место этих директив тексты файлов файл_1, файл_2 , ... , файл_n соответственно.

Если имя файла заключено в угловые скобки <...> , то поиск файла производится в специальном разделе подстановочных файлов. В отличие от многих других операторов (Турбо) Си директива Include не должна оканчиваться точкой с запятой .

Макро

С помощью директивы #define, вслед за которой пишутся имя макро и значение макро, оказывается возможным указать препроцессору, чтобы он при любом появлении в исходном файле на (Турбо) Си данного имени макро заменял это имя на соответствующие значения макро .

Например, директива

#define pi 3.1415926

связывает идентификатор pi со значением 3.1415926. После значения макро (;) не ставится.

Типы данных

В (Турбо) Си переменные должны быть описаны, а их тип специфирован до того, как эти переменные будут использованы.

При описании переменных применяется префиксная запись , при которой вначале указывается тип, а затем - имя переменной.

Например:

float weight;

int exam_score;

char ch;

С типом данных связываются и набор предопределенных значений, и набор операций, которые можно выполнять над переменной данного типа.

Переменные можно инициализировать в месте их описаний.

Пример:

int height = 71 ;

float income =26034.12 ;

Простейшими скалярными типами, предопределёнными в (Турбо) Си, являются

char Представляется как однобайтовое целое число

int Двубайтовое целое

long Четырёхбайтовое целое

float Четырёхбайтовое вещественное

double Восьмибайтовое вещественное

Оператор printf: вывод на терминал

Функцию printf можно использовать для вывода любой комбинации символов, целых и вещественных чисел, строк, беззнаковых целых, длинных целых и беззнаковых длинных целых.

Пример:

printf("&bsol;nВозраст Эрика - %d. Его доход $%.2f",age,income);

Предполагается, что целой переменной age (возраст) и вещественной переменной income (доход) присвоены какие-то значения.

Последовательность символов "&bsol;n" переводит курсор на новую строку.

Последовательность символов "Возраст Эрика -" будет выведена с начала новой строки. Символы %d - это спецификация для целой переменной age. Следующая литерная строка " Его доход $ ". %2f - это спецификация ( символ преобразования формата ) для вещественного значения, а также указание формата для вывода только двух цифр после десятичной точки. Так выводится значение переменной income

Символ формата Тип выводимого объекта

%с char

%s строка

%d int

%o int ( в восьмеричном виде )

%u unsigned int

%x int ( в шестнадцатеричном виде )

%ld long ( в десятичном виде )

%lo long ( в восьмеричном виде )

%lu unsigned long

%lx long ( в шестнадцатеричном виде )

%f float/double ( c фиксированной точкой)

%e float/double ( в экспоненциальной форме )

%g float/double ( в виде f или е в зависимости от значения )

%lf long float ( c фиксированной точкой )

%le long float ( в экспоненциальной форме )

%lg long float ( в виде f или е в зависимости

от значения )

Оператор scanf: ввод с клавиатуры

Оператор scanf является одной из многих функций ввода, имеющихся во внешних библиотеках.

Каждой вводимой переменной в строке функции scanf должна соответствовать спецификация. Перед именами переменных необходимо оставить символ &. Этот символ означает "взять адрес".

Пример:

#include<stdio.h>

main()

{

int weight, /*вес*/

height; /*рост*/

printf(" Введите ваш вес: ");

scanf("%d", &weight);

printf(" Введите ваш pocт: ");

scanf("%d", &height);

printf("&bsol;n&bsol;nВес = %d, рост = %d&bsol;n",

weight,height);

}

Задание:

Составить и распечатать программу вывода на экран своих анкетных данных различного типа: - вводимых с клавиатуры,

- с помощью директивы define,

- инициализированных при описании.


Лабораторная работа 3

Операторы и операции

(2 часа)

Цель работы: Изучение арифметических, логических операций и операций отношения и присваивания.

Основу языка (Турбо) Си составляют операторы. Оператором-выражения называют выражение, вслед за которым стоит точка с запятой. В (Турбо) Си точки с запятой используются для разделения операторов. Принято группировать все операторы в следующие классы: присваивания, вызов функции, ветвления и цикла.

В операторе присваивания используется операция присваивания = ,

Например:

c = a * b;

Действие такого оператора можно описать следующими словами: " с присваивается значение а, умножение на b ". Значение, присваиваемое переменной с, равняется произведению текущих значений переменных а и b.

Операторы часто относятся более чем к одному из четырех классов.

Например: оператор:

if ( ( c = cube( a * b ) ) > d )

...

составлен из представителей следующих классов: присваивания, вызов функции, и ветвление.

К понятию оператора вплотную примыкает понятие операции.

Различают следующие группы операций (Турбо) Си : арифметические операции, операции отношения, операции присваивания, логические операции, побитовые операции, операция вычисления размера (sizeof) и операция следования (запятая).

Арифметические операции

К арифметическим операциям относятся: сложение (+), вычитание (-), деление (/) , умножение (*) и остаток (%). Все операции (за исключением остатка) определены для переменных типа int , char , float. Остаток не определен для переменных типа float. Все арифметические операции с плавающей точкой производятся над операндами двойной точности.

Операции отношения

В языке определены следующие операции отношения: проверка на равенство (==), проверка на неравенство (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=).

Все перечисленные операции вырабатывают результат типа int. Если данное отношение между операндами истинно, то значение этого целого - единица, а если ложно, то нуль.

Все операции типа больше-меньше имеют равный приоритет, причем он выше , чем приоритет операций == и !=. Приоритет операции присваивания ниже приоритета всех операций отношений. Для задания правильного порядка вычислений используются скобки.

Логические операции

В языке имеются три логические операции:

&& операции И (and)

|| операции ИЛИ (or)

! отрицание

Аргументами логических операций могут быть любые числа, включая задаваемые аргументами типа char. Результат логической операции-единица, если истина, и нуль, если ложь. Вообще все значения, отличные от нуля, интерпретируются как истинные.

Логические операции имеют низкий приоритет, и поэтому в выражениях с такими операциями скобки используются редко.

Вычисление выражений, содержащих логические операции, производится слева направо и прекращается (усекается), как только удается определить результат. Если выражение составлено из логических утверждений (т.е. выражения, вырабатывающие значения типа int), соединенных между собой операцией И (&&), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается значение нуль. Если выражение составлено из логических утверждений, соединенных между собой операцией ИЛИ (||), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается ненулевое значение.

Вот несколько примеров, в которых используются логические операции:

if( i > 50 && j == 24)

...

if( value1 < value2 && (value3 > 50 || value4 < 20) )

...

Операции присваивания

К операциям присваивания относятся =, +=, -=, *= и /=, а также префиксные и постфиксные операции ++ и --. Все операции присваивания присваивают переменной результат вычисления выражения. Если тип левой части присваивания отличается от типа правой части, то тип правой части приводится к типу левой.

В одном операторе операция присваивания может встречаться несколько раз. Вычисления производятся справа налево.

Например:

a = ( b = c ) * d;

Вначале переменной d присваивается значение с, затем выполняется операция умножения на d, и результат присваивается переменной а.

Операции +=, -=, *= и /= являются укороченной формой записи операции присваивания. Их применение проиллюстрируем при помощи следующего описания:

a += b означает a = a + b.

a -= b означает a = a - b.

a *= b означает a = a * b.

a /= b означает a = a / b.

Префиксные и постфиксные операции ++ и -- используют для увеличения (инкремент) и уменьшения (декремент) на единицу значения переменной.

Семантика указанных операций следующая:

++a увеличивает значение переменной а на единицу до использования этой переменной в выражении.

а++ увеличивает значение переменной а на единицу после использования этой переменной в выражении.

--a уменьшает значение переменной а на единицу до использования этой переменной в выражении.

a-- уменьшает значение переменной а на единицу после использования этой переменной в выражении.

Операцию sizeof (размер) можно применить к константе, типу или переменной. В результате будет получено число байтов, занимаемых операндом.

Например:

printf ( "&bsol;nРазмер памяти под целое %d", sizeof( int) );

printf ( "&bsol;nРазмер памяти под cимвол %d", sizeof( сhar) );

Задание: Cоставить и распечатать программу, использующую оператор присваивания, арифметические операции и операцию sizeof.


Лабораторная работа 4

Функции