С++
для начинающих !
Урок 5
1. Функции для управления выводом текста на экран
|
После
выполнения последнего задания у вас должна остаться рамка на пустом
экране.
Давайте выведем в центре экрана внутри
рамки две строки: на первой текст и выражение, на
второй результат выражения.
#include
<iostream.h>
#include
<conio.h>
void main(void)
{
clrscr();
//… текст
программы выводящей рамку
gotoxy(15,
11); // переводим курсор в середину экрана
cout <<
"Результат выражения (100*4)/0.5 равен:";
gotoxy(53,
12); // устанавливаем курсор чуть ниже
cout <<
(100*4)/0.5;
}
|
Описание программы:
# include < iostream.h>
здесь находиться описание cout
#include
<conio.h>
сборник полезных функций:
clrscr()
- очистка экрана
clreol()
- стирание текста от курсора до конца строки
getch()
- задержка выполнения программы до нажатия клавиши
gotoxy()
- перевод курсора в заданную точку экрана
wherex()
- получение координаты X положения курсора
wherey()
- получение координаты Y положения курсора
и много других, которые применим позже
gotoxy(15,
11); - эта функция устанавливает курсор на позицию 15 буквы(х),
11 строки(у )
Весь экран 80
символов, 25 строк. Отсчет
с верхнего левого угла.
Как Вы заметили, мы использовали функцию
<>с параметрами (15, 11). Это
одна из разновидностей функции, которая принимает значение, и основываясь
на этих значениях выполняет необходимые нам действия. Параметры
функции записываются в скобках и разделяются запятыми(15,
11). Количество параметров зависит от функции, их может быть
много, а может и не быть совсем, как у функции очистки экрана
clrscr() - да и зачем ей параметры, ведь она не чего не считает,
а только очищает экран и переводит курсор в верхний левый угол с
координатами(0, 0 ).
Но
есть и функции, которые возвращают
результат соей работы в виде какого-либо значения. Они напоминают
выражения, результат которых выводит cout,
так и с функциями. Они могут возвращать
не только числа, но и слова и предложения.
Так
вот одна из них является функция, узнающая координату, на которой
находиться курсор. w herex() - она
нечего не принимает, но зато возвращает текущее положение курсора
по Х .
Пример:
Напишем
программу, которая устанавливает курсор в заданную координату, выводит
текст, узнает текущую позицию координаты по Х
и выводит ее.
#include
<iostream.h>
#include
<conio.h>
void main(void)
{
clrscr();
// очищаем экран < экран>
gotoxy(10, 5); // устанавливаем курсор
cout << "Текущее значение курсора по Х=";
cout << < wherex();>// вывод результата функции
wherex()
} |
Вы видите, что при выполнении программы, там, где встречаются
функции, они выполняются и если они
возвращают значение, то эти значения
записываются там, где был вызов функции
.
Функции,
которые принимают значение, его, обрабатывают
и выдают результат (функции, которые принимают
и возвращают значение).
За
примером далеко ходить не надо, таких функций много и они очень
полезные. Это как в духовку сунул полуфабрикат, а через 30 минут
вынимаешь результат выпечки. Функция сама знает, что ей делать -
ей только продукт для переработки нужен, а дальше она сама разберется,
что с этим продуктом делать. Может выдать результат действием или
числом, которое она получила в результате своих внутренних вычислений.
Одна
из таких функций вычисляет косинус числа Х(
cos( < >) ). Функция cos() библиотеки
math. h принимает
число Х, считает его и выводит результат.
Пример:
Напишем
программу, которая считает и выводит значение
cos 30 и cos 90 градусов
#include
<iostream.h>
#include <conio.h>
#
include < math. h> // набор математических функций
void main(void)
{
clrscr();
cout << "cos 30=" << cos(30) << endl;
cout << "cos 90=" << cos(90) ;
} |
Правда, результат получиться в радианах, поэтому привожу переделанную
программу, которая выводит результат в привычном для нас виде:
#include
<iostream.h>
#include <conio.h>
#
include < math. h> // набор математических функций
void main(void)
{
clrscr();
cout << "cos 30=" << cos((3.14/180)*30)
<< endl;
cout << "cos 90=" << cos((3.14/180)*90)
;
}
|
библиотека
math. h содержит
функции: <>
cos()
- вычисление косинуса
exp() - функция Е в степени х
log() - вычисление <>
log10() - вычисление логарифма по основанию 10
sin() - вычисление синуса
tan() - вычисление тангенса
sqrt() - вычисление квадратного корня
и др. функции.
Задание:
Напишите
программу, которая использует все ниже перечисленные функции библиотеки
math. h, для первых четырех функций
используйте в качестве параметров целые числа(34,10,…),
для остальных трех функций используйте в качестве параметров вещественные
типы данных, т.е. с плавающей запятой(3.14,
5.4 ,..). Оговорюсь, что разделителем в качестве точки привыкли
считать в США. У них получается это плавающая точка, а у нас в качестве
разделителя целой и дробной части используется запятая.
2. Вывод рамок, таких
как в Norton Commander или Far< far> |
< far>
г======== C:\Program
Files\Far ========¬
¦
¦
L=============================-
За
каждой буквой, цифрой или знаком, скрывается определенный код. Всего
кодов, а значит знаков, не может превышать 256(от 0 до 255). Существует
множество кодировок, в MS- DOS> DOS-866,
в Windows это win-1251, в интернете
< koi8- <>, и много других. Разница между
ними лишь в том, что они по-разному распределяют кодовые места под
буквы(знаки). Например, если в C++3.1) символ 'У'
значиться под кодом 147 , то в кодировке
win-1251 под кодом 147 значится ' "
'. а 'У' перескочила на код
211 .
Как
говорилось раньше, в компьютере можно запрограммировать 256 разных
символов. Это сделано для того, чтобы сюда влезло два алфавита -
стандартный английский и алфавит другой страны.
Давайте
разберем, как размещаются символы в кодовой таблице
DOS-866, ведь в ней выводиться результат программ, если Вы
программируете в <>C++ под ДОС (Дисковая Операционная Система).
Итак:
С
0 по 31 код - это функциональные символы и клавиши(например
Esc).
Под
32 кодом находиться пробел.
С
33 по 47 - вспомогательные символы (!"#$%&'()*+ и т.д.).
С
48 по 57 - цифры (0123456789).
С
58 по 64 - знаки (:;<= >?@).
С
65 по 127 - английский алфавит < >
Остальная
часть кодов(128 - 255 ) занята под
латиницу и псевдографические значки, из которых и строятся окна
в Far и Norton
Commander.С помощью клавиатуры такие значки просто не выведешь
(клавиш всего около 101). Мы знаем, что у каждого значка (буквы)
есть свой код, а это значит, что можно вывести букву, указав ее
код. Компилятор при встречи такого кода, преобразует его в соответствующий
символ.
При
выводе символов cout у Вас появляются
дополнительные возможности управления выводом. Вы помните, что при
вставке в текст управляющих символов они позволяют управлять выводом.
Например, символ новой строки ' \ n',
но есть и другие управляющие символы и среди них есть символ, который
позволяет записывать данные в кодах( \ x
).
Специальный
символ ' \ x' позволяет использовать
шестнадцатеричные числа( '\ xFF, где
FF шестнадцатеричный код). Шестнадцатеричные
числа обычно используют при низкоуровневом программировании, эту
систему исчисления придумали, чтобы упростить программирование с
использованием двоичных кодов.
Таблица
кодов для тех, кто хочет узнать больше о системах исчислений:
десятичный код
|
двоичный код
|
шестнадцатеричный
код
|
0
|
0000
|
0
|
1
|
0001
|
1
|
2
|
0010
|
2
|
3
|
0011
|
3
|
4
|
0100
|
4
|
5
|
0101
|
5
|
6
|
0110
|
6
|
7
|
0111
|
7
|
8
|
1000
|
8
|
9
|
1001
|
9
|
10
|
1010
|
A
|
11
|
1011
|
B
|
12
|
1100
|
C
|
13
|
1101
|
D
|
14
|
1110
|
E
|
15
|
1111
|
F
|
Основные
элементы псевдографики, из которых строят рамки и окна.
Мы
будем вводить код в шестнадцатеричном исчислении, поэтому чтобы
вывести знак с помощью кодов (0-255 - десятичное исчисление) надо
этот код преобразовать в шестнадцатеричный, в таблице кодов показано
какой код соответствует какому. Но вам не обязательно их переводить,
достаточно знать часто используемые.
Напишем
программу, которая выводит код значков и сами значки:
#include
<iostream.h>
#include
<conio.h>
void main(void)
{
clrscr();
cout << "Код B7=\xB7";
cout <<"\n\nКод b9\="xB9" ";
cout << "\n\nКод ba\="xBA" ";
cout << "\n\nКод bb\="xBB" ";
cout << "\n\nКод bc\="xBC" ";
cout << "\n\nКод c8\="xC8" ";
cout << "\n\nКод c9\="xC9" ";
cout << "\n\nКод ca\="xCA" ";
cout << "\n\nКод cb\="xCB" ";
cout << "\n\nКод cc\="xCC" ";
cout << "\n\nКод cd\="xCD" ";
cout << "\n\n\n И другие от b0до df ";<>
getch();
// задержка выполнения программы до нажатия клавиши
}
|
Задание:
Напишите
программу, которая создает рамки, такие как в Far(достаточно
сделать по одной колонке в каждой панели).
Впишите
в эти колонки имена каталогов и файлов, сделайте их вид, напоминающий
вид колонок в Far.
|
|