Программирование на языке С++
Основные виды констант и их примеры. Список базовых целочисленных типов и занимаемый ими размер в байтах. Занесение значения по указателю. Возвращение значения из функции через переданные ей аргументы. Отличие класса от структуры, виртуальные функции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 09.06.2013 |
Размер файла | 26,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- Константа. Примеры констант
- Полный список базовых целочисленных типов и занимаемый ими размер памяти в байтах
- Указатель. Занесение значения по указателю. Примеры
- Функция. Можно ли возвращать значения из функции через переданные ей аргументы?
- Класс. В чем отличие класса от структуры? Примеры
- Виртуальная функция. В каких случаях используются виртуальные функции?
- Литература
Константа. Примеры констант
Константы, так же как и переменные, представляют собой область памяти для хранения данных с тем лишь отличием, что значение, присвоенное константе первоначально, не может быть изменено на протяжении выполнения всей программы.
Константы бывают литеральными (символьные, строковые, целые и вещественные) и типизированными.
Символьные - представляются отдельным символом, заключенным в одинарные кавычки (апострофы): `е', '@', '>'.
Строковые - последовательность символов, заключенная в двойные кавычки.
Целые бывают следующих форматов:
десятичные (123; 2384);
восьмеричные (034; 047);
шестнадцатиричные (0хF4; 0Х5D).
Вещественные - числа с плавающей запятой могут быть записаны в десятичном формате (24.58; 13.0)
Типизированные - используются как переменные, значение которых не может быть изменено после инициализации.
Типизированная константа объявляется с помощью ключевого слова const, за которым идет указание типа константы, но в отличие от переменных, константы всегда должны быть инициализированы.
В качестве примера использования типизированных и литеральных констант вычислим значение площади круга по известному значению радиуса:
#include <iostream. h>
int main ()
{
const double pi = 3.1415;
const int Radius = 3;
double Sqare = 0;
Sqare = pi * Radius * Radius;
cout << Square << `\n';
return 0;
}
В начале главной функции программы объявляются две константы: pi и Radius. Значение переменной Square изменяется в ходе выполнения программы и не может быть представлено как константа. Поскольку значение радиуса задано явно и в тексте программы не предусмотрено его изменение, переменная Radius объявлена как константа.
Полный список базовых целочисленных типов и занимаемый ими размер памяти в байтах
Список базовых целочисленных типов и занимаемый ими размер в байтах.
Целочисленные типы - обозначают множества целых чисел в различных диапазонах.
Тип |
Размер, байт |
Значение |
|
Bool |
1 |
true или false |
|
unsigned short int |
2 |
от 0 до 65 535 |
|
short int |
2 |
от - 32 768 до 32 767 |
|
unsigned long int |
4 |
от 0 до 4 294 967 295 |
|
long int |
4 |
от - 2 147 483 648 до 2 147 483647 |
|
int (16 разрядов) |
2 |
от - 32 768 до 32 767 |
|
int (32 разряда) |
4 |
от - 2 147 483 648 до 2 147 483647 |
|
unsigned int (16 разрядов) |
2 |
от 0 до 65 535 |
|
unsigned int (32 разряда) |
4 |
от 0 до 4 294 967 295 |
|
char |
1 |
от 0 до 256 |
|
float |
4 |
от 1.2е-38 до 3.4е38 |
|
double |
8 |
от 2.2е-308 до 1.8е308 |
|
void |
2или4 |
- |
Указатель. Занесение значения по указателю. Примеры
Мощным средством разработчика программного обеспечения на С++ является возможность осуществления непосредственного доступа к памяти. Для этой цели предусматривается специальный тип переменных - указатели.
Указатель - переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных из области памяти, причём на самое его начало. Указатель может ссылаться на переменную или функцию. Для этого нужно знать адрес переменной или функции. Чтоб узнать адрес конкретной переменной в С++ существует унарная операция взятия адреса (&). Такая операция извлекает адрес объявленных переменных, для того, чтобы его присвоить указателю.
Указатели используются для передачи по ссылке данных, это намного ускоряет процесс обработки этих данных (в том случае, если объём данных большой), так как их не надо копировать, как при передаче по значению, то есть, используя имя переменной. В основном указатели используются для организации динамического распределения памяти, например при объявлении массива, не надо будет его ограничивать в размере. Любой указатель необходимо объявить перед использованием, как и любую переменную.
Объявление указателя:
<тип данных> *<имя указателя>;
Принцип объявления указателей такой же, как и принцип объявления переменных. Отличие заключается только в том, что перед именем ставится символ звёздочки (*). То есть, визуально указатели отличаются от переменных только одним символом.
Чтобы получить значение, записанное в некоторой области, на которое ссылается указатель нужно воспользоваться операцией разыменования указателя (*). Необходимо указать звёздочку перед именем и получим доступ к значению указателя. Теперь приведем пример использования указателей.
// pointer. cpp: определяет точку входа для консольного приложения.
#include "stdafx. h"
#include <iostream>
using namespace std;
int _tmain (int argc, _TCHAR* argv [])
{
int var = 123; // инициализация переменной var числом 123
int *ptrvar = &var; // указатель на переменную var (присвоили адрес переменной указателю)
cout << " &var = " << &var << endl; // адрес переменной var содержащийся в памяти, извлечённый операцией взятия адреса
cout << " ptrvar = " << ptrvar << endl; // адрес переменной var, является значением указателя ptrvar
cout << " var = " << var << endl; // значение в переменной var
cout << " *ptrvar = " << *ptrvar << endl; // вывод значения содержащегося в переменной var через указатель, операцией разименования указателя
system ("pause");
return 0;
}
программирование язык виртуальная функция
В программировании принято добавлять к имени указателя приставку ptr, таким образом, получится осмысленное имя указателя, и уже с переменной такой указатель не спутаешь.
Функция. Можно ли возвращать значения из функции через переданные ей аргументы?
Функцию можно представить как подпрограмму или некую процедуру, несущую законченную смысловую нагрузку.
Вся программа в С++ состоит из отдельных блоков - функций. Даже основная программа на самом деле является функцией с именем main оговоренного стандартного вида. Функции позволяют сделать программу модульной, то есть разделить программу на несколько маленьких подпрограмм, которые в совокупности выполняют поставленную задачу.
Структура функции:
Возвращаемый_тип идентификатор (список параметров);
{
Блок инструкций процедуры, включающий инструкцию return значение; }
Возвращаемый_ тип - это тип данных которые возвращает функция. Может быть любым стандартным типом данных С++ (int, double, int * и т.д.) или типом данных определенным пользователем.
Идентификатор - имя функции, как и любой идентификатор в С++ должен состоять из букв, цифр и символа подчеркивания и начинаться не с цифры.
Список параметров - перечисление всех параметров, передаваемых функции. Имеет вид последовательности выражений вида тип_переменной идентификатор, разделенных запятыми. Если функция не принимает ни одного параметра, то список будет пустым.
Наконец, тело функции может содержать любые инструкции, среди которых должна быть хотя бы одна инструкция return, которая завершает выполнение процедуры и возвращает указанное значение. Инструкций return может быть много, каждая из них немедленно прерывает выполнение функции.
Пример функции, которая по данному числу x и данному натуральному числу n вычисляет x^n:
double power (double x, int n) // Функция принимает 2 аргумента: double и int { // и возвращает значение типа double double p=1;
int i;
for (i=0; i>n; ++i) // Цикл будет пройден n раз p*=x;
return p; // Теперь возвращаем значение p }
В основной программе (из функции main) или из другой функции мы можем вызвать реализованную функцию, указав ее идентификатор и перечислив в круглых скобках список передаваемых параметров.
Возвращаемое функцией значение можно вывести на экран, присвоить другой переменной, использовать в арифметическом выражении, а можно и ничего с ним не делать. Функция может и не возвращать значения, тогда в ее объявлении в качестве типа возвращаемого значения следует указать слово void. Функция, не возвращающая значения, должна завершаться инструкцией return; без указания значения (а может и вообще не содержать инструкции return;). Такие функции нельзя использовать в арифметических выражениях. Пример функции, печатающей на экране строку Hello, world! и не возвращающей значения:
void hello () // функция не возвращает значения { // и не принимает ни одного параметра cout<<"Hello, world!"<<endl;
return;
}
Также есть функции, имеющие одинаковые имена, но отличающиеся типами передаваемых параметров. Например, можно сделать две функции для возведения в степень чисел типа int и типа double:
int power (int x, int n);
double power (double x, double n);
При этом первая функция будет работать быстрее, поскольку операции с целочисленными данными выполняются быстрее, чем операции над числами с плавающей точкой, поэтому для целых чисел пользоваться первой функцией предпочтительнее.
Внутри функции могут быть объявлены переменные такие как p и i в функции power. Такие переменные называются локальными и они определены только внутри этой функции. Переменные, определенные вне тела функции называются глобальными и они определены всюду начиная с места определения и до конца файла. Глобальными переменными можно пользоваться во всех функциях. Локальные переменные создаются каждый раз при входе в функцию и уничтожаются при выходе из нее. Таким образом, значения, сохраненные в локальных переменных, пропадут после завершения работы функции.
В различных функциях можно определять переменные с одним и тем же именем, но это будут различные переменные. Также можно объявлять в функции переменные, имена которых совпадают с именами глобальных переменных. Тогда будет создана новая локальная переменная, а изменить значение глобальной переменной с таким именем будет невозможно. Пример:
#include <iostream> using namespace std;
int i; // i - глобальная переменная void f1 () { int i; // Определена локальная переменная i i=5; // Изменяется значение локальной переменной cout<<i<<endl; // Будет напечатано 5 } void f2 () { i=3; // Изменяется значение глобальной переменной } int main () { i=1; // Изменяется значение глобальной переменной f1 (); // f1 () не меняет значение глобальной переменной cout<<i<<endl; // Будет напечатано 1 f2 (); // f2 () меняет значение глобальной переменной cout<<i<<endl; // Будет напечатано 3 return 0; }
Класс. В чем отличие класса от структуры? Примеры
Классы.
Объектно-ориентированное программирование (ООП) - это новый подход к программированию. Модель ООП основана на нескольких основополагающих концепциях.
Абстракция данных - это воз можность определять новые типы данных, с которыми можно работать почти так же, как и с основными типами данных.
Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает то и другое от постороннего вмешательства.
Для реализации этих двух основопологающих концепций в языке С++ используются классы.
Например, класс может описывать объект линию, эллипс, прямоугольник. Но в отличие от структур, которые также могут комплексно описывать свойства каких-либо объектов, между классами возможны взаимодействия, которые выражаются тремя категориями: наследование, полиморфизм и инкапсуляция.
Классы - это типы, определяемые программистом. Для объявления класс используют ключевое слово class, за которым следует открывающая фигурная скобка, а за ней - список данных.
Объявление завершается закрывающей фигурной скобкой и точкой с запятой.
Пример:
class base
{
protected:
char *s;
public:
base ();
base (const char *_s);
void print ();
~base ();
};
В объявлении класса используются ключевые слова public, private, protected - их называют спецификаторами доступа.
Ключевое слово public означает общий доступ к переменным и функциям класса. Уровень доступа private указывает на частный способ доступа к элементам класса и устанавливается по умолчанию при описании класса. Частный уровень доступа дает возможность обращаться к переменным и функциям только внутри класса и запрещает извне, например, через представители или указатели на класс. Режим доступа protected также как и private запрещает доступ к элементам класса через представители и указатели, но разрешает обращаться к ним из дочерних классов при наследовании.
Каждый класс имеет специальные функции, которые называются конструктор и деструктор. Конструктор класса вызывается всякий раз, когда объект создается в памяти ЭВМ и служит обычно для инициализации данных класса. Конструктор имеет то же имя, что и имя класса. Деструктор вызывается при удалении класса из памяти и используется, как правило, для освобождения ранее выделенной памяти под какие-либо данные этого класса. Имя деструктора совпадает с именем класса, но перед ним ставится символ `~'.
Для создания нового экземпляра класса в памяти ЭВМ используется оператор new языка С++, а для удаления - оператор delete.
Очень близким родственником ключевого слова class, является ключевое слово struck, которое используется для объявления структуры. В языке С++ структура - это тот же класс, но с открытыми по умолчанию членами. Структуру можно объявить подобно тому, как объявляется класс, наделив ее такими же переменными и функциями, но есть и отличия:
· структуры являются типами значений; классы - ссылочными типами. Переменная типа структуры, в отличие от типа класса, содержит данные структуры, а не ссылки на данные;
· класс объявленный как class имеет по умолчанию доступ private; класс объявленный как struck имеет по умолчанию доступ public;
· структуры должны иметь хотя бы одну переменную или элемент события без общего доступа; класс может быть совершенно пустым;
· для структуры не требуется конструктор; для класса требуется;
Пример написания класса:
class NameDataSet
{
public:
char firstName [128]; // Имя
char lastName [128]; // Фамилия
int telephone; // Номер телефона
}
NameDataSet nds;
Пример написания структуры:
struct Time { int hour; // часы int minute; // минуты int second; // секунды };
Виртуальная функция. В каких случаях используются виртуальные функции?
Виртуальные функции - функции, у которых известен интерфейс вызова (прототип), но реализация не может быть задана в общем случае, а может быть определена только для конкретных случаев, называются виртуальными (значит - может быть переопределена в производном классе).
В случае переопределяемых функций компилятор умеет отличать один вызов от другого по типу их аргументов. Используя эту информацию, он "жестко" связывает коды программы с соответствующими функциями элементами. С другой стороны, бывает необходимо отличить один вызов от другого, при наличии аргументов одного типа на этапе выполнения, и обеспечить потомки класса разными версиями функций базового класса. Именно использование ключевого слова virtual приводит к отсрочке связывания, и вызову нужной функции на этапе выполнения. Виртуальная функция - это функция, которая будучи описана в потомках, замещает собой соответствующую функцию элемент везде - даже в предке, если она вызывается для потомка. В отличии от раннего связывания с использованием переопределяемых функций элементов, виртуальные функции элементы должны иметь аргументы одного типа. Синтаксис определения виртуальных функций элементов очень прозрачный: добавьте слово virtual к первому определению функции элементу: virtual void Show (); virtual void Hide ().
Только встроенные функции элементы могут быть объявлены как виртуальные. Как только функция объявлена виртуальной, она не может быть переопределена ни в каком наследуемом классе с однотипным перечнем аргументов, но с другим типом возвращаемого значения. Если вы переопределяете Show с тем же перечнем однотипных аргументов и таким же типом возвращаемого значения, то новая функция Show автоматически становится виртуальной, независимо от того, используется ключевое слово virtual или нет. В этом случае говорят, что новая виртуальная Show замещает Show в своем базовом классе. Вы можете свободно переопределять Show с другим перечнем разнотипных аргументов (изменяя при этом тип возвращаемого значения или нет), но виртуальный механизм не задействуется для такой версии Show, а какая именно функция элемента Show будет вызвана - зависит только от класса объекта, для которого вызывается Show, даже если вызов производится через указатель на базовый класс. Например:
Circle ACircle Point* APoint_рointer = &ACircle; // указатель на Circle, // которому присваивается // значение указателя на // базовый класс, Point APoint_рointer->Show (); // вызывает Circle:: Show!
Так как вызов невиртуальной функции-элемента выполняется несколько быстрее, чем виртуального, то в общем случае рекомендуется, когда не встает вопрос о расширяемости, но существенное значение имеет производительность, пользоваться обычными функциями элементами. В противном случае, нужно пользоваться виртуальными.
Литература
1. С.В. Глушаков, А.В. Коваль, С.В. Смирнов "Язык программирования С++"-2002. - 500с. - (Учебный курс).
2. Шиманович Е.Л. C/C++ в примерах и задачах. - Минск: Новое знание, 2004, - 528с.
3. Шмидский Я.К. Программирование на языке С/С++. Самоучитель. - М.: Вильямс, 2004. - 352с.
Размещено на Allbest.ru
...Подобные документы
Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.
контрольная работа [760,0 K], добавлен 08.03.2011Свойства объектно-ориентированного языка программирования. Понятия инкапсуляции и наследования. Виртуальные функции и полиморфизм. Инициализация экземпляра объекта с помощью конструктора. Динамическое создание объектов. Совместимость объектных типов.
реферат [17,0 K], добавлен 15.04.2015Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.
отчет по практике [83,8 K], добавлен 08.06.2010Формирование на экране меню для выбора функций. Элементы пользовательского интерфейса. Описание внутренних переменных, входных и выходных данных языка программирования Си. Выбор пользователем функции. Создание программы "Список коммерческих банков".
курсовая работа [491,9 K], добавлен 17.03.2015Вычисление значения функции с помощью программирования. Рабочий набор исходных данных. Таблица идентификаторов, текст программы, контрольный расчет. Подключение модуля, объявление константы и переменных вещественного типа. Шаг изменения аргумента.
контрольная работа [118,4 K], добавлен 28.09.2012Класс как специальная структура для хранения разнотипной информации о физическом объекте. Порядок объявления класса, его специальные элементы-функции. Создание указателя на объект. Особенности конструкторов и деструкторов. Собственные операции класса.
курсовая работа [483,1 K], добавлен 07.04.2014Возвращение общего количества периодов выплаты для инвестиции на основе периодических постоянных выплат и постоянной процентной ставки в основе финансовой функции КПЕР. Действие функции по средствам программы MS Excel. Примеры использования функции КПЕР.
курсовая работа [1,7 M], добавлен 06.08.2013Общее понятие и специфика применения очереди в программировании. Способы реализации очереди, их сущностная характеристика. Основные проблемы в использовании списков. Представление очереди в виде массива и двух целочисленных переменных start и end.
презентация [895,9 K], добавлен 14.10.2013Исследование понятия алгоритма, особенностей линейных и разветвляющихся алгоритмов. Свойства алгоритма: понятность, точность, дискретность, массовость и результативность. Составление программы для вычисления значения функции и построение её графика.
контрольная работа [278,0 K], добавлен 25.03.2013Вычисление на ЭВМ значения функции и построение графика ее зависимости от аргумента с помощью компьютерных программ МathCad и MS Excel. Структура составления алгоритмов: методы и приемы, связи между параметрами, анализ, сравнение и заключение выводов.
контрольная работа [124,7 K], добавлен 18.12.2011Построение базовой линейной структуры и организация ввода с формы переменной. Определение значения функции и построение блок-схемы базовой структуры "ветвление". Использование цикла со счетчиком. Рассмотрение особенностей работы с одномерными массивами.
контрольная работа [1,4 M], добавлен 10.12.2021Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.
лабораторная работа [124,7 K], добавлен 09.01.2012Использование метода абстракции в программировании на примере построения польской записи выражения с помощью стека. Абстрактные типы данных. Анализ классов реализации списков. Вставка и удаление элемента в список. Вычисление значения выражения на стеке.
презентация [166,7 K], добавлен 19.10.2014Информационные технологии и защиты данных. Методы защиты информации. Виды информационной безопасности и умышленные угрозы. Программирование на языке Turbo Pascal. Типы числовых данных. Функции ввода и вывода. Логические операторы, символьные переменные.
курсовая работа [1,7 M], добавлен 16.05.2016Анализ методов определения минимального и максимального значения функции многих переменных без ограничений. Нахождение экстремума функции при наличии ограничений. Синтез оптимальной по быстродействию системы с помощью принципа максимума Понтрягина.
курсовая работа [2,1 M], добавлен 10.04.2011Написание программы, исходя из конкретных данных. Создание двунаправленного линейного списка. Main - главная программа, содержащая меню. Занесение данных в память списка. Результирующий файл. Значения всех числовых данных из диапазона целого типа данных.
курсовая работа [2,3 M], добавлен 22.12.2010Определение понятия подпрограммы и функции. Примеры стековых кадров. Параметры и возвращаемое значение функции. Переменное число принимаемых параметров. Время жизни и область видимости переменных. Ограничения на функции с переменным числом параметров.
презентация [83,4 K], добавлен 19.10.2014Программирование как процесс составления и подготовки деятельности программы, которое при выполнении должно привести к определенным результатам. Знакомство с регистрами общего значения. Рассмотрение основных способов передачи параметров через стек.
отчет по практике [2,9 M], добавлен 01.12.2015Создание программы для вычисления значения функции на основе определённой формулы. Уточнение структуры входных и выходных данных и определение ассемблерного формата их представления. Разработка алгоритмов для реализации работы программного обеспечения.
курсовая работа [240,6 K], добавлен 17.06.2013Создание программы, вычисляющей значение функции, заданной таблично при помощи интерполяционного полинома Лагранжа на языке Pascal с комментариями. Диалоговое взаимодействие пользователя с программой, модули для ввода и вывода данных и основных действий.
курсовая работа [49,2 K], добавлен 02.11.2011