- •«Утверждаю»
- •Учебно-методический комплекс
- •Астана 2010 График выполнения и сдачи заданий по дисциплине
- •Карта учебно-методической обеспеченности дисциплины Учебники, учебные пособия
- •Конспект лекционных занятий
- •Тема 1. Введение в программирование на Си. Структура программы. Директивы препроцессора. Типы данных.
- •Основные операции в языке Си.
- •Преобразование типов
- •Тема 2. Управляющие структуры. Выбор вариантов. Структура выбора If, If – Else, логические операции, операция условия, множественный выбор.
- •Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue.
- •Тема 4. Массивы. Разработка программ с использованием одномерных и двумерных массивов.
- •Тема 5. Функции в Си. Создание и использование функций.
- •Тема 6. Классы памяти и разработка программ.
- •Тема 7. Указатели в Си.
- •Тема 8. Использование указателей при обработке одномерных и двумерных массивов.
- •Тема 9. Символы и строки в Си.
- •Функции сравнения из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 6.
- •Функции поиска из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 7.
- •Другие функции из библиотеки обработки строк. В таблице 8 приведены прототипы и краткое описание остальных функций из библиотеки обработки строк.
- •Ниже приведены примеры программы, использующих функции работы со троками.
- •Тема 11. Структуры данных в Си.
- •Тема 12. Динамические структуры данных.
- •Тема 13. Работа с файлами в Си.
- •Тема 14. Графика в Си.
- •Тема 15. Объектно-ориентированное программирование.
- •Методические рекомендации по выполнению лабораторных заданий
- •Лабораторная работа № 3. Использование операторов цикла при решении задач.
- •Лабораторная работа №4. Разработка программ с использованием одномерных массивов.
- •Лабораторная работа №5. Разработка программ с использованием двумерных массивов.
- •Лабораторная работа № 6. Программирование задач с использованием нескольких функций на языке Си.
- •Лабораторная работа № 8. Программирование задач обработки структур данных.
- •Лабораторная работа № 9. Разработка программ с использованием файловых переменных.
- •Лабораторная работа № 10. Разработка программ с использованием графических функций языка Си.
- •Содержание отчета по выполнению лабораторной работы
- •1 Задание
- •Тема 1. Запись констант, стандартных функций, выражений, операторов присваивания. Запись программ линейных структур алгоритмов.
- •Тема 2. Алгоритмическое описание, запись программ линейных, разветвляющихся.
- •Тема 3. Алгоритмическое описание, запись программ циклических структур алгоритмов.
- •Тема 4. Алгоритмическое описание, составление программ обработки одномерного массива.
- •Тема 5. Алгоритмическое описание, составление программ обработки двумерного массива.
- •Тема 6-7. Составление программ решения задач с использованием функции.
- •Рекомендуемая литература:
- •Тема 8-9. Составление программ решения задач обработки массивов с использованием указателей.
- •Тема 10-11. Программирование задач обработки символьных и стрковых данных.
- •Рекомендуемая литература.
- •Тема 12. Методы сортировки.
- •Тема 13. Составление программ решения задач с использованием структур данных.
- •Тема 14. Составление программ решения задач с использованием файла произвольного доступа.
- •Рекомендуемая литература.
- •Тема 15. Алгоритмизация графических построений.
- •Варианты заданий:
- •Сведения
- •Перечень экзаменационных вопросов по пройденному курсу
- •Глоссарий
Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue.
Структура повторения позволяет программисту специфицировать многократное выполнения действия до тех пор, пока некоторое условие остается истинным.
Общий вид оператора while:
while( выражение) оператор;
В качестве выражения используются условные выражения. Оператор может быть простым или составным. В процессе выполнения цикла while, вычисляется значение выражения. Если оно истинно или в общем случае не равно нулю, то оператор выполняется, затем выражение вычисляется снова. Если выражение становится ложным или в общем случае равно нулю, то цикл завершается.
Пример 1: main() { int k1 =1; while (k1<=20) { printf (“ % 10d % 10d ”, k1, k1*k1); k1++; } } |
Пример 2: main() { int k1 =1; while (k1++<=20) printf (“ % 10d % 10d\n “, k1, k1*k1); }
|
Общий вид оператора for
for(выр 1; выр2; выр3)
оператор;
где выражение 1 – обычно задает начальное значение переменной цикла;
выражение 2 – условие продолжение цикла;
выражение 3 – обычно задает некоторую модификацию (приращение) переменной цикла за каждое выполнение цикла.
Выражение 1 вычисляется только один раз до начала выполнения какого-нибудь из операторов цикла. Если выражение 2 оказывается истинным (или не равным нулю), тело цикла выполняется один раз, затем вычисляется величина выражения 3, и значение выражение 2 определяется вновь. Оператор может быть как простым, так и составным.
Пример:
main ( )
{ int x;
for (x=1; x<=10; x++)
printf (“%8d %8d \n”, x, x*x*x); }
в операторе forв выражении 3 можно использовать операцию уменьшения, например:
for (n=10; n>0; n--)
printf (“%d \n”, n);
Можно опускать одно или более выражений, но при этом нельзя опускать символы ''точка с запятой''. Необходимо только включить в тело цикла несколько операторов, которые в конце концов приведут к завершению его работу.
x=2;
for (n=4; x<=100;)
x=x*n,
В качестве выражения 3 можно использовать вообще любое правильно составленное выражение например:
for (n=5; n<100; n=n+10)
printf (“ %d \n”, n);
for (d=10.0; d<500.0; d=d*1.5)
printf (“%f \n”, d);
Язык Си поддерживает несколько операций присваивания, эти операции присваивания представляют некоторые сокращения при описании выражений. Так любое выражение вида <переменная>=<переменная><операция><выражение>; может быть заменено на:
<переменная><операция>=<выражение>;
Ниже приводится некоторые примеры таких выражений и способы их сокращения:
а=а+b; сокращается до а+=b;
a=a-b; сокращается доa-=b;
a=a*b; сокращается доa*=b;
a=a/b; сокращается доa/=b;
a=a%b; сокращается доa%=b;
Приведенные формы записи операций присваивания более компактны, и при трансляции обычно позволяют получить более эффективный машинный код. Эти операции присваивания часто используются в выражении в спецификации цикла for.
В соответствии с рассмотренными дополнительными операциями присваивания выражения 3 двух последних пример можно записать в виде n+=10 иd*=1.5;
Операция ''запятая''. Операция ''запятая'' позволяет организовать составные выражения. При использовании операции ''запятая'' выражения, разделенные занятой, вычисляются слева направо. Операция ''запятая'' часто используется в оператореfor, что позволяет увеличить гибкость использования циклаfor.
Рассмотрим пример использования составных выражений в операторе for.
main ( )
{ int x; y;
for (x=1, y=9; x<=10; x++, y--)
printf (“% 2d, %2d \n”, x, y); }
Первое и третье выражение в этом цикле forсостоит из двух выражений, инициализирующих и модифицирующих переменныеxиy.
Общий вид оператора do while:
do
оператор;
while(выражение);
Оператор может быть простым и составным. Тело цикла dowhileвсегда выполняется, по крайней мере, один раз, поскольку проверка осуществляется только после его завершения. Циклdowhileвыполняется до тех пор, пока проверяемое выражение не станет ложным или равным нулю.
main ( )
{ float a,bc;
charch;
do
{ printf(“введите два числа:”);
scantf (“%f %f”, &a, &b);
if(b= =0.0)
printf(“\nделение на ноль!”);
else { c=a\b;
printf(“\nрезультат деления двух чисел: %f”,c); }
printf(“\nНажмите 'q' для выхода или любую клавишу для продолжения”); }
while((ch=getch( )) !='q'); /*getchar() – получает символ из потока,
getch() – получает символ с консоли без отображения */
}
Управляющие операторы (break, continue, goto).
Оператор break. Для выхода из цикла до его завершения используется оператор break. Если оператор break находится внутри некоторого вложенного цикла, его действие распространяется только на самый внутренний цикл, в котором он непосредственно находится, этот оператор вызывает немедленный выход из самого внутреннего из объемлющих его циклов или переключателей.
#define n 10
main ( )
{ int B[LIM], i, j;
int A[LIM][LIM];
- - - - - - - - - - - - - -
for (i=0; i<LIM; i++) {
B[i]=0
for (j=0; j<LIM; j++)
if (A[i][j]<0) {
B[i]=1; break; } } }
Оператор continue.Иногда нужно не выходить из цикла, а продолжить ряд операторов в теле цикла и начать его заново. В этом случае можно применить операторcontinue. Он вызывает начало следующего итерации объемлющего циклаwhile,for,dowhile. В операторах циклаwhileиdowhileэто означает, что сразу же выполняется проверяющая часть, а в циклеforуправление передается на этап повторной инициации.
k=0;
for (i=0;i<LIM; i++)
for (j=0; j<LIM; j++){
if (A[i][j]>0)
continue;
A[i][j]=A[i][j]*A[i][j];
k=k+1; }
Оператор goto. В языке Си в отличие от других языков оператор goto используют редко. Его формат:
goto метка;
где метка – любой идентификатор.
Оператор goto можно использовать, если нужно выйти из вложенного набора циклов при обнаружении каких-то ошибок, например, покинуть сразу два цикла. Оператор break непосредственно нельзя использовать, так как он позволяет выйти только из самого внутреннего цикла.
while (funct>0)
{ for (i=1; i<100; i++)
{ <совокупность операторов>
if (большая ошибка)
goto help;
операторы; }
операторы; }
операторы; }
операторы;
help: устранение ошибки.
Основная литература: 1осн[134-153],2осн[211-255],3осн[57-63],
Дополнительная литература:10доп[28-41]
Контрольные вопросы:
1. В каких случаях используются операторы цикла for,while,do/while?
2. Назовите операцию, которая используется для организации составных операций?
3. В чем заключается различие между операторами while иdo/while?
4. В каком случае можно использовать оператор goto, а операторbreakнельзя?
5. Какая процедура соответствует конструкции выхода из цикла?