Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задание на лабораторную работу № 1Стр 1 из 6Следующая ⇒
Директива препроцессора #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-для истинного. Ниже приводится таблица истинности - для логических операций:
Таблица 1
Лабораторная работа №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
В языке определены глобальные и локальные объекты. Первые объявляются вне функций и, следовательно, доступны для любой из них. Локальные объекты по отношению к функциям являются внутренними. Они начинают существовать при входе в функцию и уничтожаются после выхода из нее. В языке С все объявления должны следовать перед инструкциями, составляющими тело функции. В языке С++ это ограничение снято и объявления могут следовать в любом месте программы. Если они сделаны в функции, то соответствующие объекты будут локальными, а если вне функций, то глобальными. Тип 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |