Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задание на лабораторную работу № 1




Директива препроцессора #include

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

Составной оператор или блок { }

В приведенном выше примере после имени main() вы видите открывающуюся фигурную скобку «{», а в конце программы — закрывающуюся фигурную скобку «}». Эти скобки объединяют группу операторов, которая называется блоком операторов. Блоки операторов могут представлять собой совокупность простых операторов, а могут включать, например функции, операторы циклов, условные операторы.

Пустой оператор или разделитель ;

Каждый оператор программы должен заканчиваться точкой с запятой. Несколько операторов, разделенных точкой с запятой могут стоять в одной строке.

Комментарии /* */ или //

Начало текста комментария /*   конец — */

Для С++ комментарий в одну строку —  //.

Идентификаторы

Важным понятием языка является идентификатор, который используется в качестве имени объекта (функции, переменной, константы и т. п.). Идентификаторы должны выбираться с учетом следующих правил:

1. Они должны начинаться с буквы латинского алфавита (a,..., z, A,..,Z) или с символа подчеркивания (_).

2. В них могут использоваться буквы латинского алфавита, символ подчеркивания и цифры (0,.....9). Использование других символов в идентификаторах запрещено.

3. В языках С и С++ буквы нижнего регистра (a,..„z), применяемые в идентификаторах, отличаются от букв верхнего регистра (A,.....,Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т. п.

4. Идентификаторы могут иметь любую длину, но воспринимаются и используются для различения объектов (функций, переменных, констант и т. п.) только определенные символы. Их число меняется для разных систем программирования (в Borland C++ оно может устанавливаться при настройке среды и имеет максимальное значение - 32). Предположим, что это число установлено равным 5. Тогда идентификаторы count и counter будут идентичны, поскольку у них первые пять символов совпадают.

5. Идентификаторы для новых объектов не должны совпадать с ключевыми словами языка и именами стандартных функций из библиотеки.

 

Форматный ввод/вывод данных.

Форматный вывод

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

printf («управляющая строка», аргумент _1, аргумент _2,...);

Управляющая строка содержит компоненты трех типов:

обычные символы, которые просто копируются в стандартный входной поток (выводятся на экран дисплея);

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

с - значением аргумента является символ;

d или i - значением аргумента является десятичное целое число;

е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида l.23e+2;

Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида l.23E+2;

f - значением аргумента является вещественное десятичное число с плавающей точкой:

q (или G) - используется, как е или f, и исключает вывод незначащих нулей;

о - значением аргумента является восьмеричное целое число;

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

u - значением аргумента является беззнаковое целое число;

х - значением аргумента является шестнадцатеричное целое число с цифрами 0,..., 9, а, b, с, d, е, f;

X - значением аргумента является шестнадцатеричное целое число с цифрами 0,...,9, А. В, С, D. Е, F;

р - значением аргумента является указатель;

n - применяется в операциях форматирования. Аргумент, соответствующей этому символу спецификации, должен быть указателем на целое. В него- возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.

 

управляющие символьные константы:

\а - для кратковременной подачи звукового сигнала;

\b-для перевода курсора влево на одну позицию;

\f-для подачи формата;

\n-для перехода на новую строку;

\r-для возврата каретки;

\t - горизонтальная табуляция;

\v - вертикальная табуляция;

\\ - вывод символа \;

\' - вывод символа ';

\" - вывод символа ";

\? - вывод символа ?.

 

Форматный ввод .

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

scanf («управляющая строка», аргумент _1, аргумент _2,....);

Аргументы scanf должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &. Назначение указателей будет подробно рассмотрено далее.

Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. В нее могут включаться:

пробелы, символы табуляции и перехода на новую строку (все они игнорируются);

спецификации преобразования, совпадающие с аналогичными у функции printf

обычные символы, кроме % (считается, что они должны совпадать с очередными неизвестными символами во входном потоке).

 

Программа вычисляющая экспоненту введенного числа:

#include<stdio.h> //для printf() и scanf()

#include<math.h> //для exp()

void main(void)

{

float num,result;

printf("Enter a number = ");

scanf("%f",&num);

result=exp(num);

printf("Exponent of %f is %f\n",num,result);

getchar();

getchar();

}

Операции языка С.

 

Рассмотрим операции языка С. Выражения обычно содержат многие операции, выполняемые в строгой последовательности. Величина, определяющая преимущественное право на выполнение той или иной операции, называется приоритетом. В таблице 1 перечислены различные операции языка С. Их приоритеты для каждой группы одинаковы (группа расположена между двумя соседними горизонтальными линиями). Чем большим преимуществом пользуется соответствующая группа операций, тем выше она расположена в таблице. Порядок выполнения определяет последовательность применения операций (слева направо или справа налево), если они относятся к одной группе и отсутствуют круглые скобки.

Охарактеризуем основные операции языка С. Для задания каждой из них используются определенные знаки (см. табл. 1.2) или операторы. Сначала рассмотрим один из них - оператор присваивания (=). Выражение вида

х = y;

присваивает переменной х значение переменной у. Оператор “=” разрешается использовать многократно в одном выражении, например:

x = y = z = 100;

Здесь всем трем переменным (х, у, z) будет присвоено значение 100.

Различают унарные и бинарные операции. У первых из них один операнд, а у вторых - два. Начнем их рассмотрение с операций, отнесенных к одной из следующих традиционных групп:

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

2. Логические операции и операции отношения.

3. Операции с битами.

Арифметические операции задаются следующими операторами (см. табл. 1.2): +, -, *, /, %. Последнюю из них нельзя применять к переменным вещественного типа. Примеры выражений с этими операторами:

a = b + c;

x = y - z;

r = t * v;

s = k / l;

p = q * w;

Логические операции отношения задаются следующими операторами (см. табл. 1): &, ||, !, >, >=, <||, = =, !=. Традиционно эти операции должны давать одно из двух значений: истину и ложь. В языке С принято следующее правило: истина - это любое ненулевое значение; ложь-это нулевое значение. Выражения, использующие логические операции и операции отношения, возвращают 0 для ложного значения и 1-для истинного. Ниже приводится таблица истинности - для логических операций:

х у x&y x&y
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

Таблица 1

Знак операции Назначение операции Порядок выполнения
() Вызов функции Слева направо
[] Выделение элемента массива  
. Выделение элемента записи  
-> Выделение элемента записи  
! Логическое отрицание Справа налево
~ Поразрядное отрицание  
- Изменение знака  
++ Увеличение на единицу  
-- Уменьшение на единицу  
& Взятие адреса  
* Обращение по адресу  
(тип) Преобразование типа  
sizeof Определение размера в байтах  
* Умножение Слева направо
/ Деление >>
% Определение остатка от деления >>
+ Сложение >>
- Вычитание >>
<< Сдвиг влево >>
>> Сдвиг вправо >>
< Меньше, чем >>
<= Меньше или равно >>
> Больше, чем >>
>= Больше или равно >>
== Равно >>
!= Не равно >>
& Поразрядное логическое “И” >>
^ Поразрядное исключающее “ИЛИ” >>
| Поразрядное логическое “ИЛИ” >>
& Логическое “И” >>
|| Логическое “ИЛИ” >>
?: Условная (тернарная) операция >>
= Присваивание >>
zn= Здесь zn любая бинарная операция например а *=b;  
, Операция запятая >>

Лабораторная работа №1
Данные. Типы данных. Приведение типов. Циклы



Теоретическая часть

Типы данных

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

В языке различают понятия «тип данных» и «модификатор типа». Тип данных - это, например, целый, а модификатор - со знаком или без знака. Целое со знаком будет иметь как положительные, так и отрицательные значения, а целое без знака - только положительные значения. В языках С и С++ можно выделить пять базовых типов, которые задаются целующими ключевыми словами: char - символьный; int - целый: float - вещественный; double - вещественный двойной точности; void - не имеющий значения. Дадим им краткую характеристику:

1. Переменная типа char имеет размер 1 байт. Ее значениями являются различные символы из кодовой таблицы, например: 'ф'. ':', 'j' (при записи в программе они заключаются в одинарные кавычки).

2. Переменная типа int имеет размер 2 байт. Знаковые значения этой переменной могут лежать в диапазоне от -32768 до 32767.

3. Ключевое слово float позволяет объявить переменные вещественного типа. Их значения имеют дробную часть, .отделяемую точкой, например: -5.6, 31.28 и т. п. Вещественные числа могут быть записаны также в форме с плавающей точкой, например: -l.09e+4 (что равно -1.098·104). Число перед символом е называется мантиссой, а после е - порядком. Переменная типа float занимает в памяти 32 бита. Она может принимать значения в диапазоне от 3.4е-38 до 3.4e+38.

4. Ключевое слово double позволяет объявить вещественную переменную двойной точности. Она занимает в памяти в два раза больше места, чем переменная типа float (т. е. ее размер 64 бита). Переменная типа double может принимать значения в диапазоне от l.7e-308 до l.7e+308.

5. Ключевое слово void используется для нейтрализации значения объекта, например для объявления функции, не возвращающей никаких значений.

Объект некоторого базового типа может быть модифицирован. С этой целью используются специальные ключевые слова, называемые модификаторами. Пока рассмотрим только четыре из них: unsigned, signed, short, long. Модификаторы записываются перед спецификаторами типа, например: unsigned char. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:

long а; long int а:

являются идентичными и объявляют объект а как длинный целый. Таблица 2 иллюстрирует возможные сочетания модификаторов (unsigned, signed, short, long) со спецификаторами (char, int. float и double), a также показывает размер и диапазон значений объявляемого объекта.

Таблица 2

Тип Размер Диапозон
Char    
signed char 8 -128
unsigned char 8 0-255
Int    
signed int    
short int    
signed short int 16 -32768-32767
unsigned int    
unsigned short int 16 0-65535
long int    
signed long int 32 -2’147’483’648-2’147’483’647
unsigned long int 32 0-4’294’967’295
Float 32 3.4e-38-3.4e+38
Double 64 1.7e-308-1.7e+308
long double 80 3.4e-4932-1.1e+4932

 

В языке определены глобальные и локальные объекты. Первые объявляются вне функций и, следовательно, доступны для любой из них. Локальные объекты по отношению к функциям являются внутренними. Они начинают существовать при входе в функцию и уничтожаются после выхода из нее.

В языке С все объявления должны следовать перед инструкциями, составляющими тело функции. В языке С++ это ограничение снято и объявления могут следовать в любом месте программы. Если они сделаны в функции, то соответствующие объекты будут локальными, а если вне функций, то глобальными.

Тип void

Ключевое слово void означает отсутствие информации о размере объекта. Его используют для объявления функций, которые не имеют аргументов и не возвращают никаких значений

Пример

void main(void)

Оператор sizeof

Оператор sizeof возвращает в качестве результата число байтов, требуемое для хранения объекта того типа, который имеет его операнд. Возвращаемое значение имеет тип size_t. В качестве операнда может выступать идентификатор типа либо переменная (выражение).

 

Преобразования типов.

Если в выражении появляются операнды различных типов, то они преобразуются к некоторому общему типу, при этом к каждому арифметическому операнду применяется такая последовательность правил:

1. Если один из операндов в выражении имеет тип long double, то остальные тоже преобразуются к типу long double.

2. В противном случае, если один из операндов в выражении имеет' тип double, то остальные тоже преобразуются к типу double.

3. В противном случае, если один из операндов в выражении имеет тип float, то остальные тоже преобразуются к типу float.

4. В противном случае, если один из операндов в выражении имеет тип unsigned long, то остальные тоже преобразуются к типу unsigned long.

5. В противном случае, если один из операндов в выражении имеет тип long, то остальные тоже преобразуются к типу long.

6. В противном случае, если один из, операндов в выражении имеет тип unsigned, то остальные тоже преобразуются к типу unsigned.

7. В противном случае все операнды преобразуются к типу int. При этом тип char преобразуется в int со знаком: тип unsigned char в int, у которого старший байт всегда нулевой; тип signed char в int, у которого в знаковый разряд передается знак из char; тип short в int (знаковый или беззнаковый).

В языке С можно явно указать тип любого выражения. Для этого используется оператор преобразования типа. Он задается в следующей общей форме:

(тип) выражение

Здесь можно указать любой допустимый тип в языке С.

 

Примеры программ

Пример1. Использование sizeof

#include <stdio.h>

#include <conio.h>

void main(void)

{

printf("Данные типа int занимают %d байт. \n",sizeof(int));

printf("Данные типа long занимают %d байт. \n",sizeof(long));

printf("Данные типа double занимают %d байт. \n",sizeof(double));

printf("Данные типа short занимают %d байт. \n",sizeof(short));

printf("Данные типа char занимают %d байт. \n",sizeof(char));

printf("Данные типа float занимают %d байт. \n",sizeof(float));

printf("Данные типа unsigned занимают %d байт. \n",sizeof(unsigned));

}

 

Пример2. Явное преобразование типов

void main(void)

{

int х;

float у, z;

z = y+(float)x;         //В скобках – тип данных к которому приводим

}

 

Задание на лабораторную работу № 1

Название работы: Составление простейших программ на языке С. Ввод, вывод данных. Работа с типами данных.

Цель работы: Научиться работе в среде Borland C++ 3.1. Исследовать работу с типами данных языка С.

1. Составить программу перевода метров в сантиметры.

2. По справочной системе исследовать работу математических функций:

sin(), cos(), tan() описания которых находятся в справочной системе, заголовочный файл <math.h>. Составить программу, которая демонстрировала бы работу этих функций.

 

 

Контрольные вопросы:

 

1. Основные понятия языка. Идентификаторы.

2. Приведите пример простейшей программы на языке С.

3. Форматный ввод данных.

4. Форматный вывод данных.

5. Объявления и типы данных.

6. Модификаторы типов.

7. Инициализация переменных.


Лабораторная работа №2
Циклы. Операторы организации условных и безусловных переходов.



Теоретическая часть










Последнее изменение этой страницы: 2018-05-10; просмотров: 145.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...