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

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


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

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

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

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

Презентация на тему Управляющие операторы. Структуры данных языка С

Содержание

©Павловская Т.А. (СПбГУ ИТМО)Базовые конструкции структурного программирования
©Павловская Т.А. Язык С++Лекция 3. Управляющие операторы. Структуры данных языка С Рассматриваются ©Павловская Т.А. (СПбГУ ИТМО)Базовые конструкции структурного программирования ©Павловская Т.А. (СПбГУ ИТМО)if ( выражение ) оператор_1; [else оператор_2;]if (a ©Павловская Т.А. (СПбГУ ИТМО)switch ( выражение ){	case константное_выражение_1: 						[список_операторов_1]	case константное_выражение_2: 						[список_операторов_2]	...	case константное_выражение_n: 						[список_операторов_n]	[default: операторы ]}Оператор switch ©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	int a, b, res;	char op;	bool f = ©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	float Xn, Xk, Dx;	printf( ©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	char answer;	do{		cout > answer;	}while (answer != 'y');}do ©Павловская Т.А. (СПбГУ ИТМО)#include #include int main(){	double X, Eps;		double Yp, Y = ©Павловская Т.А. (СПбГУ ИТМО)#include int main(){  int num;  cout > ©Павловская Т.А. (СПбГУ ИТМО)оператор безусловного перехода goto;оператор выхода из цикла break;оператор перехода ©Павловская Т.А. (СПбГУ ИТМО)#include #include int main(){	const int MaxIter = 500;	double x, ©Павловская Т.А. (СПбГУ ИТМО)Унарная операция получения адреса & применима к величинам, имеющим ©Павловская Т.А. (СПбГУ ИТМО)Массивы#include int main(){	const int n = 10;	int marks[n] = ©Павловская Т.А. (СПбГУ ИТМО)float p[10]; *u[20];int a[5] = {1, 2, 3};int b[] ©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	const int n = 20;		int b[n]; 	int ©Павловская Т.А. (СПбГУ ИТМО)delete [] p; free (q);float *p = new float ©Павловская Т.А. (СПбГУ ИТМО)int matr [6][8];Многомерные массивы matr[i][j]*(matr[i]+j)*(*(matr+i)+j)int mass2 [][2]={ {1, 1}, ©Павловская Т.А. (СПбГУ ИТМО)int nstr, nstb;cout > nstr >> nstb;int **a = ©Павловская Т.А. (СПбГУ ИТМО)Строкиchar str[10] = ©Павловская Т.А. (СПбГУ ИТМО)#include #include int main(){	char s[5], passw[] = ©Павловская Т.А. (СПбГУ ИТМО)char src[10], dest[10];for (int i = 0; i ©Павловская Т.А. (СПбГУ ИТМО)Типы данных, определяемые пользователемenumstructunionПереименование типов (typedef)typedef тип новое_имя [ ©Павловская Т.А. (СПбГУ ИТМО)Перечисления ( enum )enum [ имя_типа ] { список_констант ©Павловская Т.А. (СПбГУ ИТМО)Структуры ( struct )struct [ имя_типа ] {тип_1 элемент_1;тип_2 ©Павловская Т.А. (СПбГУ ИТМО)struct{			char fio[30];	int date, code;	float salary;}worker = { ©Павловская Т.А. (СПбГУ ИТМО)Доступ к полям структуры Worker worker, staff[100], *ps;worker.fio = ©Павловская Т.А. (СПбГУ ИТМО)struct Options {	bool centerX:1;	bool centerY:1;	unsigned int shadow:2;	unsigned int palette:4;};union ©Павловская Т.А. (СПбГУ ИТМО)Ограничения объединений объединение может инициализироваться только значением его первого
Слайды презентации

Слайд 2 ©Павловская Т.А. (СПбГУ ИТМО)
Базовые конструкции структурного программирования

©Павловская Т.А. (СПбГУ ИТМО)Базовые конструкции структурного программирования

Слайд 3 ©Павловская Т.А. (СПбГУ ИТМО)
if ( выражение ) оператор_1;

©Павловская Т.А. (СПбГУ ИТМО)if ( выражение ) оператор_1; [else оператор_2;]if (a

[else оператор_2;]
if (a

(a>d || a==0)) b++;
else {b* = a; a = 0;} // 2
if (a if (a else m = c;}
else {if (b else m = c;} // 3
if (a++) b++; // 4
if (b>a) max = b;
else max = a; // max = (b > a) ? b : a;

if (int i = fun(t)) a –= i; else a += i;

Условный оператор


Слайд 4 ©Павловская Т.А. (СПбГУ ИТМО)
switch ( выражение ){
case константное_выражение_1:

©Павловская Т.А. (СПбГУ ИТМО)switch ( выражение ){	case константное_выражение_1: 						[список_операторов_1]	case константное_выражение_2: 						[список_операторов_2]	...	case константное_выражение_n: 						[список_операторов_n]	[default: операторы ]}Оператор switch

[список_операторов_1]
case константное_выражение_2: [список_операторов_2]
...
case константное_выражение_n: [список_операторов_n]
[default: операторы ]
}

Оператор switch


Слайд 5 ©Павловская Т.А. (СПбГУ ИТМО)
#include
int main(){
int a, b,

©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	int a, b, res;	char op;	bool f

res; char op; bool f = true;
cout

: "; cin >> a;
cout << "\nВведите знак операции : "; cin >> op;
cout << "\nВведите 2й операнд : "; cin >> b;
switch (op){
case '+': res = a + b; break;
case '-': res = a - b; break;
case '*': res = a * b; break;
case '/': res = a / b; break;
default : cout <<"\nНеизвестная операция"; f = false;
}
if (f) cout << "\nРезультат : " << res;
}


Пример оператора switch


Слайд 6 ©Павловская Т.А. (СПбГУ ИТМО)
#include
int main(){
float Xn, Xk,

©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	float Xn, Xk, Dx;	printf(

Dx;
printf("Введите диапазон и шаг изм-я аргумента: ");
scanf("%f%f%f", &Xn, &Xk,

&Dx);
printf("| X | Y |\n");
float X = Xn;
while (X <= Xk){
printf("| %5.2f | %5.2f |\n", X, X*X + 1); X += Dx;
}
}

while (int x = 0) { /* область действия х */ }

while ( выражение ) оператор

Оператор цикла while


Слайд 7 ©Павловская Т.А. (СПбГУ ИТМО)
#include
int main(){
char answer;
do{
cout

©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	char answer;	do{		cout > answer;	}while (answer !=

"\nКупи слоника! ";
cin >> answer;
}while (answer != 'y');
}

do

оператор while выражение;

Оператор цикла do while


Слайд 8 ©Павловская Т.А. (СПбГУ ИТМО)
#include
#include
int main(){
double X,

Eps;
double Yp, Y = 1;
printf("Введите аргумент и точность: ");
scanf("%lf%lf",

&X, &Eps);
do{
Yp = Y;
Y = (Yp + X/Yp)/2;
}while (fabs(Y – Yp) >= Eps);
printf("\n %lf %lf", X, Y);
}

yn = ½ (yn-1 + x/yn-1)

Пример 6 - вычисление квадратного корня


Слайд 9 ©Павловская Т.А. (СПбГУ ИТМО)
#include
int main(){
int

©Павловская Т.А. (СПбГУ ИТМО)#include int main(){ int num; cout > num;

num;
cout

>> num;
for (int half = num / 2, div = 2; div <= half; div++) if (!(num % div))cout << div <<"\n";
}

for (int i = 1, s = 0; i<=100; i++) s += i;

for ( инициализация; выражение; модификации) оператор;

Оператор цикла for


Слайд 10 ©Павловская Т.А. (СПбГУ ИТМО)
оператор безусловного перехода goto;
оператор выхода

©Павловская Т.А. (СПбГУ ИТМО)оператор безусловного перехода goto;оператор выхода из цикла break;оператор

из цикла break;
оператор перехода к следующей итерации цикла continue;
оператор

возврата из функции return.

Операторы передачи управления


Слайд 11 ©Павловская Т.А. (СПбГУ ИТМО)
#include
#include
int main(){
const int

©Павловская Т.А. (СПбГУ ИТМО)#include #include int main(){	const int MaxIter = 500;	double

MaxIter = 500;
double x, eps;
cout

точность: ";
cin >> x >> eps;
bool ok = true;
double y = x, ch = x;
for (int n = 0; fabs(ch) > eps; n++){
ch *= x * x /(2 * n + 2)/(2 * n + 3);
y += ch;
if (n > MaxIter){ok = false; break;}
}
if (ok) cout << "\nЗначение функции: " << y;
else cout << "\nРяд расходится!";
}

sh x = 1 + x3/3! + x5/5! + x7/7! +...

Пример 7 - Вычисление суммы ряда


Слайд 12 ©Павловская Т.А. (СПбГУ ИТМО)
Унарная операция получения адреса &

©Павловская Т.А. (СПбГУ ИТМО)Унарная операция получения адреса & применима к величинам,

применима к величинам, имеющим имя и размещенным в оперативной

памяти. Таким образом, нельзя получить адрес скалярного выражения, неименованной константы или регистровой переменной.
int a = 5;
int* p = &a;

Операция получения адреса &


Слайд 13 ©Павловская Т.А. (СПбГУ ИТМО)
Массивы
#include
int main(){
const int n

©Павловская Т.А. (СПбГУ ИТМО)Массивы#include int main(){	const int n = 10;	int marks[n]

= 10;
int marks[n] = {3, 4, 5, 4, 4};
int

i, sum;
for ( i = 0, sum = 0; i sum += marks[i];
cout << "Сумма элементов: " << sum;
}

int a[100], b[100];
int *pa = a; // или int *p = &a[0];
int *pb = b;
for(int i = 0; i<100; i++)*pb++ = *pa++; // или pb[i] = pa[i];


Слайд 14 ©Павловская Т.А. (СПбГУ ИТМО)
float p[10]; *u[20];
int a[5] =

©Павловская Т.А. (СПбГУ ИТМО)float p[10]; *u[20];int a[5] = {1, 2, 3};int

{1, 2, 3};
int b[] = {1, 2, 3};
char cv[4]

= { 'a', 's', 'd', 'f', 0 }; // error

p[5] 5[p] *(p+5)


Слайд 15 ©Павловская Т.А. (СПбГУ ИТМО)
#include
int main(){
const int n

©Павловская Т.А. (СПбГУ ИТМО)#include int main(){	const int n = 20;		int b[n];

= 20; int b[n]; int i;
for (i = 0; i

i++) cin >> b[i];
for (i = 0; i int imin = i;
for (int j = i + 1; j int a = b[i]; b[i] = b[imin]; b[imin] = a;
}
for (i = 0; i return 0;
}

Пример - сортировка выбором


Слайд 16 ©Павловская Т.А. (СПбГУ ИТМО)

delete [] p; free (q);

float

©Павловская Т.А. (СПбГУ ИТМО)delete [] p; free (q);float *p = new

*p = new float [100];
float *q = (float *)

malloc(100 * sizeof(float));

Динамические массивы


Слайд 17 ©Павловская Т.А. (СПбГУ ИТМО)
int matr [6][8];
Многомерные массивы
matr[i][j]
*(matr[i]+j)
*(*(matr+i)+j)

int

©Павловская Т.А. (СПбГУ ИТМО)int matr [6][8];Многомерные массивы matr[i][j]*(matr[i]+j)*(*(matr+i)+j)int mass2 [][2]={ {1,

mass2 [][2]={ {1, 1}, {0, 2}, {1, 0} };
int

mass2 [3][2]={1, 1, 0, 2, 1, 0};


int x3d[3][5][7];
float y[4][3] = { { 1 }, { 2 }, { 3 }, { 4 } };
// первый столбец, остальные 0




Слайд 18 ©Павловская Т.А. (СПбГУ ИТМО)
int nstr, nstb;
cout

©Павловская Т.А. (СПбГУ ИТМО)int nstr, nstb;cout > nstr >> nstb;int **a

Введите количество строк и столбцов :";
cin >> nstr >>

nstb;
int **a = new int *[nstr]; // 1
for(int i = 0; i a[i] = new int [nstb]; // 3

int nstr = 5;
int ** m = (int **) new int [nstr][10];


Слайд 19 ©Павловская Т.А. (СПбГУ ИТМО)
Строки
char str[10] = "Vasia"; // переменная
char

©Павловская Т.А. (СПбГУ ИТМО)Строкиchar str[10] =

str[] = "Vasia"; // переменная
char *str = "Vasia” // константа
Строка -

массив символов, заканчивающийся нуль-символом (символ с кодом, равным 0; записывается '\0‘).

Библиотека -


Слайд 20 ©Павловская Т.А. (СПбГУ ИТМО)
#include
#include
int main(){
char s[5],

©Павловская Т.А. (СПбГУ ИТМО)#include #include int main(){	char s[5], passw[] =

passw[] = "kuku";
/* Можно - *passw = "kuku"; */
int i,

k = 0;
for (i = 0; !k && i<3; i++){
printf("\nвведите пароль:\n");
gets(s); if (strstr(s,passw))k = 1;
}
if (k) printf("\nпароль принят");
else printf("\nпароль не принят");
}

Пример 1 - строки


Слайд 21 ©Павловская Т.А. (СПбГУ ИТМО)
char src[10], dest[10];
for (int i

©Павловская Т.А. (СПбГУ ИТМО)char src[10], dest[10];for (int i = 0; i

= 0; i

*src = new char [10];
char *dest = new char [10], *d = dest;
cin << src;
while ( *src != 0) *d++ = *src++;
*d = 0;

while ( *d++ = *src++);

Пример 2 - строки


Слайд 22 ©Павловская Т.А. (СПбГУ ИТМО)
Типы данных, определяемые пользователем
enum
struct
union
Переименование типов

©Павловская Т.А. (СПбГУ ИТМО)Типы данных, определяемые пользователемenumstructunionПереименование типов (typedef)typedef тип новое_имя

(typedef)
typedef тип новое_имя [ размерность ];

typedef unsigned int UINT;
typedef

char Msg[100];
typedef struct{
char fio[30];
int date, code;
float salary;} Worker;

UINT i, j; Msg str[10];
Worker stuff[100];


Слайд 23 ©Павловская Т.А. (СПбГУ ИТМО)
Перечисления ( enum )
enum [

©Павловская Т.А. (СПбГУ ИТМО)Перечисления ( enum )enum [ имя_типа ] {

имя_типа ] { список_констант };
enum Err { ERR_READ, ERR_WRITE,

ERR_CONVERT};
Err error;

switch (error){
case ERR_READ: /* оп */ break;
case ERR_WRITE: /* оп */ break;
case ERR_CONVERT: /* оп */ break;
}

enum {two = 2, three, four, ten = 10, eleven, fifty = 50};


Слайд 24 ©Павловская Т.А. (СПбГУ ИТМО)
Структуры ( struct )

struct [

©Павловская Т.А. (СПбГУ ИТМО)Структуры ( struct )struct [ имя_типа ] {тип_1

имя_типа ] {
тип_1 элемент_1;
тип_2 элемент_2;
...
тип_n элемент_n;
} [ список_описателей ];

struct

{
char fio[30];
int date, code;
float salary;
}staff[100], *ps;

struct List;
struct Link{
List *p;
Link *prev, *succ;
};
struct List {
/* опр-е List */};


Слайд 25 ©Павловская Т.А. (СПбГУ ИТМО)
struct{
char fio[30];
int date, code;
float salary;
}worker

©Павловская Т.А. (СПбГУ ИТМО)struct{			char fio[30];	int date, code;	float salary;}worker = {

= {"Страусенко", 31, 215, 3400.55};

struct complex {
float real, im;
}

compl [2][3]={
{{1, 1}, {1, 1}, {1, 1}},
{{2, 2}, {2, 2}, {2, 2}}
};

Инициализация структур


Слайд 26 ©Павловская Т.А. (СПбГУ ИТМО)
Доступ к полям структуры
Worker

worker, staff[100], *ps;

worker.fio = "Страусенко";
staff[8].code = 215;
ps->salary = 0.12;


struct

A {int a; double x;};
struct B {A a; double x;} x[2];
x[0].a.a = 1;
x[1].х = 0.1;


Слайд 27 ©Павловская Т.А. (СПбГУ ИТМО)
struct Options {
bool centerX:1;
bool centerY:1;
unsigned

©Павловская Т.А. (СПбГУ ИТМО)struct Options {	bool centerX:1;	bool centerY:1;	unsigned int shadow:2;	unsigned int

int shadow:2;
unsigned int palette:4;
};
union {
unsigned char ch;
Options bit;
}option =

{0xC4};
cout << option.bit.palette;
option.ch &= 0xF0;

  • Имя файла: upravlyayushchie-operatory-struktury-dannyh-yazyka-s.pptx
  • Количество просмотров: 106
  • Количество скачиваний: 0