Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по Архитектуре ЭВМ и сист...doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.69 Mб
Скачать

Функции ввода-вывода

Работа в среде Visual Studio (в режиме консольных приложений) сопряжена с определенными неудобствами, вызванными различными стандартами кодировки символов кириллицы в операционных системах MS DOS и Windows. Это происходит вследствие того, что весь ввод-вывод в консольных приложениях проходит в кодировке стандарта ANSII, а текст в исходных файлах, набираемый в текстовом редакторе Visual Studio имеет кодировку в стандарте ANSI. Поэтому для нормального вывода строки, содержащей буквы русского алфавита, эту строку необходимо сначала «пропустить» через функцию CharToOemA(), а уже потом отправлять на консольный вывод.

С учетом выше сказанного можно написать вывод русских букв следующем образом:

01 #include "stdafx.h"

02 #include <iostream>

03 #include <windows.h>

04 using namespace std;

05 char * RUS(const char * text);

06 int _tmain(int argc, _TCHAR* argv[])

07 {

08 cout<<RUS("Привет");

09 system("pause");

10 return 0;

11 }

12 char bufRus[250];

13 char * RUS(const char * text)

14 {

15 CharToOemA(text,bufRus);

16 return bufRus;

17 }

Рассмотрим приведенный листинг более подробно. В строках 1, 2 и 3 подключаются библиотеки. Первая необходима для всех файлов с расширением cpp, а вторая необходима для корректной работы функции русификации. В третьей строке описывается подключение библиотеки для организации операций ввода/вывода. На 04 строке подключается пространство имен std, это необходимо, для того чтобы применять операции чтения с клавиатуры (cin) и вывода на экран (cout) в сокращенном виде. Не в сокращенном виде название этих операций будет std::cin и std::cout соответственно.

Строка 05 содержит объявление функции с именем RUS. Строка № 6 содержит начало описания функции _tmain которая будет выполняться первой. Строка 8 выводит на экран слово «Привет», а 9 строка вызывает системную функцию Windows для остановки вашего приложения пока пользователь не нажмет на какую либо клавишу. Это действие необходимо производить перед каждым завершением вашей программы, в противном случае консольное окно закроется, и вы не успеете посмотреть выведенные на экран результаты работы программы. Строка 10 содержит оператор выхода из функции _tmain, что эквивалентно завершению программы. Строка 11 содержит символ } закрывающий блок описания функции _tmain (в строке 7 содержится символ { открывающий бок описания этой функции).

Строка № 05 и строки с 12 по 17 необходимы для работы функции русификации.

Помимо операторов языка С++ в программный код можно вставлять код на языке ассемблер. Это можно выполнить несколькими способами, с обязательным указанием служебного слова __asm:

1. __asm оператор ассемблера;

2. __asm

{

оператор1

оператор2

операторN

}

3. __asm оператор1

__asm оператор2

__asm операторN

Пример

Необходимо написать программу, которая вычисляет сумму двух целых чисел. Значения слагаемых взять с клавиатуры. Ниже приведен листинг программы выполняющей это действие.

#include "stdafx.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int num1,num2,rez;

cout<<"Enter num1=";

cin>>num1;

cout<<"Enter num2=";

cin>>num2;

__asm

{

mov eax,num1

add eax,num2

mov rez,eax

}

cout<<"Rezult:"<<rez<<endl;

system("pause");

return 0;

}