Разделы презентаций


Тема Управляющие конструкции языка С (продолжение) Лекция 16.09.13г. 1

Содержание

Лекция 16.09.13г.Обзор вопросов прошлой лекцииОперации с присваиваниемТернарная условная операцияПриоритет и ассоциирование операцийПреобразование (приведение) типовТема «Управляющие конструкции языка С»Простые операторы и блокиОператоры простого выбораВложенные операторы выбораОператор множественного выбора switch

Слайды и текст этой презентации

Слайд 1Тема
«Управляющие конструкции языка С»
(продолжение)
Лекция 16.09.13г.

Тема «Управляющие конструкции языка С»(продолжение)Лекция 16.09.13г.

Слайд 2Лекция 16.09.13г.
Обзор вопросов прошлой лекции
Операции с присваиванием
Тернарная условная операция
Приоритет и

ассоциирование операций
Преобразование (приведение) типов
Тема «Управляющие конструкции языка С»
Простые операторы и

блоки
Операторы простого выбора
Вложенные операторы выбора
Оператор множественного выбора switch
Лекция 16.09.13г.Обзор вопросов прошлой лекцииОперации с присваиваниемТернарная условная операцияПриоритет и ассоциирование операцийПреобразование (приведение) типовТема «Управляющие конструкции языка

Слайд 3Лекция 16.09.13г.
Операторы повторения (цикла)
Во многих алгоритмах встречается элементарная конструкция, приведенная

на блок-схеме. Она соответствует многократному (циклическому) повторению оператора (или нескольких

операторов в блоке), пока некоторое выражение не станет равным нулю (получит значение «ложь»).
Это записывается так:
while(выражение)
оператор
Такая конструкция называется циклом с предусловием.

//Ex018.c – оператор while
#include
#include
int main() {
int i = 0;
char s[] = "qwerty";
while (s[i++]) ;
printf("number of characters(%s) = %d\n", s, --i);
system("PAUSE");
return 0;
}

Лекция 16.09.13г.Операторы повторения (цикла)Во многих алгоритмах встречается элементарная конструкция, приведенная на блок-схеме. Она соответствует многократному (циклическому) повторению

Слайд 4Лекция 16.09.13г.
Операторы повторения (цикла)
В языке С существует еще одна форма

цикла с предусловием, более сложная по сравнению с простейшей формой

while. В этой форме дополнительно участвуют еще два выражения, одно из которых вычисляется однократно, до проверки условия, а второе – многократно, после всех операторов, выполняемых в цикле.
Это записывается так:
for(выраж1; выраж2; выраж3)
оператор
В круглых скобках любое из выражений можно опустить, но точки с запятой обязательно должны присутствовать. Если опущено выраж2, то оно считается =1. Поэтому конструкция:
for(;;); является бесконечным циклом (как, впрочем, и конструкция while(1);
Лекция 16.09.13г.Операторы повторения (цикла)В языке С существует еще одна форма цикла с предусловием, более сложная по сравнению

Слайд 5Лекция 16.09.13г.
Пример цикла
Следующая программа преобразует символьное изображение числа, записанное в

строке s, в само число.
//Ex019_Parser.c – парсер
#include
#include
#include
int

main() {
int i, n, sign;
char s[] = " -347ab";
for (i = 0; isspace(s[i]); i++) ; /* skip white space */
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') i++; /* skip sign */
for (n = 0; isdigit(s[i]); i++) n = 10 * n + (s[i] - '0');
n*=sign;
printf("s = %s\nn = %d\n", s, n);
system("PAUSE");
return 0;
}
Лекция 16.09.13г.Пример циклаСледующая программа преобразует символьное изображение числа, записанное в строке s, в само число.//Ex019_Parser.c – парсер#include

Слайд 6Лекция 16.09.13г.
Еще один пример цикла
Следующая программа обращает порядок символов в

строке s.
//Ex019_Reverse.c – обращение строки
#include
#include
int main() {
int

i, j;
char s[] = "qwertyuiop", c;
printf("before: %s\n", s);
for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
printf("after: %s\n", s);
system("PAUSE");
return 0;
}
Лекция 16.09.13г.Еще один пример циклаСледующая программа обращает порядок символов в строке s.//Ex019_Reverse.c – обращение строки#include #include int

Слайд 7Лекция 16.09.13г.
Оператор цикла с постусловием
В некоторых случаях тело цикла должно

быть выполнено хотя бы один раз, вне зависимости от истинности

выражения. Это может быть реализовано, если проверка значения выражения будет располагаться после тела цикла.
Это записывается так:
do
оператор
while(выражение);
Такая конструкция называется циклом с постусловием.
Цикл с постусловием применяется на практике значительно реже, чем цикл с предусловием.
Лекция 16.09.13г.Оператор цикла с постусловиемВ некоторых случаях тело цикла должно быть выполнено хотя бы один раз, вне

Слайд 8Лекция 16.09.13г.
Пример цикла с постусловием
//Ex020_Reverse.c – обращение строки
#include
#include
int

main() {
int i = 0, j, sign, n =

-347;
char s[10], c;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0) s[i++] = '-';
s[i] = '\0';
printf("inverse: %s\n", s);
for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
printf("result: %s\n", s);
system("PAUSE");
return 0;
}

