Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Язык С++

using namespace System;void main() // можно и оставить int ! { Console::WriteLine(" Hello World !"); Console::ReadLine(); } Файл -> Создать проект -> Установленные -> Visual C++ -> Консольное
Язык С++  - это компилируемый,  статически (или строго)   типизированный  using namespace System;void  main() // можно и оставить int ! using namespace System;class A {   public: void helloworld() using namespace System;class B { Встроенные типы данныхЦелочисленные:bool  - 1 байт;char 	- 1 байт;unsigned char 	- using namespace System;	    void main ( ) 	{ Подробнее об указателяхУказатели – это переменные, предназначенные для размещения адресов областей памяти.Указатели Операции с указателямиразъадресации   * имя  (доступ к значению по Выделенная указателю память (с помощью new или new [ ])  должна using namespace System; void main() { int m [4] [6] = { Составные описателиСоставными описателями называют идентификаторы (имена), дополненные более чем одним признаком : using namespace System;int main() { int *p ; 		//значение - нуль Контрольная работа: нулевой билетЗадание: установите содержимое консольного окна в результате выполнения программы Тема коллоквиума обработка  целочисленных объектов с помощью указателейВарианты типов (задачи): unsigned using namespace System;int main() {unsigned char m1[10] = { 2, 1, 3, using namespace System;int main() {unsigned short m2[10] = {1,2,3,4,6,7,8,9,10};unsigned char *p2 = Коллоквиум: нулевой билет В с ё  !
Слайды презентации

Слайд 2 using namespace System;
void main() // можно и

