- •Программирование на языке высокого уровня
- •Составитель: л.А. Прокушев
- •Подписано к печати Формат 60х84 1/16. Бумага тип. №3
- •Редакционно-издательский отдел
- •190000, Санкт-Петербург, ул. Б. Морская, 67
- •Алгоритмизация вычислительных процессов
- •Средства программирования вычислительных процессов
- •Данные и их типы
- •Константы
- •Переменные
- •Ввод-вывод данных
- •Ввод-вывод данных в стиле с
- •Форматированный ввод
- •Форматированный вывод
- •Консольный ввод-вывод
- •Функция ввода символа (без отображения):
- •Функция очистки экрана результатов:
- •Выражения и операции
- •Логические выражения и операции.
- •Работа с ветвящимися процессами Операторы
- •Оператор присваивания
- •Условный оператор (if)
- •Операторы передачи управления
- •Оператор break (прервать) используется для прерывания работы текущего сложного оператора, в теле которого находится оператор break, и передачи управления на следующий по порядку оператор.
- •Оператор выбора (switch)
- •Действие оператора выбора состоит в следующем:
- •Введите 2 числа х, y : 3 8
- •Работа с циклическими вычислительными процессами
- •Циклы с фиксированным числом повторений Оператор цикла с предусловием (while)
- •Прерывание цикла
- •Циклы с неизвестным числом повторений Вычисление рекуррентных последовательностей
- •Оператор цикла с постусловием (do)
- •Вложенные циклы и организация диалога в программе
- •Оператор цикла с параметром (for)
- •Программа:
- •Работа с массивами
- •Описание массива
- •Доступ к элементам массива
- •Указатель.
- •Занесение данных в массив
- •Многомерные массивы
- •Работа с функциями
- •Определение функции
- •Вызов функции
- •Передача параметров функции
- •Передача данных по значению
- •Передача данных по адресу
- •Прототип (шаблон) функции
- •Блочная структура программы
- •Внешние описания переменных
- •Многомодульные программы Проект программы
- •Внешние ссылки
- •Создание проекта программы
- •Работа с указателями Объявления объектов со сложными описателями
- •Массивы указателей
- •Указатель на указатель
- •Указатель на функцию
- •Использование указателя на функцию как аргумента
- •Массивы указателей на функции
Переменные
Переменные представляют в программе данные, значение которых может меняться в ходе работы программы, и определяются своим описанием до первого использования следующим образом
тип имя [ =инициатор ], ... ; где
тип – ключевое слово, определяющее объём памяти (число байтов), выделенный для хранения значения переменной (как объекта программы), например: char – символьный (1 байт), int – целый (2 байта), float (4 байта), double (8 байт) – вещественный;
имя – уникальный идентификатор переменной, задающий символический адрес объекта программы в памяти ЭВМ;
инициатор – начальное значение переменной, которое может отсутствовать в описании.
Примеры описания переменных:
int k, max=0; float r2, p1=0.5; double z5_1;
unsigned int year=2000; char sim=’x’, bell=’\a’;
Ввод-вывод данных
Для того чтобы данные попали в память ЭВМ, пользователь должен их ввести, а для получения результатов работы программы должен уметь вывести их в приемлемом для человека виде. В языках С/С++ отсутствуют встроенные операторы ввода-вывода. Вместо них используются библиотечные функции, которые подключаются к программе с помощью файла заголовков. Поскольку язык С является подмножеством С++, то использование библиотек С будем рассматривать как "стиль С", а обращение к библиотекам С++ – как "стиль С++".
Ввод-вывод данных в стиле с
Любая программа на С/С++ использует функции из стандартных библиотек, для чего их заголовочные файлы необходимо подключить к программе с помощью директив препроцессора, например:
# include <stdio.h> // подключение функций стандартного ввода-вывода
#include<conio.h> // подключение функций консольного ввода-вывода
Под консолью пользователя понимается клавиатура как стандартное устройство ввода и экран дисплея (стандартное устройство вывода). На эти устройства можно ссылаться с помощью предопределённых в файле stdio.h указателей: stdin – стандартный ввод и stdout – стандартный вывод. Стандартный ввод-вывод может быть двух видов: форматированный и неформатированный.
Форматированный ввод
Эта операция выполняется функцией ввода, имеющей вид:
scanf (“форматная строка”, &аргумент, ... ) , где
форматная строка – это список спецификаций форматов вводимых данных, разделённых запятыми;
&аргумент – адрес переменной (аргумента) в оперативной памяти, по которому будет записано значение переменной при вводе с клавиатуры.
Спецификация формата аргумента начинается с символа % (процент) и в простом случае должна содержать символ типа аргумента по форме:
% тип.
Символ типа определяет, как интерпретируется компилятором вводимое значение аргумента:
тип переменной int (целый):
d, i – десятичное целое со знаком;
u – десятичное целое без знака (U – для типа long int – длинный целый);
o – восьмеричное число;
x – шестнадцатеричное число;
тип переменной float (вещественный) :
f, e, E – вещественное число с фиксированной или плавающей точкой;
тип переменной char (символьный):
c – ввод одного символа;
s – ввод строки символов, пока не встретится символ первого пробела
или '/n' (новая строка).
Пример 1.
Ввести значения (исходные данные) в описанные переменные:
int m; float p1; char sim, str[80]; // str символьный массив
Функция ввода данных может иметь вид:
scanf (“%d%f%c%s” ,&m, &p1, &sim, str);
Поскольку имя массива символов str задает адрес этого массива, постольку ему не предшествует символ адреса – &.
При вводе с клавиатуры числовые данные должны разделяться пробельным символом (путем нажатия клавиш <пробел> или <Enter>). Символьные данные не разделяются, поскольку пробельные символы прочитываются как вводимые символы. Например, с клавиатуры могут быть введены данные следующим образом:
25 37.08rHello // в конце ввода нажимается клавиша <Enter>
В памяти будут записаны значения переменных:
m=25, p1=37.08, sim=r, str=Hello\0 /* строка автоматически завершается управляющим символом конца строки ‘\0’ */ .
При вводе данные поступают вначале во входной буфер stdin, а затем в оперативную память после нажатия клавиши <Enter> (ввод).
Для очистки буфера ввода stdin от оставшихся от предыдущего ввода символов используется функция
fflush (stdin) .