- •Программирование на языке высокого уровня
- •Составитель: л.А. Прокушев
- •Подписано к печати Формат 60х84 1/16. Бумага тип. №3
- •Редакционно-издательский отдел
- •190000, Санкт-Петербург, ул. Б. Морская, 67
- •Алгоритмизация вычислительных процессов
- •Средства программирования вычислительных процессов
- •Данные и их типы
- •Константы
- •Переменные
- •Ввод-вывод данных
- •Ввод-вывод данных в стиле с
- •Форматированный ввод
- •Форматированный вывод
- •Консольный ввод-вывод
- •Функция ввода символа (без отображения):
- •Функция очистки экрана результатов:
- •Выражения и операции
- •Логические выражения и операции.
- •Работа с ветвящимися процессами Операторы
- •Оператор присваивания
- •Условный оператор (if)
- •Операторы передачи управления
- •Оператор break (прервать) используется для прерывания работы текущего сложного оператора, в теле которого находится оператор break, и передачи управления на следующий по порядку оператор.
- •Оператор выбора (switch)
- •Действие оператора выбора состоит в следующем:
- •Введите 2 числа х, y : 3 8
- •Работа с циклическими вычислительными процессами
- •Циклы с фиксированным числом повторений Оператор цикла с предусловием (while)
- •Прерывание цикла
- •Циклы с неизвестным числом повторений Вычисление рекуррентных последовательностей
- •Оператор цикла с постусловием (do)
- •Вложенные циклы и организация диалога в программе
- •Оператор цикла с параметром (for)
- •Программа:
- •Работа с массивами
- •Описание массива
- •Доступ к элементам массива
- •Указатель.
- •Занесение данных в массив
- •Многомерные массивы
- •Работа с функциями
- •Определение функции
- •Вызов функции
- •Передача параметров функции
- •Передача данных по значению
- •Передача данных по адресу
- •Прототип (шаблон) функции
- •Блочная структура программы
- •Внешние описания переменных
- •Многомодульные программы Проект программы
- •Внешние ссылки
- •Создание проекта программы
- •Работа с указателями Объявления объектов со сложными описателями
- •Массивы указателей
- •Указатель на указатель
- •Указатель на функцию
- •Использование указателя на функцию как аргумента
- •Массивы указателей на функции
Программа:
void main( )
{ int N, i, p=1; // р=1 – признак простого числа
clrscr ( );
printf (“ Введите натуральное число N>1: ”);
sсanf (“ %d”, &N); // ввод числа
for (i=2; i <= N / 2; i++) // цикл по делителям
if (!(p = N % i)) break ; // деление без остатка (р=0)
if (p) printf (“Число %d простое.”, N);
else printf (“Число %d не простое.”, N);
}
Рассмотрим пример применения всех трех операторов цикла с вложенными циклами.
Пример27.
Ввести натуральное число N и найти его разложение на простые множители, произведение которых дает N. Организовать диалог с пользователем (интерактивный режим) по вводу любого числа N и контроль его ввода.
Программа.
void main( )
{ int N, n, i, p; // описание переменных
clrscr( ); // очистка экрана
puts (“ Разложение числа на простые множители ”);
do // цикл диалога
{ do // цикл проверки числа
{ printf(“\nВведите натуральное число >1:”);
scanf (“ %d”, &N); // ввод числа
} while (N<=1); // условие продолжения ввода
n=N; // текущее значение N
p=1; // признак простого числа
printf(“\n %d =”, N); // вывод числа N
for ( i=2; i<=N/2; i++) // цикл по множителям
{ if (n % i == 0) // если число не простое
{ p=0; // признак не простого числа
while (n % i == 0) // цикл по одинаковым множителям
{ printf (“%d*”, i); // вывод множителя
n /= i; // число делится на множитель
}
}
} // конец цикла по множителям
if (p) printf(“ простое число ”);
printf (“\nПродолжить? Да – нажмите 1, Нет – любую клавишу”);
i=getche( ); // ввод видимого символа
} while (i == ’1’); // условие продолжения диалога
}
Работа с массивами
Массив – это последовательность данных одинакового типа, имеющих общее имя массива. Элементы (компоненты) массива расположены в памяти друг за другом и различаются номерами (индексами). Причем индексация в Си начинается с нуля. Количество индексов, необходимых для описания массива и организации доступа к элементам массива, определяют размерность массива – одномерный (в математике – вектор), двухмерный (в математике – матрица, таблица) и т.д.
Описание массива
Описание массива должно соответствовать формату:
тип имя [размер1] [размер2],…; причем скобки [ ] обязательны для каждой размерности.
Например,
int ar[5]; // одномерный массив из 5-ти целых чисел
char st [20], buf[80]; // символьные массивы
float R[2][3]; // двухмерный массив вещественных чисел
В математике массив R представляется матрицей из 2-х строк и 3-х столбцов:
В памяти ЭВМ двухмерные массивы заполняются построчно, то есть второй индекс меняется чаще: R[2][3] = {R[0][0], R[0][1], R[0][2], R[1][0], R[1][1], R[1][2], R[1][3]}. По всем размерностям нижний индекс равен 0, а верхний N–1, где N – число элементов по данной размерности.