оставить int !
{
Console::WriteLine(" Hello

World !");
Console::ReadLine();
}

Файл -> Создать проект -> Установленные -> Visual C++ -> Консольное приложение Windows

При этом (в VS2017):
в свойствах проекта должна быть выбрана опция «поддержка clr-среды»(проект-свойства-общие),
отменена прекомпиляция заголовочных файлов (проект-свойства - С/С++ - Предварительно откомпилированные заголовки),
можно также из проекта удалить неиспользуемые *.h и *.cpp файлы.

#include "stdafx.h“
int main()
{
return 0;
}




Cоздание проекта в Visual Studio:


Слайд 3 using namespace System;
class A
{
public:

void helloworld()
{

Console::WriteLine(" Hello World-2 !");
}
};
void main()
{
A a;
a.helloworld ( );
A *pa = &a;
pa -> helloworld ( );
}

Ещё одна «Первая программа»


Слайд 4 using namespace System;
class B {

using namespace System;class B {     public: void

public: void helloworld();

};
void B::helloworld() { Console::WriteLine("B: Hello World-3 !"); }
class A {
public: void helloworld()
{ Console::WriteLine("A: Hello World-3 !"); }
};
int main()
{
A a;
B b;
a.helloworld();
b.helloworld();
return 0;
}

«Первая программа», версия 3


Слайд 5 Встроенные типы данных
Целочисленные:
bool - 1 байт;
char -

Встроенные типы данныхЦелочисленные:bool - 1 байт;char 	- 1 байт;unsigned char 	-

1 байт;
unsigned char - 1 байт;
short - 2 байта;
unsigned

short - 2 байта;
int - 4 байта;
unsigned int - 4 байта;
long - 4 байта;
unsigned long - 4 байта;
С плавающей точкой:
float - 4 байта;
double - 8 байт;
long double – вещественный размером 10 байт;
Специальные:
__int8 – целый размером 1 байт;
__int16 целый размером 2 байта;

using namespace System;
int main()
{ bool b ;
long double ld;
__int8 i8;
__int16 i16;
Console::WriteLine("bool= {0}", sizeof b);
Console::WriteLine("long double = {0}", sizeof ld);
Console::WriteLine("__int8 = {0} = {1}", sizeof i8, sizeof(__int8) );
Console::WriteLine("__int16 = {0} = {1}", sizeof i16, sizeof(__int16));
}


sizeof – операция получения размера объекта или типа, измеренных в байтах


Слайд 6 using namespace System;

void main

using namespace System;	  void main ( ) 	{

( )
{ int

i = 1, j = 2, k=3;
switch( i + j + ++k)
{
case 5: Console::WriteLine ("case 5 "); break;
case 6: Console::WriteLine ("case 6 "); break;
case 7: Console::WriteLine ("case 7 ");
case 8: Console::WriteLine ("case 8 ");
default: Console::WriteLine ("default ");
}
Console::WriteLine(" после switch сумма = {0} ", i+j+k );
}

Особенности switch


Слайд 7 Подробнее об указателях
Указатели – это переменные, предназначенные для

Подробнее об указателяхУказатели – это переменные, предназначенные для размещения адресов областей

размещения адресов областей памяти.

Указатели бывают трёх видов: на

объект, на функцию, и на void.

Указатель не является самостоятельным типом, он всегда определяется типом объекта (или функции), адрес которого будет содержать.

Указатель на функцию предназначен для вызова соответствующего типа функции (во многом аналогичен событию на С#).

Указатель на объект и указатель на void предназначены для работы с объектами данных.

Указатель на void применяется в случае, когда конкретный тип не определён. Ему можно присвоить значение указателя любого типа, но перед его использованием в большинстве случаев требуется явное приведение типа.

В дальнейшем речь пойдет об указателях на объект и на void .

Слайд 8 Операции с указателями
разъадресации * имя

Операции с указателямиразъадресации  * имя (доступ к значению по адресу,

(доступ к значению по адресу, размещённому в указателе);
явное приведение

к типу указателя (* имя );
сложения ( с переменными, константами, с другими указателями);
сравнения ( с другим указателем);

Указатель на объект объявляется с помощью конструкции
Тип *имя ;
и может быть проинициализирован одним из следующих вариантов:
операцией получения адреса: имя = &ИмяОбъекта;
с помощью другого указателя: имя = ДругойУказатель;
с помощью имени массива: имя = ИмяМассива;
адресом памяти: имя = (Тип*) 0xШестнадцатеричнаяКонстанта;
нуль-адресом или просто нулём: имя = NULL ; //или имя = 0;
с помощью операции new: имя = new Тип; – для размещения одного объекта;
с помощью операции new: имя = new Тип[N]; – для размещения N объектов;

Объявление и инициализация указателей


Слайд 9 Выделенная указателю память (с помощью new или new

Выделенная указателю память (с помощью new или new [ ]) должна

[ ]) должна быть в обязательном порядке освобождена

(с помощью delete или delete[ ] )
Исключение из этого правила составляют
локальные указатели в функции main.

Указатель и одномерный массив

using namespace System;
void main()
{ int *p = new int ( 2 ); // выделение памяти с инициализацией
Console::WriteLine( "{0}", *p );
if (p == 0 ) return;
*p = 100/33;
Console::WriteLine( "{0}", *p );
delete p;
int m [ 10 ] = { 2, 3, 4, 5, 6, 7, 10, 12 }; // остальные – нули
int *pm = m;
*pm = 10;
pm++;
*(pm+1) = 11;
pm+=2;
*(pm+1) = 20;
*(pm+2) += *pm--;
Console::WriteLine("{0} {1} {2} {3} {4}",
*pm, *(pm + 1), *(pm + 4), *(pm + 5), *(pm + 1) + *pm );
}


Слайд 10 using namespace System;
void main()
{ int

using namespace System; void main() { int m [4] [6] =

m [4] [6] = {
{2,3,4,5,6,7},

{1,3,5,7,9,1},
{7,6,5,4,3,2},
{1,2,6,7,8,9}, };
int *pm = (int*) m;
int (*pmm) [6] = m; //указатель pmm на массив из шести int-ов
//значение указателя - целое число:
Console::WriteLine("№1 \tpm ={0:x}\t\tpmm ={1:x}\n\tsizeof(pm)={2} байта\tsizeof(pmm)={3} байта", (int)pm, (int)pmm, sizeof(pm),sizeof(pmm));
//указатели можно складывать с константами:
Console::WriteLine("№2 {0} {1} {2} {3}", *pm , *(pm+1) ,*(int*) pmm , *(int*) ( pmm+1) );
pm++;
pmm++; //практически, то же самое, что и в №2, но после сдвига указателей:
Console::WriteLine("№3 {0} {1} {2} {3}", *pm , *(pm+1) ,*(int*)pmm , *(int*)(pmm+1));
int s;
Console::WriteLine("№4 s = {0}", s ); //в стандарте языка авто переменные не обнуляются
s= *(++pm); //указатели можно сравнивать:
while ( pm < (int*) pmm ) s += *pm++;
Console::WriteLine("№5 s = {0}", s ); // 26, потому что элемент m[0][2] суммируется дважды
pm = &m[3][4];
pmm = ( int (*)[6] ) pm; //также допустима операция вычитания:
Console::WriteLine("№6 {0} {1} {2} {3}", *(pm-1) , *(int*)pmm ,*(int*)(pmm-1) , *(int*)(pmm-2));
}

Указатель и матрица


Слайд 11 Составные описатели
Составными описателями называют идентификаторы (имена), дополненные более

Составные описателиСоставными описателями называют идентификаторы (имена), дополненные более чем одним признаком

чем одним признаком :
[ ] - массив,
(

) - функция или изменение очередности,
* - указатель.

Правило интерпретации:
Рассматриваются квадратные и круглые скобки (одинаковый приоритет) справа от имени в направлении слева направо (-->);

Затем в направлении справа налево (<--) рассматриваются звёздочки, расположенные слева от имени;

Для изменения данного порядка могут быть использованы круглые скобки.

Примеры:
int *p [10] ; - массив p указателей на значения типа int

int (*pp) [10] ; - указатель pp на массив из 10 значений типа int


Слайд 12 using namespace System;
int main()
{
int *p ;

using namespace System;int main() { int *p ; 		//значение - нуль

//значение - нуль
Console::WriteLine ("{0} ", *p );

}// исключение NullReference

Типичные ошибки с указателями

using namespace System;
int main()
{ int *p = new int;
*p=1;
Console::WriteLine("{0}", *p);
p = new int; // потерян адрес, где был выделен первый фрагмент
*p= 2 ;
Console::WriteLine("{0}", *p);
delete p; } //«висячая ссылка», система становится потенциально неусточивой

using namespace System;
int main()
{
int m[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int *p = m;
Console::WriteLine("{0}", *p);
p += 10;
Console::WriteLine("{0}", *p);
p[0] = 100;
Console::WriteLine("{0}", *p);
} // исключение NullReference

using namespace System;
int main()
{
int *p;
*p = 1;
Console::WriteLine ("{0} ", *p );
delete p;
} //освобождение не выделенной памяти



Слайд 13 Контрольная работа: нулевой билет
Задание: установите содержимое консольного окна

Контрольная работа: нулевой билетЗадание: установите содержимое консольного окна в результате выполнения

в результате выполнения программы на языке С++, приведите решение

в виде схем объектов:

using namespace System;
void main()
{ int m[3][4] = { {1,2,3,4},
{5,6,7,8},
{9,9,9,9} } ;
int *p1 = (int*)m;
int (*p2) [4] = m;
int s = *( ++p1 );
while ( p1 < (int*) &m[1][0] )
s += *(p1++) + *(int*) (p2++) ;

Console::WriteLine("{0} {1} {2} {3}", *p1, *(p1-1) , *(int*) (p2-1) , s);
}

Слайд 14 Тема коллоквиума
обработка целочисленных объектов с помощью

Тема коллоквиума обработка целочисленных объектов с помощью указателейВарианты типов (задачи): unsigned

указателей
Варианты типов (задачи):

unsigned char - 1 байт;
unsigned short

- 2 байта;
unsigned int - 4 байта;

Правило intel:
старший байт размещается по большему адресу


Слайд 15 using namespace System;
int main()
{
unsigned char m1[10] =

using namespace System;int main() {unsigned char m1[10] = { 2, 1,

{ 2, 1, 3, 2, 4, 1, 5, 2,

3, 1 };
unsigned short *p1 = (unsigned short*) m1;
Console::WriteLine ( "Первый пример:" );
Console::WriteLine ( "{0} {1} {2} {3}", m1[0], m1[1], m1[2], m1[3]);
Console::WriteLine ( "{0} {1} {2} {3}", *p1, *(p1+1), *(p1+2) , *(p1+3));
}

Пример 1


Слайд 16 using namespace System;
int main()
{
unsigned short m2[10] =

using namespace System;int main() {unsigned short m2[10] = {1,2,3,4,6,7,8,9,10};unsigned char *p2

{1,2,3,4,6,7,8,9,10};
unsigned char *p2 = (unsigned char*) m2;
Console::WriteLine("\n\n\nВторой пример:");
Console::WriteLine("{0} {1}

{2} {3}", m2[0], m2[1], m2[2], m2[3]);
Console::WriteLine("{0} {1} {2} {3}", *p2, *(p2+1), *(p2+2) , *(p2+3));
}

Пример 2


Слайд 17 Коллоквиум: нулевой билет

Коллоквиум: нулевой билет

  • Имя файла: yazyk-s.pptx
  • Количество просмотров: 145
  • Количество скачиваний: 0