Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка программ со скалярными типами данныхСодержание книги
Поиск на нашем сайте
(2 часа) Цель работы: Рассмотреть и изучить скалярные типы данных С (int, char, float и др.) и их использование. Теоретические сведения В С переменные должны быть объявлены, т.е. их тип специфицирован до того, как эти переменные будут использованы. Объявления переменных могут быть сделаны в любом месте программы. При объявлении переменных применяется префиксная запись, при которой вначале указывается тип, а затем - имя переменной. Объявления переменных могут быть глобальными с классами памяти extern и static (вне функции main(), по умолчанию extern), и локальными с классами памяти auto, register (внутри блока, функции, например, внутри функции main(), по умолчанию auto). Глобальные переменные инициализируются нулевым значением по умолчанию. По умолчанию предполагается, что переменные являются знаковыми. Беззнаковые переменные описываются явно при помощи спецификатора insigned Например: int n1, n2, n3, n4; // множественное объявление переменных n1=15; float weight =23.56; // объявление переменных и их инициализация unsignid int exam; char ch =’+’, c=’A’; char slash=’/’,Slash=’\’; // регистр у переменных различается slash не Slash char str[ ]=’’строка символов’’; // инициализация строковой константой char *pstr=’’строка символов’’; В первом объявлении имеется список переменных, содержащих несколько имен (n1,n2,...). Все они имеют тип (int) (целое). Переменная exam целого типа, беззнаковая и объявлена отдельно. Если используются спецификаторы unsigned, long, short то спецификатор int можно опускать, так как переменные имеют тип int по умолчанию. В С имеется множество предопределенных типов данных, включая несколько видов целых, указателей, переменных с плавающей точкой, массивов, объединений, структур и тип void (пустой). Слово void означает, например, что указатель может указывать на любой тип, функция не получает параметров или не возвращает значение. Скалярные типы включают символьные типы, целые, плавающие типы, указатели, ссылки и перечисления. Целые типы включают несколько разновидностей целых и символьных данных. Арифметические типы объединяют целые и вещественные (плавающие). Символьные типы: отдельные символы, литеральные строковые константы (символьные строки, символические константы). Строковые константы всегда заканчиваются нулем. В строковых константах могут быть управляющие последовательности (\n, \t, \\ и др.), которые допускаются везде, где могут быть печатные символы. ’’c:\\bc\\test\\f.c ’’ Составные типы - включают в себя массивы, структуры и объединения. Каждый объект заданного типа занимает определенное число единиц памяти. За единицу принимается один байт. Число единиц памяти, требуемое для размещения элемента данного типа, может быть вычислено с использованием операции sizeof(<тип>) или sizeof(<объект_типа>). Ниже приведена таблица, показывающая основные типы данных, их размер и диапазон значений.
Таблица 3.1 - Размер и диапазон значений переменных различных типов
Пользователь имеет возможность связать объявление типа данных с более простым и наглядным новым именем для этого типа данных (назначить псевдоним), используя средство # typedef с форматом typedef <объявление типа> <псевдоним>. Например, определим новое имя для типа unsigned int typedef unsigned int NATUR; // unsigned int с вязывается с именем – // псевдонимом NATUR NATUR i; // объявляем переменную i типа insigned int Для запрета изменения значений переменных используется ключевое слово-модификатор const . сonst int value16 = 0xf9ac; сonst unsignid int value8 = 0234; // переменные в // шестнадцатеричном (ÆXddd ) и восьмеричном (Æddd) виде. Для определения именованных констант и макроопределений (макросов) используют директиву препроцессора: #define <ИМЯ> (argument 1[, argument 2…]) <подставляемый текст> Директива создает временные имена (именованные константы), которые препроцессор заменяет на подставляемый текст, поэтому имена не являются объявлениями переменных. #define STRING ’’\a\’’Hello, Wold! \’’\n’’ #define HEX 0x9b #define DECIMAL 155 Глобальные переменные (extern, static) инициализируются нулевым значением по умолчанию. Локальные переменные (auto, register) не инициализируются по умолчанию. Пример /* ЗАНЯТИЕ N 3 Разработал........... Выполнить объявления типов, переменных с различными классами памяти, констант. Ввести исходные значения переменных, вычислить значения переменных и вывести результаты расчетов. Использовать макроопределение для выбора наибольшего значения*/ #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<math.h> enum en {NACH=0, N=10, MIN=1000};//Вместо следующих директив: //(#define NACH 0) (#define N 10) (#define MIN 1000) typedef int norm; //Объявление типа norm -синонима int float x; //Объявление глобальной переменной (extern) void main(void) {clrscr(); norm i=NACH,j=NACH; //i,j-переменные типа int (norm) static float min=MIN; //Объявление глобальной переменной (static) auto float y=N, k=0; //Множественное объявление переменных (auto) float a,b,c,d; //Множественное объявление переменных (auto) printf("Значения переменных после инициализации:\ \n\t x\t y\t min\t k\t i\t j\n"); printf("%8.5f %8.5f %8.5e %8.5f %3d %3i\n",x,y,min,k,i,j); printf("Введите значения переменных типа float:\n\ta, b, c, d:\n\t"); scanf("%f %f %f %f",&a,&b,&c,&d); printf("Значения переменных после ввода с клавиатуры,\n\t a\t \ b\t c\t d\n"); printf("%8.5f %8.5f %8.5e %8.5f\n",a,b,c,d); x=NACH+N; y=a*x*x*x+b*x*x+c*x+d; min=y+i*pow(y,2); //функция Y^2 k=x*sin(j); x+= 0.1; //x=x+0.1; printf("\n ЗHАЧЕHИЕ Y=%f",y); printf("\n ЗHАЧЕHИЕ min=%10.5e",min); printf("\n ЗHАЧЕHИЕ x=%10.5f",x); printf("\n ЗHАЧЕHИЕ k=%3.1f\n ",k); //------------------------------------------- #define MAX(x,y) ((x)<(y)?(y):(x)); //Макроопределение MAX //если (x)<(y), то значение результата -у, если (x)>(y), то -x float af,bf,rez; //Множественное объявление переменных (auto) printf(" Введите через пробел 2 числа:"); scanf("%f %f",&a,&bf); rez=MAX(af,bf); //af, bf-фактические параметры printf("Максимальное число: %4.2f ",rez); getche(); } /*Значения переменных после инициализации: x y min k i j 0.00000 10.00000 1.00000e+05 0.00000 0 0 Введите значения переменных типа float: a, b, c, d: 3 4 5 6 Значения переменных после ввода с клавиатуры, a b c d 3.00000 4.00000 5.00000e+00 6.00000 ЗHАЧЕHИЕ Y=3456.000000 ЗHАЧЕHИЕ min=3.45600e+03 ЗHАЧЕHИЕ x= 10.10000 ЗHАЧЕHИЕ k=0.0 Введите через пробел 2 числа: 23.4 56.89 Максимальное число: 56.89 */ Ход работы 1 Изучить основные типы данных языка С, директивы процессора. 2 Разработать программу с использованием переменных различных типов. Индивидуальное задание приведено в табл.2. При объявлении переменных использовать typedef. Создать и использовать именованные константы. Для ввода и вывода значений использовать функции форматированного ввода-вывода scanf() и printf() с представлением значений в десятичном, шестнадцатеричном и восьмеричном виде, атакже getchar(), getche(), putchar() и др. 3 Для переменных разного типа определить их размер в байтах и вывести значения на экран дисплея. 4 Использовать управляющие последовательности (эскейп последовательности) различного типа при выводе сообщений на экран. 5 К переменным, указанным в индивидуальном задании, добавить переменные других типов. 6 Оформить отчет и сделать выводы о проделанной работе, изучив контрольные вопросы по теме.
Индивидуальное задание к лабораторной работе №3 Составить программу для хранения и обработки информации включающей различные типы данных. Индивидуальное задание приведено в таблице 3.2. Таблица 3.2 - Индивидуальное задание
Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы 1 Что означают символы: ’\r’, ’\f ’, ’\b’, ’\a’, ’\n’, ’\\’, ’\’’ ’, ’\’ ’, ’\000’, ’\0x00’, ’\0x0a’, ’\0x5c’? 2 Какие переменные относятся к скалярным, арифметическим, составным, символьным? 3 Почему в строке ’’c:\\bc\\test\\f.c’’ знак \ повторяется два раза? 4 Что означает ключевое слово signed? 5 Что означает ключевое слово #define, для чего используется? 6 Что означает ключевое слово const, для чего используется? 7 Что означает ключевое слово typedef, для чего используется? 8 Что означает ключевое слово #include, для чего используется? 9 Правильно ли выражение #include ’’c:\bc\test\my.h’’? 10 Что означают записи: 1254L, 34l, 0xf9ac, 0875, 76678UL? 11 Какой размер в байтах имеют базовые типы Си? 12 Где можно объявить переменную? Какой тип имеет переменная по умолчанию? 13 Что означает множественное объявление переменных? 14 Как определить размер типа в байтах? 15 Происходит ли инициализация переменной по умолчанию? В каких случаях? 16 Назовите класс памяти переменной по умолчанию. Зависит ли он от места объявления? Лабораторная работа №4
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 355; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.30.14 (0.009 с.) |