17096

Розробка програм зі скалярними типами даних

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

Информатика, кибернетика и программирование

Лабораторна робота № 8 Тема: Розробка програм зі скалярними типами даних Ціль роботи: Розглянути і вивчити скалярні типи даних С int char float і ін. і їхнє використання. Обладнання: ПКПО Borland C Теоретичні відомості У С перемінні повинні бути оголошені тобто їхній ...

Украинкский

2013-06-29

90 KB

1 чел.

Лабораторна робота № 8

Тема: Розробка програм зі скалярними типами даних

Ціль роботи: Розглянути і вивчити скалярні типи даних С++ (int, char, float і ін.) і їхнє використання.

Обладнання: ПК,ПО Borland C++

Теоретичні відомості

У С++ перемінні повинні бути оголошені, тобто їхній тип специфікований до того, як ці перемінні будуть використані. Оголошення перемінних можуть бути зроблені в будь-якім місці програми. При оголошенні перемінних застосовується префикснийзапис, при якій спочатку вказується тип, а потім - ім'я перемінної.

Оголошення перемінних можуть бути глобальними з класами пам'яті 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.с'’

Складені типи - містять у собі масиви, структури й об'єднання.

Кожен об'єкт заданого типу займає визначене число одиниць пам'яті. За одиницю приймається один байт. Число одиниць пам'яті, необхідне для розміщення елемента даного типу, може бути обчислене з використанням операції sizeof(тип) чи sizeof(об'єкт_типу). Нижче приведена таблиця, що показує основні типи даних, їхній розмір і діапазон значень.

Таблиця 3.1 - Розмір і діапазон значень перемінних різних типів

Тип

Розмір

у

байтах

Діапазон значень

signed char

1

128...127

unsigned char

1

0...255

signed int

2

-32768...32767

unsigned  int

2

0...65535

signed  short

аналогічно int

unsigned  short

аналогічно unsigned int

signed long

4

2147483648…2147483647

unsigned long

4

0...4294967295

float

4

-3.4е38...3.4e38

double

8

-1.7е308...1.7е308

long double

10

-1.7е308...1.7е308

Користувач має можливість зв'язати оголошення типу даних з більш простим і наочним новим ім'ям для цього типу даних (призначити псевдонім), використовуючи засіб 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 і=NACH,j=NACH;   //і,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 і\t j\n");

