У вас вопросы?
У нас ответы:) SamZan.net

Отчет по лабораторной работе 3 По дисциплине- Программирование и алгоритмические языки Переменные т

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 1.2.2025

Министерство образования и науки, молодежи и спорта Украины

Харьковский национальный университет имени В. Н. Каразина

Факультет компьютерных наук

Отчет по лабораторной работе №3

По дисциплине: «Программирование и алгоритмические языки»

«Переменные, типы данных и операции над ними»

Выполнил: студень группы КС-11

Сарибекян Л.Н.

Проверил: преп. каф. электроники

Литвинов Д. Н.

Харьков

2012

Задание 1. При помощи оператора sizeof определите экспериментально размеры указанных ниже типов. Результаты занесите в таблицу:

Тип

Размер

int

4

unsigned int

4

char

1

unsigned char

1

float

4

double

8

short

2

long

4

long long

8

long double

8

Задание 2. Проверьте: что получится, если к максимальному значению некоторого целого типа прибавить единицу? А если вычесть единицу из минимального значения? Проведите эти эксперименты для одного типа со знаком и одного беззнакового типа.

#include <iostream>

#include <cmath>

//библиотека характеристик переменных

#include <limits>

using namespace std;

unsigned long int main () {

 //вычисления и вывод результата

cout << "long int max + 1 = " << LONG_MAX + 1 << "\n";

cout << "long int min - 1 = " << LONG_MIN - 1 << "\n";

cout << "unsigned long int max + 1 = " << ULONG_MAX + 1 << "\n";

 return 0;

}

Задание 3. Объявите три или более переменные разного размера. Узнайте их адреса. Изобразите их на иллюстрации, подобной рис. 1 (нужна только таблица, стрелочек и пояснений не надо).

#include <iostream>

using namespace std;

int main () {

 int x;

 long int y;

 short int z;

cout << "Address of x = " << &x << "\n";

cout << "Address of y = " << &y << "\n";

cout << "Address of z = " << &z << "\n";

 return 0;

}

Адреса

Ячейки

0012FF60

x

0012FF54

y

0012FF48

z

Задание 4. Определите, к какому типу относятся следующие литералы:

Литерал

Его тип

Литерал

Его тип

-2

int

2e+1

double

'E'

char

'*'

char

3.8

double

6.3e-1f

double

"E"

char*

18L

int

-10.0

double

-2F

int

"1979"

char*

-5UL

int

0x13

int

0XDEAL

int

Задание 5. Постройте дерево (для того же выражения), аналогичное приведенному на рис. 2, но в предположении, что приоритеты операций инвертированы: + и – более приоритетны, чем * и /.

h = (v0*(t + g)*t*t) / 2.0;

Задание 6. Расставьте скобки в следующих выражениях согласно приоритетов операций:

  1.  a + (b * a) - b
  2.  (x + h) > (xh)
  3.  (i >= 1) && (j < 4)
  4.  ((! x) < 2) || (x > 4)
  5.  (x) * y
  6.  (x == 0) || (((x / y) > 1) && (y != 0))
  7.  (a > b) != (b < c)
  8.  n & (2 == 0)
  9.  (a ^ (b & c)) | d
  10.  ((k + m) < j) || ((3 – j) >= k)

Задание 7. Постройте дерево разбора с указанием преобразований типов (аналогично рис. 4) для выражения из следующего фрагмента:

short days = 512;

int year = 2000 + days/365;

Задание 8. По данным социологов, из N опрошенных человек на улицах Харькова за Партию Программистов собираются голосовать M человек. Используя операцию приведения к типу double, напишите программу, которая по заданным N и M поможет социологам определить, сколько процентов респондентов собираются голосовать за Партию Программистов. Резульат представьте в виде целого числа, отбросив дробную часть. Постройте для своей программы дерево разбора выражения с указанием преобразований типов (аналогично приведенному выше).

#include <iostream>

#include <cmath>

using namespace std;

int main () {

setlocale(0,"Rus");

 int N, M;

 double res;

cout << "Введите количество всех респодентов: \n";

cin >> N;

cout << "\n";

cout << "Сколько из них будут голосовать за Партию Программистов? \n";

cin >> M;

cout << "\n";

res = ((double)(M)/N)*100;

cout << "За Партию Программистов будут голосовать " << (int)res << "% опрошенных. \n\n\n\n";

 return 0;

}

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

  1.  Какой адрес имеет правая верхняя ячейка на рис. 1?

Ответ: 12FF68.

  1.  Какое максимальное и минимальное значение имеют целочисленные типы, указанные в таблице из «задания 1» на стр. 2?

Ответ: Максимальное = 8, минимальное = 1.

  1.  Почему тип double имеет больший размер, чем float?

Ответ: Double это 64-битное число с плавающей точкой, а float - 32-битное.

  1.  Какие Вам известные другие применения символа “&” в языке C++, кроме операции взятия адреса?

Ответ: Побитовое И.

  1.  Как размеры переменных влияют на адреса их расположения в памяти?

Ответ: Битность влияет на количество занимаемых ячеек 1 бит = 1 ячейка, 8 бит = 8 ячеек и т.д.

  1.  Из каких строк таблицы 3 следует, что умножение должно выполняться раньше сложения?

Ответ: Приоритет умножения равен 11, а сложения – 10, 11>10, следовательно умножение следует выполнять раньше, чем сложение.

  1.  Почему операции логические операции (||, &&) имеют меньший приоритет, чем операции сравнения (>, == и др.)?

Ответ: Если в выражении присутствуют и логические операции и операции сравнения, то следует сперва выполнить сравнение, так как в таком случае мы получим корректный результат.

PAGE   \* MERGEFORMAT 6




1. Последний дон Марио Пьюзо Последний дон Аннотация Имя Марио Пьюзо не нуждае
2. Построение и анализ функции спроса на товар
3. 1915 Главная задача управления предприятием ~ максимальная прибыль для предпринимателя в соединении с макс
4. Джоджо Мойес Лу Кларк знает сколько шагов от автобусной остановки до ее дома
5. Патриотическое воспитание граждан Российской Федерации на 20012005 гг
6. Експериментальне визначення механічних характеристик для маловуглевцевої сталі та чавуну при
7. технических условиях
8. РЕГИОНАЛЬНЫЙ ФИНАНСОВОЭКОНОМИЧЕСКИЙ ИНСТИТУТ Кафедр
9. перерозподілу ризиків
10. Управление функция любых организованных систем обеспечивающая сохранение их определенной структу