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

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


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

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

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

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

Презентация на тему Объединения. Хранение разнотипных данных в одной области памяти. (Лекция 6)

Содержание

Размер объединения - это размер его максимального элемента. В каждый момент времени может быть сохранен только один из элементов объединения.union MyUnion{char k[4];unsigned int m;}mk[0]k[1]k[2]k[4]
ОбъединенияХранение разнотипных данных в одной области памяти.Синтаксис:union [имя] { тип поле1; тип поле2; …} Размер объединения - это размер его максимального элемента. В каждый момент времени ПеречисленияТип для работы с целыми константами,. Синтаксис: enum [ имя] { Имя1, Определено перечисление с именем numberОпределены три целых константы one, two, threeИм присвоены number k = one;int i =two;k = i ;    k = number(i);i =   Значения элементов перечисления можно задавать и явно: enum number { 	one=1, ФункцииСинтаксисОписание[тип возвращаемого значения] Имя_Функции 			( [тип Аргумент1, 			 тип Аргумент2, …] ){ Описание функции может быть выполнено до функции main :int Max3(int x, int Вызов функцииint Max3(int x, int y, int z){ …}int main(…) {int k,l;… int Max3(int x, int y, int z) { int max = x; if (max int Max3(int x, int y, int z) { int max = x; if (max Глобальные и локальные переменныеПеременные, описанные внутри блока программы, ограниченного открывающейся и закрывающейся int z = 1;int MyFunc(int x){int k=7;if (x>0) x++;z++;return x;}int main(){int k Параметры функцииПараметры функции перечисляются в круглых скобках после имени функции: int function1 Функция может не иметь параметров:int function4 ()При вызове функции формальные параметры заменяются Передача одномерного массива параметром:// Функция печати массиваvoid Show( int *x, int n, // Функция создания массиваint *Create( int *x, int n){ x = (int*)malloc(sizeof(int)*n); for(int i=0;i // Функция изменения массива – замена всех // положительных элементов их индексамиint // Вызов функции печатиShow( mas,20, // Вызов функции печати Show(mas,20, Передача матрицы параметром// Вычисление суммы элементов строки с // номером num матрицы int main() {int n,m;printf(“ Вводите количество строк: { matr[i][j] = rand()%20;  printf(0&&k0&&k"> else printf(=0;i--) delete [] matr[i];delete [] matr;}"> Возвращаемое значениеТип возвращаемого значения указывается перед именем функции[тип ] имя функции (…)Возвращаемое Если функция не содержит оператора return, ее выполнение заканчивается при достижении закрывающей Тип возвращаемого значения должен совпадать с типом значения, возвращаемого return:int func1(float x, По умолчанию тип возвращаемого значения – int:func1(float x, float y) {if (x==y) Параметры по ссылкеЕсли возникла ситуация, при которой необходимо вернуть из функции более, #include #include void swap(int* x, int* y){ int temp = *x; *x=*y; Дан массив из n элементов. Удалить из массива все отрицательные элементы.#include #include int kol = 0; for (int i=0;i int n;printf( Параметры по умолчаниюВ функциях Си разрешено использовать параметры по умолчанию. #include #include if (x[i][j]>0)   { if (!flag) ch++;}  else if (flag printf( printf( Указатель на функциюКак на любой объект программы можно объявить указатель на функциюСинтаксис:[тип Написать функцию Си, выводящую на экран таблицу значений заданной математической функции на float f3( float x) { return 1/x+3*x; }void table( float (*f)(float), float int main(…) {float (*f)(float);f=&f1;printf(
Слайды презентации

Слайд 2 Размер объединения - это размер его максимального элемента.

Размер объединения - это размер его максимального элемента. В каждый момент


В каждый момент времени может быть сохранен только один

из элементов объединения.

union MyUnion{
char k[4];
unsigned int m;}






m

k[0]

k[1]



k[2]

k[4]


Слайд 3 Перечисления
Тип для работы с целыми константами,.
Синтаксис:
enum

ПеречисленияТип для работы с целыми константами,. Синтаксис: enum [ имя] {

[ имя] { Имя1, Имя2, … };
enum number {

one, two, three };

Слайд 4 Определено перечисление с именем number
Определены три целых константы

Определено перечисление с именем numberОпределены три целых константы one, two, threeИм

one, two, three
Им присвоены значения по умолчанию        const one

= 0;        const two = 1;        const three = 2;

enum number { one, two, three };

Элементы перечисления



Слайд 5 number k = one;
int i =two;
k = i ;   

number k = one;int i =two;k = i ;    k = number(i);i


k = number(i);
i = k;
k = 4; 

number key;

switch(key){
case

one: …; break;
case two: …; break;
case three: …;
}

Слайд 6   Значения элементов перечисления можно задавать и явно:

  Значения элементов перечисления можно задавать и явно: enum number {


enum number { one=1,
two=2,
three=3 };
 Задаваемые значения необязательно

должны быть
различными,
положительными,
идти в возрастающем порядке.

Слайд 7 Функции
Синтаксис
Описание
[тип возвращаемого значения] Имя_Функции
( [тип Аргумент1,

ФункцииСинтаксисОписание[тип возвращаемого значения] Имя_Функции 			( [тип Аргумент1, 			 тип Аргумент2, …] ){ операторы; [return Возвращаемое_значение];}

тип Аргумент2, …] )
{
операторы;
[return Возвращаемое_значение];
}


Слайд 8 Описание функции может быть выполнено до функции main

Описание функции может быть выполнено до функции main :int Max3(int x,

:
int Max3(int x, int y, int z)
{ …}
int main(…)

{
… }

либо после функции main :

int Max3(int , int , int );
int main(…) {
… }
int Max3(int x, int y, int z)
{ …}


Слайд 9 Вызов функции
int Max3(int x, int y, int z)
{

Вызов функцииint Max3(int x, int y, int z){ …}int main(…) {int

…}
int main(…) {
int k,l;

int f=5; z=4; m=15;
k =

Max3(f,z,m);

l=Max3(4,11,3);
}

Формальные
аргументы
(параметры)

Формальные
аргументы
(параметры)

Замена формальных
аргументов


Слайд 10 int Max3(int x, int y, int z) {

int Max3(int x, int y, int z) { int max = x; if (max

int max = x;
if (max

max=z;
return max; }
int main() {
int k, l, f = 5, z=4, m=15;
k=Max3(f,z,m);
l=Max3(4,11,3);
printf ("\nk=%4d, l=%4d",k,l);
}

x=f
y=z
z=m

x=4
y=11
z=3


Слайд 11
int Max3(int x, int y, int z) {

int Max3(int x, int y, int z) { int max = x; if (max

int max = x;
if (max

max=z;
return max; }

int main(…) {
int k, l, f = 5, z=4, m=15;
k=Max3(f,z,m);
l=Max3(4,11,3);
printf ("\nk=%4d, l=%4d",k,l);

}

Функции и программный стек


Слайд 12 Глобальные и локальные переменные
Переменные, описанные внутри блока программы,

Глобальные и локальные переменныеПеременные, описанные внутри блока программы, ограниченного открывающейся и

ограниченного открывающейся и закрывающейся фигурными скобками называются локальными переменными
float

MyFunc(int x)
{ float z = x;
return z*z;
}

Слайд 13 int z = 1;
int MyFunc(int x){
int k=7;
if (x>0)

int z = 1;int MyFunc(int x){int k=7;if (x>0) x++;z++;return x;}int main(){int

x++;
z++;
return x;
}
int main()
{
int k = 4;
z++;
int x

= 8;
k=MyFunc(k);
x++;
printf("%d %d %d...\n",x,z,k);
return 0;
}

z=1

k=4

z=2

x=8

k=7

x=4

x=5

z=3

k=5

x=9

9 3 5…


Слайд 14 Параметры функции
Параметры функции перечисляются в круглых скобках после

Параметры функцииПараметры функции перечисляются в круглых скобках после имени функции: int

имени функции:
int function1 (int k, int f)
float function2

(float z)
int function3 (char m)
void function (char *s)

Слайд 15 Функция может не иметь параметров:
int function4 ()
При вызове

Функция может не иметь параметров:int function4 ()При вызове функции формальные параметры

функции формальные параметры заменяются указанными значениями (фактическими параметрами):
int

m = 0, m1 = 1; …
int p = function1 (m, m1);

float z = sin(M_PI); …
float f = function2 (z);


int p = function3 (‘f’);

char d[20] = “Пример строки” ;…
function (d);


int f = function4 ();


Слайд 16 Передача одномерного массива параметром:
// Функция печати массива
void Show(

Передача одномерного массива параметром:// Функция печати массиваvoid Show( int *x, int

int *x, int n, char* t) {
printf("\n%s\n",t);
for(int

i=0;i printf("%4d",x[i]);
}

Слайд 17
// Функция создания массива
int *Create( int *x, int

// Функция создания массиваint *Create( int *x, int n){ x = (int*)malloc(sizeof(int)*n); for(int i=0;i

n){
x = (int*)malloc(sizeof(int)*n);
for(int i=0;i

return x;
}
// Функция поиска количества элементов
// массива равных 0
int Zero (int *x, int n)
{ int z = 0;
for(int i=0;i if(x[i]==0) z++;
return z; }

Слайд 18 // Функция изменения массива – замена всех
//

// Функция изменения массива – замена всех // положительных элементов их

положительных элементов их индексами
int * Change( int *x, int

n) {
for(int i=0;i if (x[i]>0) x[i]=i;
return x;
}
int main () {
srand(time(NULL));
int *mas, *mas1;
mas = Create(mas,20);
mas1 = Create(mas1,25);


Слайд 19 // Вызов функции печати
Show( mas,20," Первый массив:"

// Вызов функции печатиShow( mas,20,

);
// Вызов функции подсчета нулей
printf("\nКоличество нулей - %d",

Zero(mas,20) );
// Вызов функции печати
Show( mas1,25," Второй массив:" );
// Вызов функции подсчета нулей
printf("\n Количество нулей - %d",Zero(mas1,25) );
// Вызов функции изменения массива
mas = Change( mas,20 );
// Вызов функции изменения массива
mas1 = Change( mas1,25 );

Слайд 20 // Вызов функции печати
Show(mas,20,"Первый массив после изменения:");
//

// Вызов функции печати Show(mas,20,

Вызов функции печати
Show(mas1,25,"Второй массив после изменения" );
free(mas);
free(mas1);
return 0;
}


Слайд 21 Передача матрицы параметром
// Вычисление суммы элементов строки с

Передача матрицы параметром// Вычисление суммы элементов строки с // номером num


// номером num матрицы x
int Sum( int **x, int

m, int num ) {
int sum = 0;
for (int i=0;isum+=x[num][i];
return sum;
}

Слайд 22 int main() {
int n,m;
printf(“ Вводите количество строк: ");
scanf("%d",&n);
printf("

int main() {int n,m;printf(“ Вводите количество строк:

Вводите количество столбцов: ");
scanf("%d",&m);
int **matr = new int*[n];
for (int

i=0;i matr[i]=new int[m];
for(i=0;i for(int j=0;j

Слайд 23 { matr[i][j] = rand()%20;
printf("%3d",matr[i][j]); }
printf("\n");
}
printf("

Вводите номера строк:");
int k,l;
scanf("%d%d",&k,&l);
if (k>0&&k0&&k

в %d строке %d\n",k,Sum(matr,m,k));
printf(«Сумма в %d строке %d\n",l,Sum(matr,m,l));
}



Слайд 24 else printf(" Ошибка ввода данных");
for(i=n-1;i>=0;i--)
delete [] matr[i];
delete

[] matr;
}


Слайд 25 Возвращаемое значение
Тип возвращаемого значения указывается перед именем функции
[тип

Возвращаемое значениеТип возвращаемого значения указывается перед именем функции[тип ] имя функции

] имя функции (…)
Возвращаемое значение передается в основную программу

оператором return:

return [возвращаемое значение]

Оператор return всегда заканчивает выполнение функции


Слайд 26 Если функция не содержит оператора return, ее выполнение

Если функция не содержит оператора return, ее выполнение заканчивается при достижении

заканчивается при достижении закрывающей фигурной скобки:
void func1(int x) {
int

k = 8;
return;
x++; }

void func2(int *x, int n) {
for(int i=0;i printf(“%3d”, x[i])
}

Невыполнимый код

Конец выполнения функции


Слайд 27 Тип возвращаемого значения должен совпадать с типом значения,

Тип возвращаемого значения должен совпадать с типом значения, возвращаемого return:int func1(float

возвращаемого return:
int func1(float x, float y) {
if (x==y) return

0;
else if (x else return 1.;
}

Ошибка!!!


Слайд 28 По умолчанию тип возвращаемого значения – int:
func1(float x,

По умолчанию тип возвращаемого значения – int:func1(float x, float y) {if

float y) {
if (x==y) return 0;
else if (x

return -1;
else return 1;
}

Функция всегда возвращает не более одного значения.


Слайд 29 Параметры по ссылке
Если возникла ситуация, при которой необходимо

Параметры по ссылкеЕсли возникла ситуация, при которой необходимо вернуть из функции

вернуть из функции более, чем одно значение используются параметры

по ссылке.

При передаче в функцию адреса переменной изменения значений такой переменной производится непосредственно в программном стеке.


Слайд 30 #include
#include
void swap(int* x, int* y)
{ int

#include #include void swap(int* x, int* y){ int temp = *x;

temp = *x;
*x=*y;
*y=temp; }
void main() {
int n=7,m=8;
swap(

&n,&m);
printf(“%d %d”, n,m);
}



Область описания переменных

Стек

n=7

m=8

x=&n

y=&m

temp=7

n=8

m=7

8 7


Слайд 31 Дан массив из n элементов. Удалить из массива

Дан массив из n элементов. Удалить из массива все отрицательные элементы.#include

все отрицательные элементы.
#include
#include
#include
void show( int *x,

int n) {
for (int i=0;i printf("%4d",x[i]);
printf("\n");
}
int *Delete( int *x, int*n) {

Слайд 32 int kol = 0;
for (int i=0;i

int kol = 0; for (int i=0;i

if (x[i]

j;
for (i=0,j=0;i<*n;i++)
if (x[i]>=0) {x1[j]=x[i]; j++;}
delete [] x;
*n-=kol;
return x1;
}
int main() {
clrscr();

Слайд 33 int n;
printf(" Введите количество элементов: ");
scanf("%d",&n);
int *mas =

int n;printf(

new int[n];
for (int i=0;i

Delete(mas,&n);
show(mas,n);

}



Слайд 34 Параметры по умолчанию
В функциях Си разрешено использовать параметры

Параметры по умолчаниюВ функциях Си разрешено использовать параметры по умолчанию. #include

по умолчанию.
#include
#include
#include
int PN( int** x,

int n, int m, int flag = 0) {
int ch = 0;
for(int i=0;i for(int j=0;j

Написать функцию, которая считает количество отрицательных (или положительных) элементов матрицы.


Слайд 35 if (x[i][j]>0)
{ if (!flag) ch++;}

if (x[i][j]>0)  { if (!flag) ch++;} else if (flag &&

else if (flag && x[i][j]) ch++;
return ch;
}
int

main(…) {
int n,m;
printf(" Введите количество строк: ");
scanf("%d",&n);
int **matr = new int*[n];

Слайд 36 printf(" Введите количество столбцов: ");
scanf("%d",&m);
for (int i=0;i

printf(

matr[i] = new int[m];
for(i=0;i

= rand()%20-rand()%20;
printf("%4d",matr[i][j]);
}
printf("\n");
}

Слайд 37 printf(" Отрицательных - %d\n", PN(matr,n,m,1));
printf(" Положительных - %d\n",

printf(

PN(matr,n,m));
}


Слайд 38 Указатель на функцию
Как на любой объект программы можно

Указатель на функциюКак на любой объект программы можно объявить указатель на

объявить указатель на функцию
Синтаксис:
[тип возвращаемого значения] (* имя)
( перечисление

типов параметров функции )

Слайд 39 Написать функцию Си, выводящую на экран таблицу значений

Написать функцию Си, выводящую на экран таблицу значений заданной математической функции

заданной математической функции на заданном интервале с заданным шагом.


#include
#include
#include
float f1( float x)
{return sin(x)+x*x; }
float f2( float x)
{ return 2*x*x-3*x-10;}


Слайд 40 float f3( float x)
{ return 1/x+3*x; }
void

float f3( float x) { return 1/x+3*x; }void table( float (*f)(float),

table( float (*f)(float), float a, float b, int i)

{
float step = (b-a)/(i-1);
printf("***************************************\n");
printf("* x * f(x) *\n");
printf("***************************************\n");
float x = a;
for(int k=0;k { printf("* %-16.4f* %-18.4f*\n",x,f(x));
x+=step; }
printf("***************************************\n");
}

  • Имя файла: obedineniya-hranenie-raznotipnyh-dannyh-v-odnoy-oblasti-pamyati-lektsiya-6.pptx
  • Количество просмотров: 160
  • Количество скачиваний: 1