- •Основы программирования
- •Средства создания программ
- •Работа в интегрированной среде разработки программ turbo c (Borland c)
- •Основные функциональные клавиши и сочетания клавиш в Turbo c
- •Контрольные вопросы
- •Основы языка Си
- •Составляющие языка Си
- •Понятия алгоритмических языков (На примере языка Си)
- •Структура программы на языке Си
- •Директивы препроцессора
- •Главная функция
- •Переменные и массивы
- •Объявления переменных и массивов
- •Комментарии
- •Основные операции в Си
- •Арифметические операции
- •Логические операции и операции отношения
- •Операции присваивания
- •Функции ввода и вывода
- •Функция форматированного вывода printf( )
- •Функция форматированного ввода scanf( )
- •Функция неформатированного ввода getch( )
- •Функция неформатированного ввода gets( )
- •Функция неформатированного вывода puts( )
- •Программа – диалог
- •Контрольные к лабораторной работе «Программа-диалог»
- •Программа–тест
- •Контрольные вопросы к лабораторной работе «Программа-тест»
- •Конструкция switch/case/default
- •Операторы цикла
- •Цикл for
- •Стандартные математические функции
- •Пример выполнения лабораторной работы «Вычисление значения функции»
- •Контрольные вопросы к лабораторной работе «Вычисление значения функции»
- •Вложенные циклы.
- •Использование оператора break в циклах
- •Оператор continue
- •Оператор безусловного перехода goto
- •Действия с одномерными массивами
- •Инициализация массива
- •Ввод значений элементов массива с клавиатуры
- •Заполнение массива случайными числами
- •Вычисление суммы и произведения элементов массива
- •Поиск максимального элемента массива и его номера
- •Вычисление среднего арифметического
- •Перестановка элементов в массиве
- •Сортировка массива
- •Заполнение массива элементами из другого массива.
- •Контрольные вопросы к лабораторной работе «Одномерный массив»
- •Контрольные к лабораторной работе «Программа-диалог»
- •Контрольные вопросы к лабораторной работе «Программа-тест»
- •Контрольные вопросы к лабораторной работе «Вычисление значения функции»
- •Контрольные вопросы к лабораторной работе «Одномерный массив»
Оператор continue
Если оператор continue встретился в операторе цикла, то он передает управление на начало следующей итерации цикла. В циклах while и do-while – на проверку условия, в цикле for – на приращение. Этот оператор необходим, если надо закончить текущую итерацию цикла и не выполнять оставшиеся операторы, а сразу перейти к следующей итерации цикла.
ПРИМЕР 25:
Задание
Напечатать натуральные числа до 1000, кратные семи.
Решение
#include <sidio.h> void main( ) { int i; for(i=7; i<1000; i++) { if (i%7!=0) continue; printf(“%4d”, i); } } |
/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ |
Оператор безусловного перехода goto
Этот оператор имеет вид:
goto идентификатор;
где идентификатор – это имя метки оператора, к которому произойдёт передача управления. После метки ставится двоеточие. Помеченным может быть любой оператор в теле функции. Не стоит использовать оператор goto для передачи управления внутрь цикла, внутрь условного оператора, т.е. не передавать управление операторам, размещённым после служебных слов if или else.
Наиболее типичное применение оператора goto – необходимость обрабатывать ошибки, выявляемые в процессе выполнения программы или когда нужно сразу выйти из нескольких вложенных циклов. Оператор break обеспечит в данном случае выход только из самого внутреннего цикла. Например, в задаче поиска в матрице хотя бы одного элемента с заданным значением обычно используется два вложенных цикла. Как только элемент с заданным значением будет найден, нужно сразу выйти из двух циклов, что удобно сделать с помощью goto.
ПРИМЕР 26:
Задание
Вычислить значение выражения у=100/х при х, введённом с клавиатуры.
Эта задача уже рассматривалась выше. Обработка ошибок производилась с помощью цикла while. Теперь для этой цели применим оператор goto.
Решение
#include <stdio.h> void main ( ) { float x, y; arg: puts(“Введите аргумент х, не равный нулю.”); scanf(“%f”, &x); if (x==0) goto arg; y=100/x; printf(“\n При х=%5.2f y=%f”, x, y); } |
/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ /*9*/ |
Пояснение
Здесь arg – имя метки оператора puts, к которому произойдёт передача управления в случае, если будет введён х, равный нулю.
ПРИМЕР 27:
Что будет выведено на экран в результате работы фрагмента программы:
int i; for ( i = 1; i < 9; i ++ ){ continue; break;} printf( " \n i = %d ", i); |
/*1*/ /*2*/ /*3*/ |
Ответ:
i = 9 |
Пояснение
В результате инициализации параметр цикла (переменная i) получает значение 1. Повторяемая группа операторов выполняется 8 раз. При каждом повторении оператор break; игнорируется. Операция инкремента (увеличения значения переменной на 1) i ++, выполненная 8 раз, приведёт к тому, что переменная получит значение 9, которое и будет выведено на экран.
ПРИМЕР 28:
Что будет выведено на экран в результате работы фрагмента программы:
int i; for(i=1;i<9;i ++){ break; continue; } printf("\n i = %d", i); |
/*1*/ /*2*/ /*3*/ |
Ответ:
i = 1 |
Пояснение
В результате работы оператора break; при первом же выполнении повторяемой группы работа оператора цикла завершается. На экран будет выведено значение 1, присвоенное переменной i при инициализации.
ПРИМЕР 29:
Что будет выведено на экран в результате работы фрагмента программы:
int i; clrscr(); for (i = 1; i <= 9; i ++) printf( “\n %d * %d = %d” , i, i, i*i); printf("\n i = %d", i); |
/*1*/ /*2*/ /*3*/ |
Ответ:
1 * 1 = 1 2 * 2 = 4 3 * 3 = 9 4 * 4 = 16 5 * 5 = 25 6 * 6 = 36 7 * 7 = 49 8 * 8 = 64 9 * 9 = 81 i = 10 |
Пояснение
В результате работы оператора цикла 9 раз выполняется первый из операторов printf строки /*3*/, выводя на экран квадраты чисел. Второй оператор printf этой строки выполняется один раз после завершения выполнения оператора цикла, выводя на экран с новой строки значение переменной i.