- •1.Учебно-методический комплекс дисциплины
- •Данные о преподавателе:
- •1.2 Данные о дисциплине:
- •Выписка из учебного плана
- •1.3 Пререквизиты
- •1.4 Постреквизиты
- •1.5 Цели и задачи дисциплины
- •1.6 Перечень и виды заданий и график их выполнения
- •Виды заданий и сроки их выполнения
- •1.7 Список литературы
- •1.8 Контроль и оценка знаний.
- •1.9 Политика и процедура курса
- •2 Содержание Активного раздаточного материала
- •2,1 Тематический план курса
- •2.2 Конспект лекционных занятий
- •#Define millenium 1000
- •// Нельзя изменять
- •/* Это моя первая программа на Си*/
- •Void main()
- •Void main ()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main(void)
- •If (логическое выражение) оператор 1;
- •Void main()
- •If (логическое выражение)
- •If (условие 1 )
- •If (условие 1 )
- •If (X) printf ("Число не равно нулю");
- •Void main()
- •Void main(void)
- •Void main()
- •Void main()
- •Int n; // Количество узлов интерполяции
- •Int k; // Номер узла
- •Void main()
- •Vvedi 5 7
- •Int *a; // Указатель на массив целых чисел
- •Void main()
- •Int vect[10], s1[50];
- •Int vect [n];
- •Void main( )
- •Int min; // номер минимального элемента
- •Int random ( int n )
- •Void lin(char a)
- •Void z1(int * X, int * y)
- •Void z1(int*, int*);
- •Int имя переменной;
- •Void main()
- •8 Есть цифра
- •8 Есть буква или цифра
- •Int integ;
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Int ocen;
- •Void main( )
- •File *указатель на файл;
- •Fclose(имя_указателя);
- •Void main()
- •Int h; /*дескриптор создаваемого файла*/
- •Void main()
- •Initgraph(&g_driver,&g_mode," ");
- •Vgamed 1 640x350
- •Vgahi 2 640x480
- •Initwindow ( 400, 300 ); // открыть окно для графики 400 на 300
- •Void main(void)
- •Int g_driver,g_mode,g_error;
- •2.3 Планы лабораторных занятий
- •Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (срсп).
- •2.5 Планы занятий в рамках самостоятельной работы студентов (срс).
- •2.6 Тестовые задания для самоконтроля с указанием ключей
- •Глоссарий
Void main()
{
int s, x;
int n=0;
randomize();
s=random(l00)+1;
do {
printf ("Введите число от 1 до 100: ");
scanf ("%d", &х);
n++;
if (s<x) printf ("Загаданное число меньше\n");
if (s>x) printf ("3агаданное число больше\n");
} while (s!=x);
printf (''Bы угадали число !\n");
printf ("3атратили на угадывание %d попыток\n", n);
}
Цикл с параметром
Основная форма оператора цикла for имеет вид:
for (выражение 1; выражение 2; выражение 3 ) оператор;
где:
- выражение 1 – установление начального значения переменной-параметра цикла (инициализация);
- выражение 2 – проверка условия на продолжение цикла;
- выражение 3 – изменение параметра цикла (коррекция параметра);
- оператор – простой или составной оператор языка.
Схема работы оператора следующая. Сначала выполняется выражение 1, а затем выполняется циклический участок программы до тех пор, пока выражение 2 – истина.
Эти три раздела заголовка цикла должны быть разделены точкой с запятой. Выполнение цикла происходит до тех пор, пока условное выражение истинно. Как только условие становится ложным, начинает выполняться следующий за циклом for оператор.
Очень часто цикл for используется в тех случаях, когда число повторений тела цикла может быть заранее известным (простейшая форма). Этот процесс управляется переменной цикла (счетчиком), которой присваивается последовательно возрастающие или убывающие значения. В простейшей форме инициализация используется для присвоения начального значения переменной цикла. Проверка условия - обычно условное выражение, которое определяет, когда цикл должен быть завершен. Модификация при этом используется для изменения параметра цикла каждый раз при повторении цикла.
Простейший пример оператора цикла for:
for ( i=0; i<10; i++ ) printf (“%d \n", i);
В результате выполнения этого оператора будут напечатаны в столбик цифры от 0 до 9. Для печати этих цифр в обратном порядке можно использовать следующий оператор:
for ( i=9; i>=0; i--) printf (''%d\n", i);
Цикл for похож на аналогичные циклы в других языках программирования, и в то же время этот оператор в языке С гораздо более гибкий, мощный и применим во многих ситуациях.
В качестве параметра цикла необязательно использовать целочисленный счетчик. Приведем фрагмент программы, выводящей на экран буквы алфавита:
unsigned char ch;
for (ch='A'; ch<='Z'; ch++) printf (''%c ", ch);
Следующий фрагмент программы
for (ch='0'; ch!='N';) scanf (''%c", &ch):
будет выполняться до тех пор, пока с клавиатуры не будет введен символ 'N'. Заметим, что место, где должно быть приращение, пусто. Случайно или намеренно может получиться цикл, из которого нет выхода, так называемый бесконечный цикл.
Приведем три примера таких циклов.
for (;;) printf ("Бесконечный цикл\n");
for (i=1;1;i++) printf(" Бесконечный цикл\n");
for (i=10;i>6;i++) printf (''Бесконечный цикл\n");
Тем не менее, для таких циклов также может быть организован выход. Для этого используется оператор break, о котором говорится ниже. Если оператор break встречается в составном операторе цикла, то происходит немедленное прекращение выполнения цикла и начинается выполнение следующего оператора программы.
Пример
# include <stdio.h>
main()
{
unsigned char ch;
for(;;)
{ ch=getchar ( ); /* Прочитать символ */
if (ch=='Q') break; /* Проверка символа */
printf ("%c", ch); /* Печать символа */
}
}
В этой программе будут печататься введенные символы до тех пор, пока не будет введен символ 'Q'.
Приведем еще несколько примеров оператора for. Все эти операторы, каждый по-своему, решают задачу суммирования квадратов первых k натуральных чисел:
for (int j=1, s=0; j<=k; j++) s+=j*j;
for (int j=1,s=0; j<=k; s+=j*j++);
for (int j=0,s=0; j<=k; )s+=++j*j;
Вложенные циклы
Когда один цикл находится внутри другого, то говорят, что это вложенные циклы. Часто встречаются вложенные циклы, например, при заполнении таблиц (перемещение по строкам, а внутри строки – по столбцам). В качестве примера рассмотрим программу печати таблицы умножения целых чисел.
Пример
include <stdio.h>
main()
{
int i, j;
for (i=l;i<10;i++) //внешний цикл
{ for (j=l;j<5J++) //вложенный цикл
printf (''%d*%d = %2d ", i, j, i*j);
printf(''\n");
}
}
Операторы передачи управления
К операторам передачи управления относятся:
- goto - оператор безусловного перехода;
- break – оператор выхода из цикла или из оператора выбора;
- continue – оператор перехода к следующей итерации (шагу) цикла;
- return – оператор возврата из функции (подробно рассмотрен в главе, посвященной функциям).
Оператор GOTO. Язык С обладает всеми возможностями для написания хорошо структурированных программ. Апологеты структурного программирования считают дурным тоном использование оператора goto, без которого было тяжело обойтись в таких языках, как FORTRAN или BASIC. Тем не менее оператор goto в языке С есть, и иногда он может быть полезен, хотя без него можно обойтись в любой ситуации.
Оператор безусловного перехода имеет вид
goto метка;
Метка - это идентификатор, за которым следует двоеточие.
Одно из полезных применений оператора goto - это выход из вложенных циклов:
for ()
{ while ( )
{for ( )
{…
goto exit;
…
}
}
}
exit : printf ("выход из вложенных циклов");
При использовании оператора goto следует строго придерживаться следующих правил:
-не входить внутрь блока извне;.
-не входить внутрь условного оператора, т.е. не передавать управление операторам, размещенным после служебных слов if или else;.
-не входить извне внутрь оператора варианта switch;
- не передавать управление внутрь цикла.
Оператор break. Оператор break имеет два применения. Первое - окончание case в операторе switch. Второе - немедленное окончание цикла, не связанное с проверкой обычного условия окончания цикла. Когда оператор break встречается внутри оператора цикла, то происходит немедленный выход из цикла и переход к выполнению оператора, следующего за оператором цикла.
Пример
#include <stdio.h>
main()
{
int i;
for (i=0;i<1000;i++)
{ printf (''%d - %d \n", i, i*i*i);
if (i*i*i >= 10000) break;}
}
Оператор CONTINUE. Если оператор continue встретился в операторе цикла, то он передает управление на начало следующей итерации цикла. В циклах while и do-while - на проверку условия, в цикле for - на приращение. Этот оператор необходим, если вы хотите закончить текущую итерацию цикла и не выполнять оставшиеся операторы, а сразу перейти к следующей итерации цикла.
Пример. Пусть требуется вычислить значение элементарного интерполяционного многочлена Lk(x) в заданной точке x = t.
Это делается с помощью следующего фрагмента программы:
double x[100]; // Узлы интерполяции (не более 100)
