Главная
Уроки и советы


С++ для начинающих !
Урок 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.


 


Источник http://www.sunday.ru/hitecos
Hosted by uCoz