Вывод в стандартный поток средствами языка Си осуществляется следующими функциями:
printf ;puts ;putchar ;putc ;С синтаксисом этих функция можно ознакомиться в приложении №I (7.3) к данной лекции. Автор хочет отметить, что, в отличие от функций чтения консоли, вывод на консоль совершенно безопасен и не приводит к "зависанию" программ и ошибкам системы типа "переполнения буфера". Однако если Вы пишете программу-фильтр, которая будет интенсивно работать с ""stdout".
Пример 7.1
/* File ex07001.c */
/* Пример вывода символов средствами языка Си */
#include <stdio.h>
#include <string.h>
#include <conio.h>
#ifndef STR_LENGTH
#define STR_LENGTH 5 // Длина строки 3 символа
#endif
void main()
{
char str[STR_LENGTH]; // Текстовый буфер
char c, *s; // Временная переменна
int icsize; // Временная переменна
memset( str, '\0', STR_LENGTH ); // Обнуляем буфер
icsize = STR_LENGTH;
puts( "\nВведите строку символов длиной в 2 символа\n" );
s = fgets( str, icsize, stdin ); // Читаем не более 2 символов с входного потока
// (вместе с нулевым символом)
printf( "\nДлина строки: %2d символов,", strlen(s) ); //Выводим длину строки
printf( "\nЗначение строки: %5s.", s ); // Выводим значение строки
puts( "\nPress any key to continue...");
while( !(c = getch()) ); // Цикл пока не нажата клавиша
}
Консольный потоковый вывод осуществляется при помощи оператора "<<" и функций: cout.put и cout.write. cout (см. таблицу 6.1 к лекции 6).
Описание функций для потокового ввода средствами языка C++ смотри в приложении №3 (6.6) к лекции 6.
C помощью оператора "<<" можно осуществить как неформатированный, так и форматированный ввод-вывод. Однако автор советует для вывода, с целью совместимости с выводом с использованием библиотек API, использовать неформатированный вывод в поток с помощью оператора, а данные для него подготовить при помощи функции sprintf (см. пример 7.2.).
Пример 7.2
/* File ex07002.cpp */
/* Файл иллюстрирует ввод-вывод средствами C++*/
/* Данный пример тестировался в системе программировани
Borland C/C++ 3.10 */
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#ifndef NAME_LENGTH
#define NAME_LENGTH 81 // Длина строки 80 символов + завершающий символ '\0'
#endif
#ifndef AGE_LENGTH
#define AGE_LENGTH 81 // Длина строки 80 символов + завершающий символ '\0'
#endif
#ifndef OUTPUT_STR_LENGTH
#define OUTPUT_STR_LENGTH 67
#endif
void main( void )
{
const char format_in[] = "%3d";
const char format_out[] = "Добрый день, %s!\nВаш возраст, %-.10s, - %3d лет"; // Формат вывода
char name_length[NAME_LENGTH];
char cage[AGE_LENGTH];
char soutstr[OUTPUT_STR_LENGTH];
char ctemp, c;
int temp;
int iage;
(void) memset( name_length, '\0', NAME_LENGTH ); // Обнуляем строку;
(void) memset( soutstr, '\0', OUTPUT_STR_LENGTH );
cerr << "Введите своё имя: ";
cin >> name_length;
cerr << "Введите Ваш возраст: ";
cin >> cage;
if( !sscanf( cage, format_in, iage ) ) // Если ошибка ввода
{
cerr << "\nНичего не введено или неправильный формат данных!\n";
return;
}
if( iage < 40 )
temp = sprintf( soutstr, format_out, "Молодой человек", name_length, iage );
else
temp = sprintf( soutstr, format_out, "Папаша", name_length, iage );
if( temp == EOF ) // Если ошибка вывода
{
cerr << "\nНичего не выведено или неправильный формат данных!\n";
return;
}
cout << soutstr; // Выводим сформированную строку
cerr << "\nПрограмма завершена нормально\n";
cerr << "\nPress any key to continue...";
while( !(c = getch()) ); // Цикл пока не нажата клавиша
}
Для вывода данных на языке Quick Basic используются операторы PRINT и PRINT USING. Их синтаксис следующий:
| ОПЕРАТОР | PRINT |
| НАЗНАЧЕНИЕ: | Вывод списка числовых и символьных переменных, выражений и литералов на экран дисплея; |
| СИНТАКСИС: | PRINT [expressionlist] [{; | ,}], гдеexpressionlist - список из одной или более числовых или символьных выражений, выводимых на печать;{; | ,} - разделители, применяемые к выводу следующего выражения и означающие следующее:; - означает печать сразу после вывода предыдущего выражения;<пусто> - означает вывод с новой строки; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет. |
| ПРИМЕЧАНИЕ: | в Quick Basic зона печати имеет ширину в 14 символов. |
| ОПЕРАТОР | PRINT USING |
| НАЗНАЧЕНИЕ: | Форматированный вывод списка числовых и символьных переменных, выражений и литералов на экран дисплея. Формат выводимых выражений определяется строкой формата: formatstring$ ; |
| СИНТАКСИС: | PRINT USING formatstring$; expressionlist [{; | ,}], гдеformatstring$ - текстовая строка, содержащая в себе один или более "опций формата". Её формат смотри ниже, в таблице 7.1;expressionlist - список из одной или более числовых или символьных выражений, выводимых на печать;{; | ,} - разделителители, применяемые к выводу следующего выражения и означающие следующее:; - означает печать сразу после вывода предыдущего выражения; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет. |
| Строка форматов Quick Basic для оператора PRINT USING | |
|---|---|
| Символ | Назначение |
| Символы формата для числовых выражений | |
| # | Позиция числа |
| . | Позиция десятичной точки |
| , | Запятая, помещённая слева от десятичной точки, печатает запятую перед каждой третьей цифрой |
| $$ | Печатает знак доллара перед числом. |
| + | Позиция знака числа |
| ** | Заполняет предшествующие пробелы числа "звёздочками" |
| - | Помещённый после числа, печатает trailing знак для отрицательных символов. |
| ^^^^ | Печатает числа в "научном" ("экспоненциальном") формате |
| **$$ | Комбинация ** and $$. |
| Символы, используемые для форматирования строковых выражений | |
| Печатает всю строку | |
| \ \ | Печатает первые n символов, где n – число пробелов между чёрточками + 2 |
| ! | Печатает только первый символ строки |
| Символы, используемые для печати литеральных символов | |
| _ | Печатает следующий символ форматирования как литерал |
| Любой символ не из этой таблицы печатается как литерал | |
В качестве примера вывода текста средствами Quick Basic смотри пример 6.5 из предыдущей лекции.
Для вывода средствами языка Perl используется функции: , print, printf и write. Их описание смотри ниже.
|
|
| Синтаксис: | |
| Описание: | Вне тела функции eval выводит значения элементов списка, заданных параметром: СПИСОК, в стандартный STDERR и завершает выполнение сценария Perl с текущим значением специальной переменной $!. Если используется в теле функции eval(), то сообщение об ошибке помещается в переменную: $@, и функция eval завершается неопределённым значением. Такое поведение позволяет использовать функцию: - для генерирования исключительных ситуаций. |
print |
|
| Синтаксис: | print ДЕСКРИПТОР СПИСОК print СПИСОК; print |
| Описание: | Выводит список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT, или текущий файл, установленный функцией select(). Если отсутствует параметр: СПИСОК, то выводится содержимое специальной переменной: $_. |
printf |
|
| Синтаксис: | printf ДЕСКРИПТОР ФОРМАТ, СПИСОК printf ФОРМАТ, СПИСОК |
| Описание: | Выводит форматированный список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT, или текущий файл, установленный функцией select(). Параметр: ФОРМАТ - представляет собой строку, содержащую символы форматирования, полностью совпадающие с символами форматирования системной функции UNIX printf (смотри приложение №2 к лекции 6 данного курса). |
write |
|
| Синтаксис: | write ДЕСКРИПТОР write |
| Описание: | Осуществляет форматированный вывод в файл, связанный с заданным дескриптором: ДЕСКРИПТОР, в соответствии с определённым форматом. Если параметр: ДЕСКРИПТОР - не задан, то выводит в стандартный файл вывода: STDOUT, - или в файл, выбранной функцией: select(). |
Информацию о форматированном выводе данных смотри, например, в [18].
Пример 7.3.
#!perl -w
# File ex07003.pl
# Данный пример тестировался интерпретатором языка
# ActiveState Perl 5.8.0.
#
# Данная функция запрашивает имя и возраст пользовател
# и выводит приветствие.
#
# Определение строки форматирования:
$format_out = "Добрый день, %s!\nВаш возраст, %-.10s, - %3d лет\n";
# Ввод персональных данных
print "\nВведите своё имя: ";
$name = <>;
print "\nВведите Ваш возраст: ";
$age = <>;
# Выбор приветстви
if( $age < 40 )
{
printf $format_out, "Молодой человек", $name, $age;
}
else
{
printf $format_out, "Папаша", $name, $age;
}
# Завершение работы
print STDERR "\nPress key Enter to Exit...";
$junk = <STDIN>;
# Конец файла
Для вывода в
| ФУНКЦИЯ: | PRINT |
| НАЗНАЧЕНИЕ: | Осуществляет неформатированный вывод списка переменных в поток; |
| СИНТАКСИС: | print ДЕСКРИПТОР СПИСОК print СПИСОК |
| ОПИСАНИЕ: | Выводит список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT ;Примечание: В конец вывода переменной |
| ФУНКЦИЯ: | PRINT |
| НАЗНАЧЕНИЕ: | Осуществляет форматированный вывод списка переменных в поток; |
| СИНТАКСИС: | print ДЕСКРИПТОР, '"строка форматов"' % (СПИСОК) print '"строка форматов"' % (СПИСОК) |
| ОПИСАНИЕ: | Выводит список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT. Строка форматов имеет то же описание параметров, как и в функции printf на языке Си (смотри Приложение №2 к лекции 6 данного курса); |
| ФУНКЦИЯ: | STR |
| НАЗНАЧЕНИЕ: | Вывод символов в поток; |
| СИНТАКСИС: | str( object ) |
| ОПИСАНИЕ: | Возвращает строку, содержащую представление object для печати. Функция расставляет или убирает кавычки, то есть выполняет оформление объекта. Основное отличие от функции repr() в том, что данная функция формирует строку для человеческого восприятия, а не для eval(). |
| ФУНКЦИЯ: | REPR |
| НАЗНАЧЕНИЕ: | Вывод символов в поток; |
| СИНТАКСИС: | repr( object ) |
| ОПИСАНИЕ: | Возвращает строку, содержащую представление object для печати. Основная задача функции - формирование строки для использования в функции eval(). |
В Питоне имеется несколько способов форматированного ввода/вывода. Самый простой из них - оператор print, печатающий переменные и строковые константы, применяя формат по умолчанию. Другой простой способ вывода данных на дисплей - функция str(), которая выводит любую переменную, используя также формат по умолчанию. Есть также функция repr(), которая выводит данные в машинном(неформатированном) виде. Некоторые типы переменных, которые не могут должным образом отформатироваться функцией str(), обрабатываются схоже с repr().
Пример 7.4.
# Пример тестировался на интерпретаторе
# ActiveState Python 2.5
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> 's' # Такое выражение значит то же, что и repr(s)
"'Hello, world.'"#Машинный формат
>>> str(0.1) # Переменная с точкой
'0.1'
>>> '0.1' # repr(0.1)
'0.10000000000000001' # Ошибка округления чисел с точкой
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'Значение x равно' + `x` + ', а значение y равно ' + `y` + '...'#Использование операции
... #строк для форматировани
>>> print s
Значение x равно 32.5, а y равно 40000...
>>> # Заключение переменных в кавычки работает для всех типов данных
... p = [x, y]
>>> ps = repr(p)
>>> ps
'[32.5, 40000]'
>>> # Окружение строки дополнительными кавычками
... hello = 'hello, world\n'
>>> hellos = `hello`
>>> print hellos
'hello, world\n'
>>> # Можно заключать в кавычки и константные списки
... `x, y, ('Linux', 'BSD')`
"(32.5, 40000, ('Linux', 'BSD'))"
Для форматированного вывода удобно использовать выравнивание по краю. Для этой цели в Питоне предусмотрены следующие функции модуля string: string.rjust(), string.ljust() и string.center(). Эти функции возвращают выровненную строку по правому и левому краю, а также по центру до определённого количества символов. Они принимают два параметра: саму строку и количество символов, зарезервированных под строку(если строка длиннее, то она выводится как есть, а для удаления лишних символов воспользуйтесь "string.ljust(x, n)[0:n]". На примере это выглядит так:
Пример 7.5.
# Пример тестировался на интерпретаторе # ActiveState Python 2.5 >>> import string >>> for x in range(1, 11): ... print string.rjust(`x`, 2), string.rjust(`x*x`, 3), ... # В предыдущем операторе print была поставлена в конце запятая, перевода строки нет: ... print string.rjust(`x*x*x`, 4) Для этой же цели можно использовать оператор print со строкой формата, аналогичной Си (смотри приложение №2 к лекции 06 данного курса): >>> for x in range(1,11): ... print '%2d %3d %4d' % (x, x*x, x*x*x) # %d означает целое число
Пример 7.6.
#! %PYTHON%/python # -*- coding: cp866 -*- # # Пример тестировался на интерпретаторе # ActiveState Python 2.5 # # File ex07006.pl # Данная функция запрашивает имя и возраст пользовател # и выводит приветствие. # def ex07006(): # Определение строки форматирования: format_out0 = 'Добрый день, %s!' format_out1 = 'Ваш возраст, %-.10s,' format_out2 = ' - %3d лет' # Ввод персональных данных name = raw_input( 'Введите своё имя: ' ) age = int( raw_input( 'Введите Ваш возраст: ' ) ) # Выбор приветстви if( age < 40 ): print format_out0 % 'Молодой человек' else: print format_out0 % 'Папаша' print format_out1 % name, print format_out2 % age # Завершение работы junk = raw_input( 'Press key Enter to Exit...') # Конец файла
Для вывода данных в
| ФУНКЦИЯ: | write |
| СИНТАКСИС: | write( Variable|Constant* ), где Variable - "связанная" переменная любого типа, Constant - константа любого типа. Список выводимых переменных и констант может быть произвольной длины. Элементы списка разделяются запятыми; |
| НАЗНАЧЕНИЕ: | Выводит данное количество аргументов; |
| ОПИСАНИЕ: | Функция write записывает данные константы или переменные в текущее окно или на текущее устройство вывода. Функция write может быть связана с произвольным ненулевым числом аргументов. Аргументы в функции write не могут быть свободными переменными. |
| ШАБЛОНЫ: | (i, i*); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех (истина); |
| ОШИБКИ: | * 2001 Не могу выполнить операцию записи. |
| ФУНКЦИЯ: | nl |
| СИНТАКСИС: | nl |
| НАЗНАЧЕНИЕ: | Переводит вывод текста на экране на новую строку; |
| ШАБЛОНЫ: | Нет; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех; |
| ОШИБКИ: | Нет; |
| ФУНКЦИЯ: | writef |
| СИНТАКСИС: | writef( FormatString, Variable|Constant* ), гдеFormatString - строковая переменная, указывающая на формат чисел выводимых данных,Variable и Constant - те же аргументы, что и для функции write ; |
| НАЗНАЧЕНИЕ: | Выводит список аргументов функций, форматы которых записаны в строке форматов; |
| ОПИСАНИЕ: | Функция writef выполняет форматированный вывод. Аргументы Арг1 - АргN могут быть константами или переменными, которые относятся к %-m.pf |
| ШАБЛОНЫ: | (i, i, i*); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех (истина); |
| ОШИБКИ: | * 1025 Слишком много аргументов в формате строки. |
Назначение символов в формате спецификации смотри в Приложении №2 к лекции 6 данного курса.
Ниже рассмотрен пример программы на языке Turbo Prolog, реализующей алгоритм из примера 7.2.
Пример 7.7.
/* Файл EX07007.PRO */ /* Пример тестировался в системе программировани Borland Turbo Prolog 2.0. */ /* Данная функция запрашивает имя и возраст пользовател и выводит приветствие */ domains /* Описываем переменные */ Age = integer Name = string predicates output_age( Age ) clauses /* Определяем правило output_age */ output_age( Age ) :- Age < 40, write( "Молодой человек!" ), !. output_age( Age ) :- write( "Папаша!" ). goal /* Описываем алгоритм работы программы */ write( "Введите Ваше имя: " ), readln( Name ), write( "Введите Ваш возраст: " ), readint( Age ), write( "Добрый день, "), output_age( Age ), nl, writef( "Ваш возраст, %s, -- %3d лет", Name, Age ),nl, write( "Press key Enter to exit..." ), readchar( _ ).
Вывод в
Для вывода данных в
| ФУНКЦИЯ | WRITE |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Std[Out|Err].Write( String ), где String - выводимая на экран строка текста; |
| НАЗНАЧЕНИЕ: | Выводит строку символов на экран; |
| ОПИСАНИЕ: | Записывает в поток StdOut или StdErr строку string (без символа конца строки); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Только сценарии CScript; |
| ФУНКЦИЯ | WRITEBLANKLINES |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Std[Out|Err].WriteBlankLines(n), где n - число пропущенных (пустых) строк; |
| НАЗНАЧЕНИЕ: | Печать пустых строк на экране; |
| ОПИСАНИЕ: | Записывает в поток StdOut или StdErr заданное параметром n число пустых строк; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Только сценарии CScript; |
| ФУНКЦИЯ | WRITELINE |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Std[Out|Err].WriteLine( String ), где String - выводимая на экран строка текста; |
| НАЗНАЧЕНИЕ: | Выводит строку символов на экран; |
| ОПИСАНИЕ: | Записывает в поток StdOut или StdErr строку string (вместе с символом конца строки) |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Только сценарии CScript; |
| ФУНКЦИЯ | ECHO |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Echo String[, String], где String - Выводимая (-ые) строка текста или переменные; |
| НАЗНАЧЕНИЕ: | Вывод строки текста; |
| ОПИСАНИЕ: | Функция выводит строки символов, одну или нескольких переменных в поток вывода StdOut или диалоговое окно. При этом производится приведение типов; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Все сценарии; |
| КОНСТАНТА | vbCrLf |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | vbCrLf [ …] |
| НАЗНАЧЕНИЕ: | Вставляет в текущую строку Visual Basic Script псевдосимвол " ; |
| ПЕРЕНОСИМОСТЬ: | Все сценарии, только при выводе строк и переменных; |
Замечание: запись Std[Out|Err] означает "или StdOut, или StdErr", то есть функция перенаправляет вывод или в
Пример 7.8.
'***************************************************************** '* Имя: ex07008.vbs '* Язык: VBScript Microsoft Windows XP '* Описание: Организация простого диалога с проверкой услови '***************************************************************** Dim Name, Age, junk ' Выводим диалоги WScript.StdOut.Write( "Введите Ваше имя: " ) Name = WScript.StdIn.ReadLine WScript.StdOut.Write( "Введите Ваш возраст: " ) Age = WScript.StdIn.ReadLine ' Проверка условий и вывод приветстви If Age < 40 Then WScript.StdOut.WriteLine( "Добрый день, Молодой человек!" ) Else WScript.StdOut.WriteLine( "Добрый день, Папаша!" ) End if WScript.StdOut.WriteLine( "Ваш возраст, " Name " - " Age " лет" vbCrLf ) ' Выход из программы Wscript.Echo "Press key Enter to exit..." junk = WScript.StdIn.ReadLine() ' Конец программы
Вывод в
println ;print.Рассмотрим эти функции поподробнее.
| ФУНКЦИЯ | PRINTLN |
| ОПРЕДЕЛЕНА В: | Класс System |
| СИНТАКСИС: | System.out.println( "Элемент_1"{ + "Элемент_n"} ) ; где "Элемент_1" - "Элемент_n" - Заключённые в кавычки строки, переменные, константы (например, числа) или практически любой объект, определённый в языке Java; |
| НАЗНАЧЕНИЕ: | Функция выводит один или несколько элементов в |
| ОПИСАНИЕ: | Вывод текстовой строки из текстовых (или преобразованные в текстовую форму) переменных, констант и литералов. Переменные разделяются знаками "+", в конце автоматически вставляется символ " ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Функция не возвращает значений; |
| ПЕРЕНОСИМОСТЬ: | Везде; |
| ФУНКЦИЯ | PRINT |
| ОПРЕДЕЛЕНА В: | Класс System |
| СИНТАКСИС: | System.out.print( "Элемент_1"{ + "Элемент_n"} ) ; где "Элемент_1" - "Элемент_n" - Заключённые в кавычки строки, переменные, константы (например, числа) или практически любой объект, определённый в языке Java; |
| НАЗНАЧЕНИЕ: | Функция выводит один или несколько элементов в |
| ОПИСАНИЕ: | Вывод текста или преобразованных в текст объектов, констант и литералов. Переменные выводятся, начиная с текущей позиции курсора, разделяются знаками "+", в конце строка не завершается символом " (то есть новый вывод будет осуществляться с той же строки); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Функция не возвращает значений; |
| ПЕРЕНОСИМОСТЬ: | Везде; |
Пример 7.9.
/* File ex07009.java */
/* Функция реализует простейший диалог между ЭВМ и человеком с условием */
/* Данный пример тестировался на компиляторе Sun J2EE SDK 1.6) */
/* Данный пример требует наличие компилированного класса SavitchIn */
import java.io.*;
import java.util.*;
// Файл ex07009.java
public class ex07009
{
public static void main( String[] args )
{
/* Определение переменных */
int Age;
String Name, junk;
/* Начало диалога (ввод данных пользователя */
System.out.print("Введите Ваше имя: ");
Name = SavitchIn.readLine();
System.out.print( "Введите Ваш возраст: " );
Age = SavitchIn.readLineInt();
/* Проверка условия и вывод диалога */
if( Age < 40 )
System.out.println( "Добрый день, Молодой человек!" );
else
System.out.println( "Добрый день, Папаша!" );
System.out.println( "Ваш возраст, " + Name + ", - " + Age +" лет." );
/* Завершение работы программы */
System.out.println( "Press key Enter to exit..." );
junk = SavitchIn.readLine();
}
}
На данной лекции Вы познакомились с описанием функций буферизированного (потокового) вывода в
С помощью полученных знаний Вы можете писать диалоговые программы, в том числе и первые "диалоговые
Однако для того чтобы писать более "продвинутые" программы, требующие работы с файлами, Вам потребуются функции создания, закрытия и манипулирования файловыми потоками. Об этом - в следующих лекциях.
Функции вывода данных в
| ФУНКЦИЯ | printf |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int printf( format_string[, arguments…] ); char *format_string; |
| НАЗНАЧЕНИЕ: | Функция печатает символы и формирует и печатает задаваемые аргументами значения в stdout ). Она имеет переменное число параметров; |
| ОПИСАНИЕ: | Строка описания формата вывода, format_string, состоит из обычных символов, escape и других управляющих последовательностей, а также Обычные символы и |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Число напечатанных символов. |
| ФУНКЦИЯ: | puts |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int puts( s ); const char *; |
| НАЗНАЧЕНИЕ: | Функция выводит строку в поток stdout ; |
| ОПИСАНИЕ: | Функция puts копирует строку символов с нулевым окончанием '\0' в поток стандартного вывода stdout, причём добавляет в конец символ перехода на новую строку (т.е. заменяет символ '\0' на строку символов "\r\n\0") ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | При успешном завершении функция puts возвращает ненулевое значение. В противном случае возвращается значение EOF ; |
| ПЕРЕНОСИМОСТЬ: | Данная функция поддерживается в операционных системах, основанных на UNIX, содержится в стандарте ANSI C. |
| ФУНКЦИЯ: | putc |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int putc( c, stream ); int c; FILE *stream; |
| НАЗНАЧЕНИЕ: | Функция выводит символ в поток; |
| ОПИСАНИЕ: | Функция putc представляет собой stream ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | При успешном завершении функция возвращает символ c. При возникновении ошибки функция возвращает значение EOF (конец файла); |
| ПЕРЕНОСИМОСТЬ: | Функция поддерживается в операционных системах UNIX, стандарте ANSI C, и определена в стандарте Кернигана и Ритчи. |
| ФУНКЦИЯ: | putchar |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int putchar( c ); int c; |
| НАЗНАЧЕНИЕ: | Функция выводит символ в поток stdout ; |
| ОПИСАНИЕ: | putchar - это макрокоманда, определённая как putc( c, stdout) ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | При успешном завершении функция возвращает выведенный символ c. При ошибке она возвращает EOF ; |
| ПЕРЕНОСИМОСТЬ: | Функция поддерживается в операционных системах UNIX, стандарте ANSI C, и определена в стандарте Кернигана и Ритчи. |
Вывод в стандартный поток средствами языка Си осуществляется следующими функциями:
printf ;puts ;putchar ;putc ;С синтаксисом этих функция можно ознакомиться в приложении №I (7.3) к данной лекции. Автор хочет отметить, что, в отличие от функций чтения консоли, вывод на консоль совершенно безопасен и не приводит к "зависанию" программ и ошибкам системы типа "переполнения буфера". Однако если Вы пишете программу-фильтр, которая будет интенсивно работать с ""stdout".
Пример 7.1
/* File ex07001.c */
/* Пример вывода символов средствами языка Си */
#include <stdio.h>
#include <string.h>
#include <conio.h>
#ifndef STR_LENGTH
#define STR_LENGTH 5 // Длина строки 3 символа
#endif
void main()
{
char str[STR_LENGTH]; // Текстовый буфер
char c, *s; // Временная переменна
int icsize; // Временная переменна
memset( str, '\0', STR_LENGTH ); // Обнуляем буфер
icsize = STR_LENGTH;
puts( "\nВведите строку символов длиной в 2 символа\n" );
s = fgets( str, icsize, stdin ); // Читаем не более 2 символов с входного потока
// (вместе с нулевым символом)
printf( "\nДлина строки: %2d символов,", strlen(s) ); //Выводим длину строки
printf( "\nЗначение строки: %5s.", s ); // Выводим значение строки
puts( "\nPress any key to continue...");
while( !(c = getch()) ); // Цикл пока не нажата клавиша
}
Консольный потоковый вывод осуществляется при помощи оператора "<<" и функций: cout.put и cout.write. cout (см. таблицу 6.1 к лекции 6).
Описание функций для потокового ввода средствами языка C++ смотри в приложении №3 (6.6) к лекции 6.
C помощью оператора "<<" можно осуществить как неформатированный, так и форматированный ввод-вывод. Однако автор советует для вывода, с целью совместимости с выводом с использованием библиотек API, использовать неформатированный вывод в поток с помощью оператора, а данные для него подготовить при помощи функции sprintf (см. пример 7.2.).
Пример 7.2
/* File ex07002.cpp */
/* Файл иллюстрирует ввод-вывод средствами C++*/
/* Данный пример тестировался в системе программировани
Borland C/C++ 3.10 */
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#ifndef NAME_LENGTH
#define NAME_LENGTH 81 // Длина строки 80 символов + завершающий символ '\0'
#endif
#ifndef AGE_LENGTH
#define AGE_LENGTH 81 // Длина строки 80 символов + завершающий символ '\0'
#endif
#ifndef OUTPUT_STR_LENGTH
#define OUTPUT_STR_LENGTH 67
#endif
void main( void )
{
const char format_in[] = "%3d";
const char format_out[] = "Добрый день, %s!\nВаш возраст, %-.10s, - %3d лет"; // Формат вывода
char name_length[NAME_LENGTH];
char cage[AGE_LENGTH];
char soutstr[OUTPUT_STR_LENGTH];
char ctemp, c;
int temp;
int iage;
(void) memset( name_length, '\0', NAME_LENGTH ); // Обнуляем строку;
(void) memset( soutstr, '\0', OUTPUT_STR_LENGTH );
cerr << "Введите своё имя: ";
cin >> name_length;
cerr << "Введите Ваш возраст: ";
cin >> cage;
if( !sscanf( cage, format_in, iage ) ) // Если ошибка ввода
{
cerr << "\nНичего не введено или неправильный формат данных!\n";
return;
}
if( iage < 40 )
temp = sprintf( soutstr, format_out, "Молодой человек", name_length, iage );
else
temp = sprintf( soutstr, format_out, "Папаша", name_length, iage );
if( temp == EOF ) // Если ошибка вывода
{
cerr << "\nНичего не выведено или неправильный формат данных!\n";
return;
}
cout << soutstr; // Выводим сформированную строку
cerr << "\nПрограмма завершена нормально\n";
cerr << "\nPress any key to continue...";
while( !(c = getch()) ); // Цикл пока не нажата клавиша
}
Для вывода данных на языке Quick Basic используются операторы PRINT и PRINT USING. Их синтаксис следующий:
| ОПЕРАТОР | PRINT |
| НАЗНАЧЕНИЕ: | Вывод списка числовых и символьных переменных, выражений и литералов на экран дисплея; |
| СИНТАКСИС: | PRINT [expressionlist] [{; | ,}], гдеexpressionlist - список из одной или более числовых или символьных выражений, выводимых на печать;{; | ,} - разделители, применяемые к выводу следующего выражения и означающие следующее:; - означает печать сразу после вывода предыдущего выражения;<пусто> - означает вывод с новой строки; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет. |
| ПРИМЕЧАНИЕ: | в Quick Basic зона печати имеет ширину в 14 символов. |
| ОПЕРАТОР | PRINT USING |
| НАЗНАЧЕНИЕ: | Форматированный вывод списка числовых и символьных переменных, выражений и литералов на экран дисплея. Формат выводимых выражений определяется строкой формата: formatstring$ ; |
| СИНТАКСИС: | PRINT USING formatstring$; expressionlist [{; | ,}], гдеformatstring$ - текстовая строка, содержащая в себе один или более "опций формата". Её формат смотри ниже, в таблице 7.1;expressionlist - список из одной или более числовых или символьных выражений, выводимых на печать;{; | ,} - разделителители, применяемые к выводу следующего выражения и означающие следующее:; - означает печать сразу после вывода предыдущего выражения; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет. |
| Строка форматов Quick Basic для оператора PRINT USING | |
|---|---|
| Символ | Назначение |
| Символы формата для числовых выражений | |
| # | Позиция числа |
| . | Позиция десятичной точки |
| , | Запятая, помещённая слева от десятичной точки, печатает запятую перед каждой третьей цифрой |
| $$ | Печатает знак доллара перед числом. |
| + | Позиция знака числа |
| ** | Заполняет предшествующие пробелы числа "звёздочками" |
| - | Помещённый после числа, печатает trailing знак для отрицательных символов. |
| ^^^^ | Печатает числа в "научном" ("экспоненциальном") формате |
| **$$ | Комбинация ** and $$. |
| Символы, используемые для форматирования строковых выражений | |
| Печатает всю строку | |
| \ \ | Печатает первые n символов, где n – число пробелов между чёрточками + 2 |
| ! | Печатает только первый символ строки |
| Символы, используемые для печати литеральных символов | |
| _ | Печатает следующий символ форматирования как литерал |
| Любой символ не из этой таблицы печатается как литерал | |
В качестве примера вывода текста средствами Quick Basic смотри пример 6.5 из предыдущей лекции.
Для вывода средствами языка Perl используется функции: , print, printf и write. Их описание смотри ниже.
|
|
| Синтаксис: | |
| Описание: | Вне тела функции eval выводит значения элементов списка, заданных параметром: СПИСОК, в стандартный STDERR и завершает выполнение сценария Perl с текущим значением специальной переменной $!. Если используется в теле функции eval(), то сообщение об ошибке помещается в переменную: $@, и функция eval завершается неопределённым значением. Такое поведение позволяет использовать функцию: - для генерирования исключительных ситуаций. |
print |
|
| Синтаксис: | print ДЕСКРИПТОР СПИСОК print СПИСОК; print |
| Описание: | Выводит список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT, или текущий файл, установленный функцией select(). Если отсутствует параметр: СПИСОК, то выводится содержимое специальной переменной: $_. |
printf |
|
| Синтаксис: | printf ДЕСКРИПТОР ФОРМАТ, СПИСОК printf ФОРМАТ, СПИСОК |
| Описание: | Выводит форматированный список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT, или текущий файл, установленный функцией select(). Параметр: ФОРМАТ - представляет собой строку, содержащую символы форматирования, полностью совпадающие с символами форматирования системной функции UNIX printf (смотри приложение №2 к лекции 6 данного курса). |
write |
|
| Синтаксис: | write ДЕСКРИПТОР write |
| Описание: | Осуществляет форматированный вывод в файл, связанный с заданным дескриптором: ДЕСКРИПТОР, в соответствии с определённым форматом. Если параметр: ДЕСКРИПТОР - не задан, то выводит в стандартный файл вывода: STDOUT, - или в файл, выбранной функцией: select(). |
Информацию о форматированном выводе данных смотри, например, в [18].
Пример 7.3.
#!perl -w
# File ex07003.pl
# Данный пример тестировался интерпретатором языка
# ActiveState Perl 5.8.0.
#
# Данная функция запрашивает имя и возраст пользовател
# и выводит приветствие.
#
# Определение строки форматирования:
$format_out = "Добрый день, %s!\nВаш возраст, %-.10s, - %3d лет\n";
# Ввод персональных данных
print "\nВведите своё имя: ";
$name = <>;
print "\nВведите Ваш возраст: ";
$age = <>;
# Выбор приветстви
if( $age < 40 )
{
printf $format_out, "Молодой человек", $name, $age;
}
else
{
printf $format_out, "Папаша", $name, $age;
}
# Завершение работы
print STDERR "\nPress key Enter to Exit...";
$junk = <STDIN>;
# Конец файла
Для вывода в
| ФУНКЦИЯ: | PRINT |
| НАЗНАЧЕНИЕ: | Осуществляет неформатированный вывод списка переменных в поток; |
| СИНТАКСИС: | print ДЕСКРИПТОР СПИСОК print СПИСОК |
| ОПИСАНИЕ: | Выводит список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT ;Примечание: В конец вывода переменной |
| ФУНКЦИЯ: | PRINT |
| НАЗНАЧЕНИЕ: | Осуществляет форматированный вывод списка переменных в поток; |
| СИНТАКСИС: | print ДЕСКРИПТОР, '"строка форматов"' % (СПИСОК) print '"строка форматов"' % (СПИСОК) |
| ОПИСАНИЕ: | Выводит список строковых данных в файл, связанный с дескриптором: ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDOUT. Строка форматов имеет то же описание параметров, как и в функции printf на языке Си (смотри Приложение №2 к лекции 6 данного курса); |
| ФУНКЦИЯ: | STR |
| НАЗНАЧЕНИЕ: | Вывод символов в поток; |
| СИНТАКСИС: | str( object ) |
| ОПИСАНИЕ: | Возвращает строку, содержащую представление object для печати. Функция расставляет или убирает кавычки, то есть выполняет оформление объекта. Основное отличие от функции repr() в том, что данная функция формирует строку для человеческого восприятия, а не для eval(). |
| ФУНКЦИЯ: | REPR |
| НАЗНАЧЕНИЕ: | Вывод символов в поток; |
| СИНТАКСИС: | repr( object ) |
| ОПИСАНИЕ: | Возвращает строку, содержащую представление object для печати. Основная задача функции - формирование строки для использования в функции eval(). |
В Питоне имеется несколько способов форматированного ввода/вывода. Самый простой из них - оператор print, печатающий переменные и строковые константы, применяя формат по умолчанию. Другой простой способ вывода данных на дисплей - функция str(), которая выводит любую переменную, используя также формат по умолчанию. Есть также функция repr(), которая выводит данные в машинном(неформатированном) виде. Некоторые типы переменных, которые не могут должным образом отформатироваться функцией str(), обрабатываются схоже с repr().
Пример 7.4.
# Пример тестировался на интерпретаторе
# ActiveState Python 2.5
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> 's' # Такое выражение значит то же, что и repr(s)
"'Hello, world.'"#Машинный формат
>>> str(0.1) # Переменная с точкой
'0.1'
>>> '0.1' # repr(0.1)
'0.10000000000000001' # Ошибка округления чисел с точкой
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'Значение x равно' + `x` + ', а значение y равно ' + `y` + '...'#Использование операции
... #строк для форматировани
>>> print s
Значение x равно 32.5, а y равно 40000...
>>> # Заключение переменных в кавычки работает для всех типов данных
... p = [x, y]
>>> ps = repr(p)
>>> ps
'[32.5, 40000]'
>>> # Окружение строки дополнительными кавычками
... hello = 'hello, world\n'
>>> hellos = `hello`
>>> print hellos
'hello, world\n'
>>> # Можно заключать в кавычки и константные списки
... `x, y, ('Linux', 'BSD')`
"(32.5, 40000, ('Linux', 'BSD'))"
Для форматированного вывода удобно использовать выравнивание по краю. Для этой цели в Питоне предусмотрены следующие функции модуля string: string.rjust(), string.ljust() и string.center(). Эти функции возвращают выровненную строку по правому и левому краю, а также по центру до определённого количества символов. Они принимают два параметра: саму строку и количество символов, зарезервированных под строку(если строка длиннее, то она выводится как есть, а для удаления лишних символов воспользуйтесь "string.ljust(x, n)[0:n]". На примере это выглядит так:
Пример 7.5.
# Пример тестировался на интерпретаторе # ActiveState Python 2.5 >>> import string >>> for x in range(1, 11): ... print string.rjust(`x`, 2), string.rjust(`x*x`, 3), ... # В предыдущем операторе print была поставлена в конце запятая, перевода строки нет: ... print string.rjust(`x*x*x`, 4) Для этой же цели можно использовать оператор print со строкой формата, аналогичной Си (смотри приложение №2 к лекции 06 данного курса): >>> for x in range(1,11): ... print '%2d %3d %4d' % (x, x*x, x*x*x) # %d означает целое число
Пример 7.6.
#! %PYTHON%/python # -*- coding: cp866 -*- # # Пример тестировался на интерпретаторе # ActiveState Python 2.5 # # File ex07006.pl # Данная функция запрашивает имя и возраст пользовател # и выводит приветствие. # def ex07006(): # Определение строки форматирования: format_out0 = 'Добрый день, %s!' format_out1 = 'Ваш возраст, %-.10s,' format_out2 = ' - %3d лет' # Ввод персональных данных name = raw_input( 'Введите своё имя: ' ) age = int( raw_input( 'Введите Ваш возраст: ' ) ) # Выбор приветстви if( age < 40 ): print format_out0 % 'Молодой человек' else: print format_out0 % 'Папаша' print format_out1 % name, print format_out2 % age # Завершение работы junk = raw_input( 'Press key Enter to Exit...') # Конец файла
Для вывода данных в
| ФУНКЦИЯ: | write |
| СИНТАКСИС: | write( Variable|Constant* ), где Variable - "связанная" переменная любого типа, Constant - константа любого типа. Список выводимых переменных и констант может быть произвольной длины. Элементы списка разделяются запятыми; |
| НАЗНАЧЕНИЕ: | Выводит данное количество аргументов; |
| ОПИСАНИЕ: | Функция write записывает данные константы или переменные в текущее окно или на текущее устройство вывода. Функция write может быть связана с произвольным ненулевым числом аргументов. Аргументы в функции write не могут быть свободными переменными. |
| ШАБЛОНЫ: | (i, i*); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех (истина); |
| ОШИБКИ: | * 2001 Не могу выполнить операцию записи. |
| ФУНКЦИЯ: | nl |
| СИНТАКСИС: | nl |
| НАЗНАЧЕНИЕ: | Переводит вывод текста на экране на новую строку; |
| ШАБЛОНЫ: | Нет; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех; |
| ОШИБКИ: | Нет; |
| ФУНКЦИЯ: | writef |
| СИНТАКСИС: | writef( FormatString, Variable|Constant* ), гдеFormatString - строковая переменная, указывающая на формат чисел выводимых данных,Variable и Constant - те же аргументы, что и для функции write ; |
| НАЗНАЧЕНИЕ: | Выводит список аргументов функций, форматы которых записаны в строке форматов; |
| ОПИСАНИЕ: | Функция writef выполняет форматированный вывод. Аргументы Арг1 - АргN могут быть константами или переменными, которые относятся к %-m.pf |
| ШАБЛОНЫ: | (i, i, i*); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Всегда успех (истина); |
| ОШИБКИ: | * 1025 Слишком много аргументов в формате строки. |
Назначение символов в формате спецификации смотри в Приложении №2 к лекции 6 данного курса.
Ниже рассмотрен пример программы на языке Turbo Prolog, реализующей алгоритм из примера 7.2.
Пример 7.7.
/* Файл EX07007.PRO */ /* Пример тестировался в системе программировани Borland Turbo Prolog 2.0. */ /* Данная функция запрашивает имя и возраст пользовател и выводит приветствие */ domains /* Описываем переменные */ Age = integer Name = string predicates output_age( Age ) clauses /* Определяем правило output_age */ output_age( Age ) :- Age < 40, write( "Молодой человек!" ), !. output_age( Age ) :- write( "Папаша!" ). goal /* Описываем алгоритм работы программы */ write( "Введите Ваше имя: " ), readln( Name ), write( "Введите Ваш возраст: " ), readint( Age ), write( "Добрый день, "), output_age( Age ), nl, writef( "Ваш возраст, %s, -- %3d лет", Name, Age ),nl, write( "Press key Enter to exit..." ), readchar( _ ).
Вывод в
Для вывода данных в
| ФУНКЦИЯ | WRITE |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Std[Out|Err].Write( String ), где String - выводимая на экран строка текста; |
| НАЗНАЧЕНИЕ: | Выводит строку символов на экран; |
| ОПИСАНИЕ: | Записывает в поток StdOut или StdErr строку string (без символа конца строки); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Только сценарии CScript; |
| ФУНКЦИЯ | WRITEBLANKLINES |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Std[Out|Err].WriteBlankLines(n), где n - число пропущенных (пустых) строк; |
| НАЗНАЧЕНИЕ: | Печать пустых строк на экране; |
| ОПИСАНИЕ: | Записывает в поток StdOut или StdErr заданное параметром n число пустых строк; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Только сценарии CScript; |
| ФУНКЦИЯ | WRITELINE |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Std[Out|Err].WriteLine( String ), где String - выводимая на экран строка текста; |
| НАЗНАЧЕНИЕ: | Выводит строку символов на экран; |
| ОПИСАНИЕ: | Записывает в поток StdOut или StdErr строку string (вместе с символом конца строки) |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Только сценарии CScript; |
| ФУНКЦИЯ | ECHO |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | WScript.Echo String[, String], где String - Выводимая (-ые) строка текста или переменные; |
| НАЗНАЧЕНИЕ: | Вывод строки текста; |
| ОПИСАНИЕ: | Функция выводит строки символов, одну или нескольких переменных в поток вывода StdOut или диалоговое окно. При этом производится приведение типов; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Нет; |
| ПЕРЕНОСИМОСТЬ: | Все сценарии; |
| КОНСТАНТА | vbCrLf |
| ОПРЕДЕЛЕНА В: | WScript; |
| СИНТАКСИС: | vbCrLf [ …] |
| НАЗНАЧЕНИЕ: | Вставляет в текущую строку Visual Basic Script псевдосимвол " ; |
| ПЕРЕНОСИМОСТЬ: | Все сценарии, только при выводе строк и переменных; |
Замечание: запись Std[Out|Err] означает "или StdOut, или StdErr", то есть функция перенаправляет вывод или в
Пример 7.8.
'***************************************************************** '* Имя: ex07008.vbs '* Язык: VBScript Microsoft Windows XP '* Описание: Организация простого диалога с проверкой услови '***************************************************************** Dim Name, Age, junk ' Выводим диалоги WScript.StdOut.Write( "Введите Ваше имя: " ) Name = WScript.StdIn.ReadLine WScript.StdOut.Write( "Введите Ваш возраст: " ) Age = WScript.StdIn.ReadLine ' Проверка условий и вывод приветстви If Age < 40 Then WScript.StdOut.WriteLine( "Добрый день, Молодой человек!" ) Else WScript.StdOut.WriteLine( "Добрый день, Папаша!" ) End if WScript.StdOut.WriteLine( "Ваш возраст, " Name " - " Age " лет" vbCrLf ) ' Выход из программы Wscript.Echo "Press key Enter to exit..." junk = WScript.StdIn.ReadLine() ' Конец программы
Вывод в
println ;print.Рассмотрим эти функции поподробнее.
| ФУНКЦИЯ | PRINTLN |
| ОПРЕДЕЛЕНА В: | Класс System |
| СИНТАКСИС: | System.out.println( "Элемент_1"{ + "Элемент_n"} ) ; где "Элемент_1" - "Элемент_n" - Заключённые в кавычки строки, переменные, константы (например, числа) или практически любой объект, определённый в языке Java; |
| НАЗНАЧЕНИЕ: | Функция выводит один или несколько элементов в |
| ОПИСАНИЕ: | Вывод текстовой строки из текстовых (или преобразованные в текстовую форму) переменных, констант и литералов. Переменные разделяются знаками "+", в конце автоматически вставляется символ " ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Функция не возвращает значений; |
| ПЕРЕНОСИМОСТЬ: | Везде; |
| ФУНКЦИЯ | PRINT |
| ОПРЕДЕЛЕНА В: | Класс System |
| СИНТАКСИС: | System.out.print( "Элемент_1"{ + "Элемент_n"} ) ; где "Элемент_1" - "Элемент_n" - Заключённые в кавычки строки, переменные, константы (например, числа) или практически любой объект, определённый в языке Java; |
| НАЗНАЧЕНИЕ: | Функция выводит один или несколько элементов в |
| ОПИСАНИЕ: | Вывод текста или преобразованных в текст объектов, констант и литералов. Переменные выводятся, начиная с текущей позиции курсора, разделяются знаками "+", в конце строка не завершается символом " (то есть новый вывод будет осуществляться с той же строки); |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Функция не возвращает значений; |
| ПЕРЕНОСИМОСТЬ: | Везде; |
Пример 7.9.
/* File ex07009.java */
/* Функция реализует простейший диалог между ЭВМ и человеком с условием */
/* Данный пример тестировался на компиляторе Sun J2EE SDK 1.6) */
/* Данный пример требует наличие компилированного класса SavitchIn */
import java.io.*;
import java.util.*;
// Файл ex07009.java
public class ex07009
{
public static void main( String[] args )
{
/* Определение переменных */
int Age;
String Name, junk;
/* Начало диалога (ввод данных пользователя */
System.out.print("Введите Ваше имя: ");
Name = SavitchIn.readLine();
System.out.print( "Введите Ваш возраст: " );
Age = SavitchIn.readLineInt();
/* Проверка условия и вывод диалога */
if( Age < 40 )
System.out.println( "Добрый день, Молодой человек!" );
else
System.out.println( "Добрый день, Папаша!" );
System.out.println( "Ваш возраст, " + Name + ", - " + Age +" лет." );
/* Завершение работы программы */
System.out.println( "Press key Enter to exit..." );
junk = SavitchIn.readLine();
}
}
На данной лекции Вы познакомились с описанием функций буферизированного (потокового) вывода в
С помощью полученных знаний Вы можете писать диалоговые программы, в том числе и первые "диалоговые
Однако для того чтобы писать более "продвинутые" программы, требующие работы с файлами, Вам потребуются функции создания, закрытия и манипулирования файловыми потоками. Об этом - в следующих лекциях.
Функции вывода данных в
| ФУНКЦИЯ | printf |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int printf( format_string[, arguments…] ); char *format_string; |
| НАЗНАЧЕНИЕ: | Функция печатает символы и формирует и печатает задаваемые аргументами значения в stdout ). Она имеет переменное число параметров; |
| ОПИСАНИЕ: | Строка описания формата вывода, format_string, состоит из обычных символов, escape и других управляющих последовательностей, а также Обычные символы и |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | Число напечатанных символов. |
| ФУНКЦИЯ: | puts |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int puts( s ); const char *; |
| НАЗНАЧЕНИЕ: | Функция выводит строку в поток stdout ; |
| ОПИСАНИЕ: | Функция puts копирует строку символов с нулевым окончанием '\0' в поток стандартного вывода stdout, причём добавляет в конец символ перехода на новую строку (т.е. заменяет символ '\0' на строку символов "\r\n\0") ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | При успешном завершении функция puts возвращает ненулевое значение. В противном случае возвращается значение EOF ; |
| ПЕРЕНОСИМОСТЬ: | Данная функция поддерживается в операционных системах, основанных на UNIX, содержится в стандарте ANSI C. |
| ФУНКЦИЯ: | putc |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int putc( c, stream ); int c; FILE *stream; |
| НАЗНАЧЕНИЕ: | Функция выводит символ в поток; |
| ОПИСАНИЕ: | Функция putc представляет собой stream ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | При успешном завершении функция возвращает символ c. При возникновении ошибки функция возвращает значение EOF (конец файла); |
| ПЕРЕНОСИМОСТЬ: | Функция поддерживается в операционных системах UNIX, стандарте ANSI C, и определена в стандарте Кернигана и Ритчи. |
| ФУНКЦИЯ: | putchar |
| ОПРЕДЕЛЕНА В: | <stdio.h> |
| СИНТАКСИС: | int putchar( c ); int c; |
| НАЗНАЧЕНИЕ: | Функция выводит символ в поток stdout ; |
| ОПИСАНИЕ: | putchar - это макрокоманда, определённая как putc( c, stdout) ; |
| ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: | При успешном завершении функция возвращает выведенный символ c. При ошибке она возвращает EOF ; |
| ПЕРЕНОСИМОСТЬ: | Функция поддерживается в операционных системах UNIX, стандарте ANSI C, и определена в стандарте Кернигана и Ритчи. |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.