Changes in doc/user/user.tex [08065aa4:9e0a360]
- File:
-
- 1 edited
-
doc/user/user.tex (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/user/user.tex
r08065aa4 r9e0a360 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Tue Jun 25 08:51:33201914 %% Update Count : 38 7113 %% Last Modified On : Sat Jun 15 16:29:45 2019 14 %% Update Count : 3847 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 3346 3346 3347 3347 3348 \section{ Stream I/OLibrary}3349 \label{s: StreamIOLibrary}3348 \section{I/O Stream Library} 3349 \label{s:IOStreamLibrary} 3350 3350 \index{input/output stream library} 3351 3351 \index{stream library} 3352 3352 3353 The goal of \CFA streaminput/output (I/O) is to simplify the common cases\index{I/O!common case}, while fully supporting polymorphism and user defined types in a consistent way.3354 Stream I/O can be implicitly or explicitly formatted.3355 I mplicit formatting means \CFA selects the output or input format for values that match with the type of a variable.3356 Explicit formatting means additional information is specified to augment how an output or input of value is interpreted.3357 \CFA formatting is a cross between C ©printf© and \CC ©cout© manipulators, and Python implicit spacing and newline.3358 Specifically: 3353 The goal of \CFA input/output (I/O) is to simplify the common cases\index{I/O!common case}, while fully supporting polymorphism and user defined types in a consistent way. 3354 \CFA I/O combines ideas from C ©printf©, \CC, and Python. 3355 I/O can be unformatted or formatted. 3356 Unformatted means \CFA selects the output or input format for values that match with the type of a variable. 3357 Formatted means additional information is specified to augment how an output or input of value is interpreted. 3358 \CFA formatting is a cross between C ©printf© and \CC ©cout© manipulators. 3359 3359 \begin{itemize} 3360 3360 \item 3361 ©printf© /Pythonformat codes are dense, making them difficult to read and remember.3361 ©printf© format codes are dense, making them difficult to read and remember. 3362 3362 \CFA/\CC format manipulators are named, making them easier to read and remember. 3363 3363 \item 3364 ©printf© /Pythonseparates format codes from associated variables, making it difficult to match codes with variables.3364 ©printf© separates format codes from associated variables, making it difficult to match codes with variables. 3365 3365 \CFA/\CC co-locate codes with associated variables, where \CFA has the tighter binding. 3366 3366 \item 3367 Format manipulators in \C FA have local effect, whereas \CC have global effect, except ©setw©.3367 Format manipulators in \CC have global rather than local effect, except ©setw©. 3368 3368 Hence, it is common programming practice to toggle manipulators on and then back to the default to prevent downstream side-effects. 3369 3369 Without this programming style, errors occur when moving prints, as manipulator effects incorrectly flow into the new location. 3370 3370 (To guarantee no side-effects, manipulator values must be saved and restored across function calls.) 3371 \item3372 \CFA has more sophisticated implicit spacing between values than Python, plus implicit newline at the end of a print.3373 3371 \end{itemize} 3374 3372 The \CFA header file for the I/O library is \Indexc{fstream.hfa}. 3375 3373 3376 For implicit formatted output, the common case is printing a seriesof variables separated by whitespace.3374 For unformatted output, the common case is printing a sequence of variables separated by whitespace. 3377 3375 \begin{cquote} 3378 \begin{tabular}{@{}l@{\hspace{ 2em}}l@{\hspace{2em}}l@{}}3379 \multicolumn{1}{c@{\hspace{ 2em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{\CC}} & \multicolumn{1}{c}{\textbf{Python}} \\3376 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 3377 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{\CC}} \\ 3380 3378 \begin{cfa} 3381 3379 int x = 1, y = 2, z = 3; … … 3387 3385 cout << x ®<< " "® << y ®<< " "® << z << endl; 3388 3386 \end{cfa} 3389 &3390 \begin{cfa}3391 x = 1; y = 2; z = 33392 print( x, y, z )3393 \end{cfa}3394 3387 \\ 3395 \begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]3396 1® ®2® ®33397 \end{cfa}3398 &3399 3388 \begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt] 3400 3389 1® ®2® ®3 … … 3440 3429 There is a weak similarity between the \CFA logical-or operator and the \Index{Shell pipe-operator} for moving data, where data flows in the correct direction for input but the opposite direction for output. 3441 3430 3442 For implicit formattedinput, the common case is reading a sequence of values separated by whitespace, where the type of an input constant must match with the type of the input variable.3431 For unformatter input, the common case is reading a sequence of values separated by whitespace, where the type of an input constant must match with the type of the input variable. 3443 3432 \begin{cquote} 3444 3433 \begin{lrbox}{\LstBox} … … 3447 3436 \end{cfa} 3448 3437 \end{lrbox} 3449 \begin{tabular}{@{}l@{\hspace{3em}}l@{ \hspace{3em}}l@{}}3438 \begin{tabular}{@{}l@{\hspace{3em}}l@{}} 3450 3439 \multicolumn{1}{@{}l@{}}{\usebox\LstBox} \\ 3451 \multicolumn{1}{c@{\hspace{ 2em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{\CC}} & \multicolumn{1}{c}{\textbf{Python}} \\3440 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{\CC}} \\ 3452 3441 \begin{cfa}[aboveskip=0pt,belowskip=0pt] 3453 3442 sin | x | y | z; … … 3457 3446 cin >> x >> y >> z; 3458 3447 \end{cfa} 3459 &3460 \begin{cfa}[aboveskip=0pt,belowskip=0pt]3461 x = int(input()); y = float(input()); z = input();3462 \end{cfa}3463 3448 \\ 3464 3449 \begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt] 3465 3450 ®1® ®2.5® ®A® 3466 3467 3468 3451 \end{cfa} 3469 3452 & 3470 3453 \begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt] 3471 3454 ®1® ®2.5® ®A® 3472 3473 3474 \end{cfa}3475 &3476 \begin{cfa}[showspaces=true,aboveskip=0pt,belowskip=0pt]3477 ®1®3478 ®2.5®3479 ®A®3480 3455 \end{cfa} 3481 3456 \end{tabular} … … 3730 3705 0b0 0b11011 0b11011 0b11011 0b11011 3731 3706 sout | bin( -27HH ) | bin( -27H ) | bin( -27 ) | bin( -27L ); 3732 0b11100101 0b1111111111100101 0b11111111111111111111111111100101 0b ®(58 1s)®1001013707 0b11100101 0b1111111111100101 0b11111111111111111111111111100101 0b(58 1s)100101 3733 3708 \end{cfa} 3734 3709 … … 3807 3782 ® ®4.000000 ® ®4.000000 4.000000 3808 3783 ® ®ab ® ®ab ab 3784 ab ab ab 3809 3785 \end{cfa} 3810 3786 If the value is larger, it is printed without truncation, ignoring the ©minimum©.
Note:
See TracChangeset
for help on using the changeset viewer.