Эта программа преобразует число n в его символьное изображение, записанное в строке s.

Обращение строки s

Лекция 16.09.13г.Пример цикла с постусловием//Ex020_Reverse.c – обращение строки#include #include int main() { int i = 0, j,

Слайд 9Лекция 16.09.13г.
Оператор break
Иногда возникает необходимость прервать выполнение тела цикла

и «досрочно» выйти за пределы цикла. Это можно сделать, разместив

в теле цикла оператор break. Это оператор вызывает «безусловный переход» в точку программы, расположенную непосредственно за циклом. Оператор break может использоваться в любом операторе цикла, а также в операторе множественного выбора switch.
Пример: программа удаляет «незначащие» символы в конце строки s.

//Ex021.c – демонстрация break
#include
#include
int main() {
int n;
char s[] = "qwerty \t\t \n\n";
printf("before:\n");
printf("number of characters(%s) = %d\n", s, strlen(s));
for (n = strlen(s)-1; n >= 0; n--)
if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n') break;
s[n+1] = '\0';
printf("after:\n");
printf("number of characters(%s) = %d\n", s, strlen(s));
system("PAUSE");
return 0;
}


Слайд 10Лекция 16.09.13г.
Оператор continue
Этот оператор похож на break, но, в отличие

от break, досрочно прекращает выполнение текущей итерации цикла, а не

всего оператора цикла. Для циклов while и do это означает переход к проверке условия, а для цикла for – вычисление выражения3, а уже затем переход к проверке условия.
Пример: подсчитать количество положительных элементов массива и найти их среднее арифметическое.

//Ex022.c – демонстрация continue
#include
#include
int main() {
int x[] = {-1, 4, 0, -3, -7, 5, 11, -2}, i, n;
double s;
for(i = 0, n = 0, s = 0.0; i < sizeof(x) / sizeof(x[0]); i++) {
if(x[i] <= 0) continue;
s += x[i]; n++;
}
if(n) s /= n;
printf("number of positive elements = %d\n", n);
printf("mean value = %f\n", s);
system("PAUSE");
return 0;
}

Лекция 16.09.13г.Оператор continueЭтот оператор похож на break, но, в отличие от break, досрочно прекращает выполнение текущей итерации

Слайд 11Лекция 16.09.13г.
Оператор перехода goto и метки
Оператор goto метка вызывает безусловный

переход к оператору (в той же самой функции) перед которым

записана метка (обычное имя, заканчивающееся символом : - двоеточие).
Пример: проверить, имеют ли два массива хотя бы один общий элемент.

//Ex023_goto.c – демонстрация goto
#include
#include
int main() {
int a[] = {-1, 4, 0, -3, -7, 5, 11, -2}, i;
int b[] = {7, -12, 8, 9, 11, -2}, j;
int n = sizeof(a) / sizeof(a[0]);
int m = sizeof(b) / sizeof(b[0]);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
if (a[i] == b[j]) goto found;
printf("no common elements\n");
goto final;
found:
printf("common elements: a[%d] == b[%d]\n", i, j);
final: system("PAUSE");
return 0;
}

Лекция 16.09.13г.Оператор перехода goto и меткиОператор goto метка вызывает безусловный переход к оператору (в той же самой

Слайд 12Лекция 16.09.13г.
Оператор перехода (продолжение)
Оператор goto является «нежелательным» оператором, т.к. «запутывает»

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

получается более громоздкой, чем с goto.
Пример: предыдущая программа без goto.

//Ex024_no_goto.c – демонстрация goto
#include
#include
int main() {
int a[] = {-1, 4, 0, -3, -7, 5, 11, -2}, i;
int b[] = {7, -12, 8, 9, 11, -2}, j, found = 0;
int n = sizeof(a) / sizeof(a[0]);
int m = sizeof(b) / sizeof(b[0]);
for (i = 0; i < n && !found; i++)
for (j = 0; j < m && !found; j++)
if (a[i] == b[j]) found = 1;
if (found)
printf("common elements: a[%d] == b[%d]\n", --i, --j);
else
printf("no common elements\n");
system("PAUSE");
return 0;
}

Лекция 16.09.13г.Оператор перехода (продолжение)Оператор goto является «нежелательным» оператором, т.к. «запутывает» логическую структуру программы, однако бывают ситуации, когда

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

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

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

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


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

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