printf("%8.5f %8.5f %8.5e %8.5f %3d %3і\n",x,y,min,k,і,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+і*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            і        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

    

Приклад програми на С++

Скласти програму для форматованого введення і виведення даних заданого типу відповідно до індивідуального завдання приведеному в таблиці 2.1.

варіант

перший тип

другий тип

третій тип

четвертий тип

вирівнювання по краю

Точність речовинних типів

6

signed long int

Long double

unsigned int

float

правий

16.5

#include<iostream.h>

#include<stdio.h>

void main()

{long a;

double b;

unsigned c;

float d;

cout<<"Вводите\n";

cin>>a>>b>>c>>d;

cout<<"Long\n";

printf("%16.5d", a);

printf("\ndouble\n");

printf("%16.5lf", b);

printf("\nunsigned\n");

printf("%16.5d", c);

printf("\nfloat\n");

printf("%16.5f", d);

}     */

Хід роботи

  1.  Вивчити основні типи даних мови З, директиви процесора.
  2.  Розробити програму з використанням перемінних різних типів. Індивідуальне завдання приведене в табл.2. При оголошенні перемінних використовувати typedef . Створити і використовувати іменовані константи. Для введення і висновку значень використовувати функції форматованого введення-висновку scanf() і printf() із представленням значень у десятковому, шестнадцятирічному і восьмеричному виді, а також getchar(), getche(), putchar() і ін.
  3.  Для перемінних різного типу визначити їхній розмір у байтах і вивести значення на екран дисплея.
  4.  Використовувати керуючі послідовності (эскейп послідовності) різного типу при висновку повідомлень на екран.
  5.  До перемінним, зазначеним в індивідуальному завданні, додати перемінні інших типів.
  6.  Оформити звіт і зробити Захист роботи про пророблену роботу, вивчивши контрольні питання по темі.

Індивідуальне завдання

Скласти програму для збереження й обробки інформації яка включає різні типи даних. Індивідуальне завдання приведене в таблиці 3.2.

Таблиця 3.2 - Індивідуальне завдання

Варіант

Номер і зміст даних

1

2

3

4

5

6

7

1

ФИО

Ріст

Вага

Рік народження

Підлога

Рейтинг

2

Назва ЕОМ

Тип процесора

Обсяг пам'яті

Тип дисплея

Кількість дисководів

Вартість

3

Тип автомобіля

Колір

Кількість коліс

Кількість місць

Вантажопідйомність

Вартість

4

Тип автобуса

Кількість місць

Вантажопідйомність

Номер маршруту

Пункт призначення

Час відправлення

5

ФИО

Номер школи

Клас

Середній бал атестата

Улюблений предмет

Нелюбимий предмет

6

Назва магазина

Вид товару

Адреса

Час роботи

Кількість продавців

Номер магазина

7

ФИО

Вид спорту

Особистий рекорд

Іноземна мова

Термін занять

Кількість знайомих слів

8

Назва фірми

Обсяг річного обороту

ФИО директора

Штат

Стаж роботи

Вік директора

9

ФИО

Наявність братів і сестер

Число

Місяць

Рік народження

Вага

10

Назва книги

Автор

Видавництво

Дата видання

Країна

Кількість сторінок

11

ФИО

Номер у групі

Назва групи

Курс

Оцінки

Рейтинг

12

Назва велосипеда

Кількість коліс

Діаметр коліс

Колір

Вантажопідйомність

Швидкість

13

Назва програмного продукту

Область застосування

Обсяг займаної пам'яті

Операційна система

Режим: текстовий чи графічний

Вартість

14

Назва доля групи

Дата створення

Стиль

Склад групи

Кількість альбомів

Вартість квитка

15

ФИО

Номер залікової книжки

Улюблений предмет

Оцінки по математиці

середній бал

Мова програмування

16

Назва журналу

Вік читачів

Кількість сторінок

Початок видання

Тираж

Передплатний індекс

17

Назва літака

Дальність польоту

Кількість місць

Кількість двигунів

Час вильоту

Час у повітрі

18

Назва праски

Ціна

Країна виробник

Вага

Температура

Наявність регулятора

19

Місто

Країна

Область

Поштовий індекс

Число жителів

Площа

20

Операційна система

Многозадачность

Обсяг пам'яті

Версія

Фірма розроблювач

Вартість

Вимоги до змісту звіту приведені в лабораторній  роботі№1.

Контрольні питання для підготовки  і лабораторної роботи

Що означають символи: ’\r’, ’\f ’, ’\b’, ’\а', ’\n’, ’\\’, ’\’’ ’, ’\’ ’, ’\000’, ’\0x00’, ’\0x0а', ’\0x5с'?

Які перемінні відносяться до скалярним, арифметичним, складеним, символьним ?

Чому в рядку ’’c:\\bc\\test\\f.с'’ знак \ повторюється два рази ?

Що означає ключове слово signed ?

Що означає ключове слово #define, для чого використовується ?

Що означає ключове слово const, для чого використовується ?

Що означає ключове слово typedef, для чого використовується?

Що означає ключове слово #include, для чого використовується ?

Чи правильно вираження #include ’’c:\bc\test\my.h’’?

Що означають запису: 1254L,  34l,  0xf9ac, 0875, 76678UL ?

Який розмір у байтах мають базові типи Си ?

Де можна оголосити перемінну? Який тип має перемінна за замовчуванням?

Що означає множинне оголошення перемінних ?

Як визначити розмір типу в байтах ?

Чи відбувається ініціалізація перемінної за замовчуванням? У яких випадках?

Назвіть клас пам'яті перемінної за замовчуванням.  Чи залежить він від місця оголошення?


 

А также другие работы, которые могут Вас заинтересовать

23899. Гомер Илиада 20.07 KB
  Этот эпизод гнев Ахилла величайшего из последнего поколения греческих героев. Главным вождем был сильнейший из царей правитель города Аргос Агамемнон; с ним были брат его Менелай ради которого и началась война могучий Аякс пылкий Диомед хитроумный Одиссей старый мудрый Нестор и другие; но самым храбрым сильным и ловким был юный Ахилл сын морской богини Фетиды которого сопровождал друг его Патрокл. Это тот самый брак от которого родился Ахилл. Это был Ахилл.
23900. Гомер Одиссея 26.48 KB
  Одиссея поэма сказочная и бытовая действие ее разворачивается с одной стороны в волшебных краях великанов и чудовищ где скитался Одиссей с другой в его маленьком царстве на острове Итаке и в ее окрестностях где ждали Одиссея его жена Пенелопа и его сын Телемах. Обо всем что было раньше Одиссей рассказывает на пиру в середине поэмы и рассказывает очень сжато: на все эти сказочные приключения в поэме приходится страниц пятьдесят из трехсот. В Троянской войне Одиссей очень много сделал для греков особенно там где нужна была...
23901. Еврипид Ифигения в Авлиде 17.11 KB
  Греки собрались на них огромным войском во главе его встал аргосский царь Агамемнон брат Менелая и муж Клитемнестры сестры Елены. Может быть Агамемнон на досуге развлекаясь охотою одной стрелою поразил лань и не в меру гордо воскликнул что сама Артемида не ударила бы метче а это было оскорблением богине. Гадатель сказал: богиня требует себе человеческой жертвы пусть на алтаре будет зарезана родная дочь Агамемнона и Клитемнестры красавица Ифигения. За Ифигенией послали гонцов: пусть ее привезут в греческий стан царь Агамемнон...
23902. Еврипид Ифигения в Тавриде 17.56 KB
  У великого аргосского царя Агамемнона главного вождя греческой рати в Троянской войне была жена Клитемнестра и было от нее трое детей: старшая дочь Ифигения средняя дочь Электра и младший сын Орест. Агамемнон сделал это; как это произошло Еврипид показал в трагедии Ифигения в Авлиде. При этом храме Ифигения стала жрицей.
23903. Еврипид Медея 17.48 KB
  В Колхиде правил могучий царь сын Солнца; дочь его царевнаволшебница Медея полюбила Ясона они поклялись друг Другу в верности и она спасла его. Вовторых когда они отплывали из Колхиды Медея из любви к мужу убила родного брата и разбросала куски его тела по берегу; преследовавшие их колхидяне задержались погребая его и не смогли настичь беглецов. Втретьих когда они вернулись в Иолк Медея чтобы спасти Ясона от коварства Пелия предложила дочерям Пелия зарезать их старого отца обещав после этого воскресить его юным.
23904. Софокл Антигона 17.64 KB
  Когда Эдип отрекся от власти и удалился в изгнание править стали вдвоем Этеокл и Полиник под надзором старого Креонта свойственника и советника Эдипа. После гибели Этеокла и Полиника власть над Фивами принял Креонт. Но Креонт думал не о людях и не о богах а о государстве и власти. Навстречу хору выходит Креонт и оглашает свой указ: герою честь злодею срам тело Полиника брошено на поругание к нему приставлена стража кто нарушит царский указ тому смерть.
23905. Софокл Трахинянки 17.08 KB
  Знаменит он только тем что в нем прожил свои последние годы величайший из греческих героев Геракл сын Зевса. Почти все греческие герои были царями в разных городах и городках кроме Геракла. Когда Геракл кончил свою подневольную службу он пошел на край Греции свататься к Деянире. Геракл схватился с богом в борьбе придавил его как гора; тот обернулся змеем Геракл стиснул ему горло; тот обернулся быком Геракл сломил ему рог.
23906. Филоктет - характеристика литературного героя 14.8 KB
  Филоктет характеристика литературного героя персонажа Филоктет ФИЛОКТЕТ герой трагедии Софокла Филоктет поставлена в 409 г. создали кроме Софокла и Эсхил и Еврипид обе хронологически предшествовали Софокловой но последние произведения не сохранились. на пути под Трою во время жертвоприношения у Софокла на Хрисе около Лемноса по другим версиям на о. исключительный для Софокла случай наученный Одиссеем выдает себя за жертву Атридов.
23907. Софокл Царь Эдип 16.7 KB
  Назвали мальчика Эдип. Эдип вырос сильным и умным. Эдип был в ужасе.