Явное и неявное преобразование типов в языке С++
Определение, описание и вызов функций в языке С++.
1. Цель работы: Изучение операции преобразования типа в языке С++, а также определения, описания и вызова функции пользователем.
Домашнее задание
2.1 Сформулировать и записать правила преобразования типов при выполнении арифметических операций и операции присваивания. Привести примеры.
2.2 Сформулировать и записать правило передачи данных в функцию по значению через аппарат фактических и формальных параметров. Привести пример.
Лабораторное задание.
3.1 Набрать программы №1 и №2.
// Программа №1 Преобразование типов.
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
void main (){
long k = 123456789;
float g = (float)k;
cout<<"\n\n k = "<<k;
cout<<"\n g= "<<g;
k = (long)g;
cout<<"\n k = "<<k; //Объяснить результат
g = (float) 2.222222e+2;
int m = int(g);
cout<<"\n\n g = " <<g;
cout<<"\n m = "<<m;
g = (float)m;
cout<<"\n g = "<<g;
int a=1, b = 2;
double c = 1;
|
|
c = a/b*c+ a*c/b;
cout<<"\n c = "<<c; //Объяснить результат
cout<<"\n 1/2*exp(1) = "<<1/2*exp(1.); //Объяснить результат
getchar();
}
// Программа №2 Функции, определенные пользователем
#include "stdafx.h"
#include <iostream>
using namespace std;
extern double k; //Описание переменной k
void main (){
double a = 2, b = 3;//Описание, определение и инициализация переменных a и b.
k = 1.3*k/((a+b)*(a-b));
cout<< "\n k = "<<k;
getchar();
}
double k=1; //Определение переменной k
3.2 Отладить программы №1 и №2.
3.3 Модифицировать программу №2 определив функции, реализующие арифметические операции сложения (+), вычитания (-), умножения (*), деления (/). Имена функциям придумать самостоятельно. Вставить в строку программы k = 1.3*k/((a+b)*(a-b)); вместо операции и её операндов соответствующий вызов функции.
//Пример определения и вызова функции, реализующей операцию сложения +:
#include "stdafx.h"
#include <iostream>
using namespace std;
double sum(double a, double b); //Описание функции sum()
extern double k;
void main (){
k = 1;
double a = 2, b = 3;
k = 1.3*k/(sum(a,b)*(a-b)); //Строка программы содержит вызов функции sum()
cout<< "\n k = "<<k;
getchar();
}
double sum(double a, double b){ //Определение функции sum()
return a+b;
}
double k;
3.4 Проанализировать результаты работы программ.
3.5 Написать программу №3, вычисляющую значение функции при t = 0, 0.1 и 0.4.
3.6 Ответить на контрольные вопросы.
3.7 Написать отчет.
Содержание отчета
4.1 Титульный лист. Домашнее задание.
4.2 Текст и результаты работы программы №1.
4.3 Текст модифицированной программы №2, с функциями, реализующими операции -, *, /.
|
|
4.4 Текст программы №3.
Контрольные вопросы
5.1 Что такое описание, определение и вызов функции (пояснить на примере функций определенных вами в лабораторном задании)? Для чего необходимо описание функции, можно ли его опустить?
5.2 Что такое формальные и фактические параметры? Поясните способ передачи данных в функцию через параметры и через глобальную переменную?
5.3 Поясните, с помощью какого оператора функция возвращает значение в точку вызова. Какой тип этого значения?
5.4 Что такое описание и определение переменной? Приведите примеры описания и определения переменных? В чем их принципиальная разница?
5.5 Что такое инициализация переменной? Чем инициализация переменной отличается от присваивания переменной значения.
5.6 Свойства переменных различного типа: объем занимаемый в памяти, диапазон значений, количество значащих цифр, множество операций, определенных над ними, область видимости и область существования.
5.7 Какие переменные называются локальными, глобальными, статическими? Приведите примеры. Может ли локальная переменная быть статической?
5.8 Приведите примеры явного и неявного преобразования типов при выполнении арифметических операций и операции присваивания. Объясните результаты работы программы №1.
5.9 Как использовать библиотечные функции? Что такое заголовочный файл, и что он содержит. Где содержится определение и описание библиотечных функций, использованных в лабораторной работе?
5.10Напишите функцию, вычисляющую модуль, и функцию, вычисляющую, аргумент комплексного числа.