⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http:^^www.cs.wisc.edu^~tick^cs302^week5.html

📁 This data set contains WWW-pages collected from computer science departments of various universities
💻 HTML
字号:
Date: Wed, 11 Dec 1996 22:34:16 GMTServer: NCSA/1.5Content-type: text/htmlLast-modified: Sun, 06 Oct 1996 22:35:37 GMTContent-length: 13997<HTML><HEAD><TITLE>CS 302 Section 70 Lecture Notes - Weeks 5</TITLE></HEAD><BODY><H2><!WA0><!WA0><!WA0><A HREF="http://www.cs.wisc.edu/~tick/cs302.html#text" ><!WA1><!WA1><!WA1><IMG SRC="http://www.cs.wisc.edu/~tick/icons/arrowleft.gif" WIDTH=15 HEIGHT=15></A> Lecture Notes - Week 5</H2><HR><DL>   <DT>Topic:   <DD>Formatted input and output. Reading and writing files.<P>   <DT>Text:   <DD>Chp. 5.1, 5.3, 5.5 - 5.7<P>   <DT>Notes:   <DD>   <HR>   <CENTER>   <H3>Formatted Output</H3>   </CENTER>   <UL>      <LI>So for we have been using <EM>unformatted</EM> output.      <LISTING>	PRINT *, 'Total = ', TOT      </LISTING>      prints      <LISTING>	Total =      12345      </LISTING>      with extraneous spaces in front of the number.      <LI>The <TT>*</TT> specifies to use the default output format to print the items on the line.      <LI>Alternatively, replace the <TT>*</TT> with the label of a <TT>FORMAT</TT> statement which describes how to print the items.      <LISTING>	     PRINT 15, 'Total = ', TOT	15   FORMAT(1X, A, I5)      </LISTING>      prints      <LISTING>	Total = 12345      </LISTING>      <LI>The <TT>FORMAT</TT> statement should immediately follow the <TT>PRINT</TT> statement.      <LI>The items in the <TT>FORMAT</TT> statement are called <EM>edit descriptors</EM> and describe the appearance of the line.      <LI>Each item in the <TT>PRINT</TT> statement has a corresponding edit descriptor in the <TT>FORMAT</TT> statement specifying how to print it.   </UL>   <H4>Edit Descriptors</H4>   <UL>      <LI>The first item in the <TT>FORMAT</TT> statement describes the <EM>line spacing</EM>.  The most common is <EM>single spacing</EM> specified by <TT>1X</TT>.      <LISTING>	15   FORMAT(1X, .... )      </LISTING>      <LI>The edit descriptor depends on the <EM>type</EM> of the value being printed.      <UL>         <LI><TT>Iw</TT>	- <TT>INTEGER</TT>         <LI><TT>Fw.d</TT>	- <TT>REAL</TT>         <LI><TT>Aw</TT>	- <TT>CHARACTER</TT> (i.e. strings)         <LI><TT>nX</TT>	- insert spaces between items      </UL>   </UL>   <H4>INTEGER - Iw</H4>   <UL>      <LI><TT>INTEGER</TT>s are printed <EM>right-justified</EM> in <TT>w</TT> columns.      <LI>If the <TT>INTEGER</TT> is shorter than <TT>w</TT> columns wide then it is printed with leading blanks (indicated by a #).      <LISTING>	     TOT = 87	     PRINT 15, 'Total=',TOT,'cents'	15   FORMAT(1X, A, I4, A)      </LISTING>prints      <LISTING>	Total=##87cents	      ^^^^      </LISTING>      <LI>Negative <TT>INTEGER</TT>s are printed with a leading minus "-" sign.      <LI>If the <TT>INTEGER</TT> is longer than <TT>w</TT> columns wide (i.e. it doesn't fit in the width specified) then "*"s are printed instead.      <LISTING>	     TOT = 12345	     PRINT 15, TOT	15   FORMAT(1X, I4)      </LISTING>      prints      <LISTING>	****      </LISTING>   </UL>   <H4>REAL - Fw.d</H4>   <UL>      <LI><TT>REAL</TT>s are printed <EM>right-justified</EM> in <TT>w</TT> columns and <EM>rounded</EM> to <TT>d</TT> decimal places.      <LISTING>	     MASS = -87.4395	     PRINT 15, MASS	15   FORMAT(1X, F8.2)      </LISTING>      prints      <LISTING>	##-87.44	^^^^^^^^      </LISTING>      <LI>Be sure to allow space for the sign (if negative) and decimal place, both of which take up an additional column each.   </UL>   <H4>CHARACTER - Aw</H4>   <UL>      <LI><TT>CHARACTER</TT> strings are printed <EM>right-justified</EM> in <TT>w</TT> columns.      <LI>If the string is shorter than <TT>w</TT> columns then it is printed with leading blanks (indicated by a #).      <LISTING>	     CHARACTER *11 NAME	     NAME = 'Christopher'	     PRINT 15, NAME	15   FORMAT(1X, A15)      </LISTING>      prints      <LISTING>	####Christopher      </LISTING>      <LI>If the string is longer than <TT>w</TT> columns then it is <EM>left-justified</EM> and the characters at the end are truncated.      <LISTING>	     PRINT 15, NAME	15   FORMAT(1X, A8)      </LISTING>      prints      <LISTING>	Christop      </LISTING>      <LI>Use <TT>A</TT> with no width specified to print the string in the same number of columns as its declared length.      <LISTING>	     PRINT 15, NAME	15   FORMAT(1X, A)	(same as A11)      </LISTING>   </UL>   <H4>Insert Spaces - nX</H4>   <UL>      <LI>Spaces/blanks can be inserted between any two items in the <TT>PRINT</TT> statement.      <LISTING>	     PRINT 15,'Hello','there','world'	15   FORMAT(1X, A, 2X, A, 3X, A)      </LISTING>      prints      <LISTING>	Hello##there###world	     ^^     ^^^      </LISTING>   </UL>   <H4>PRINT Statement</H4>   <UL>      <LI>The edit specifiers can be inserted directly into the <TT>PRINT</TT> statement without using a separate <TT>FORMAT</TT> statement and label.      <LISTING>	NAME = 'Christopher'	PRINT '(1X, A15)', NAME      </LISTING>      <LI>The edit descriptors are enclosed in brackets and apostrophes.   </UL>   <HR>   <CENTER>   <H3>Formatted Input</H3>   </CENTER>   <UL>      <LI>Unformatted input:      <OL>         <LI>All the data on the line has to be read into variables.         <LI>Multiple values on the same line must be separated by spaces.         <LI>Strings must be entered enclosed in apostrophes.      </OL>      <LI>If the format of the input data does not match these requirements then <EM>formatted</EM> input must be used instead.      <LI>Example: multiple values separated by a <EM>hyphen</EM>.      <LISTING>	Please enter today's date:	10-08-95      </LISTING>      <LI><STRONG>IMPORTANT</STRONG> - Formatted input specifies which columns are read in and which are skipped.      <LI>Use a <TT>FORMAT</TT> statement with edit descriptors to specify the type and width of each value to read in.      <LISTING>	     READ 15, MONTH, DAY, YEAR	15   FORMAT(I2, 1X, I2, 1X, I2)      </LISTING>      <LI>Note: no line spacing is specified for formatted <EM>input</EM>.   </UL>   <H4>Edit Descriptors</H4>   <UL>      <LI>Same descriptors as formatted output.      <UL>         <LI><TT>Iw</TT>	- <TT>INTEGER</TT>         <LI><TT>Fw.d</TT>	- <TT>REAL</TT>         <LI><TT>Aw</TT>	- <TT>CHARACTER</TT> (i.e. strings)         <LI><TT>nX</TT>	- skip characters between values      </UL>   </UL>   <H4>INTEGER - Iw</H4>   <UL>      <LI>Read only the next <TT>w</TT> digits as an <TT>INTEGER</TT> value.      <LISTING>	     READ 15, NUM	15   FORMAT(I3)      </LISTING>	User enters      <LISTING>	12345				(NUM = 123)	^^^      </LISTING>	User enters      <LISTING>	-12345				(NUM = -12)	^^^      </LISTING>      <LI>Only <TT>w</TT> digits are read. Any additional digits are <EM>ignored</EM>.   </UL>   <H4>REAL - Fw.d</H4>   <UL>      <LI>Read only the next <TT>w</TT> digits as an <TT>REAL</TT> value, where the last <TT>d</TT> digits are to the right of the decimal point.      <LISTING>	     READ 15, PRICE	15   FORMAT(F6.2)      </LISTING>	User enters      <LISTING>	123.4567		(PRICE = 123.45)	^^^^^^      </LISTING>      <LI><STRONG>WARNING</STRONG>: The decimal place is optional. If missing, the computer uses <TT>d</TT> to determine where it <EM>should</EM> have been. User enters      <LISTING>	1234567		(PRICE = 1234.56 !)	^^^^^^      </LISTING>      <LI>If the user does enter a decimal point then it over-rides the value of <TT>d</TT>. User enters      <LISTING>	12.34567		(PRICE = 12.345)	^^^^^^      </LISTING>      <LI>Only <TT>d</TT> digits are read. Any additional digits are <EM>ignored</EM>.   </UL>   <H4>CHARACTER - Aw</H4>   <UL>      <LI>Read the next <TT>w</TT> letters as a <TT>CHARACTER</TT> string and store them <EM>exactly</EM> as entered.      <LISTING>	     CHARACTER *10 NAME	     READ 15, NAME	15   FORMAT(A7)      </LISTING>	User enters      <LISTING>	Kilroy1994junior	(NAME='Kilroy1###')	^^^^^^^      </LISTING>      <LI>If <TT>w</TT> is not specified then read in the same number of characters as the declared length of the variable.      <LISTING>	     READ 15, NAME	15   FORMAT(A)      </LISTING>	User enters      <LISTING>	Kilroy1994junior	(NAME='Kilroy1994')	^^^^^^^^^^      </LISTING>      <LI>Note: The string is <STRONG>not</STRONG> enclosed by apostrophes!      <LISTING>	READ '(A)', NAME      </LISTING>	User enters      <LISTING>	Kilroy			(NAME='Kilroy#####')      </LISTING>   </UL>   <H4>Skip Characters - nX</H4>   <UL>      <LI>Skip over <TT>n</TT> characters in the input (e.g. a comma or hyphen).      <LISTING>	     CHARACTER *10 NAME	     READ 15, NAME, YEAR, FEES	15   FORMAT(A, 1X, I4, 3X, F6.2)      </LISTING>	User enters      <LISTING>	Kilroy,Joe,1997###1368.25	^^^^^^^^^^^^^^^^^^^^^^^^	NAME = 'Kilroy,Joe'	YEAR = 1997	FEES =  1368.2      </LISTING>   </UL>   <HR>   <CENTER>   <H3>Reading and Writing Files</H3>   </CENTER>   <UL>      <LI><EM>Interactive processing</EM> reads data from the keyboard and prints the results to the screen.      <LI><EM>Batch processing</EM> reads data directly from a file on disk and stores the results in another file on disk.   </UL>   <H4>OPEN Statement</H4>   <UL>      <LI>Before you can read or write to a file it must be <EM>opened</EM>.      <LI>The <TT>OPEN</TT> statement specifies the <EM>name</EM> of the file, assigns it a <EM>unit nummber</EM> and specifies whether the file will be <EM>read</EM> from or <EM>written</EM> to.      <LISTING>	OPEN(UNIT=1, FILE='MYDATA', STATUS='OLD')	OPEN(UNIT=2, FILE='RESULTS', STATUS='NEW')      </LISTING>      <LI>To read from a file <TT>STATUS</TT> is 'OLD'.      <LI>To write to a file <TT>STATUS</TT> is 'NEW'.      <LI>Any unique number can be used for the <TT>UNIT</TT> number, except 5 and 6 which are reserved for the keyboard and screen.   </UL>   <H4>Reading From Files</H4>   <UL>      <LI>Use a modified <TT>READ</TT> statement to read from a file rather than the keyboard. Note: no comma before the list of variables.      <LISTING>	READ (unit-number, *) variables	READ (1, *) X, Y, Z      </LISTING>      <LI>Must <TT>OPEN</TT> the file before you can read from it.      <LI>Can also read formatted data from files.      <LISTING>	     READ (1, 15) X, Y, Z	15   FORMAT (3F6.2)      </LISTING>      <LI>If the line contains more data than is read in then the rest of the line is ignored. e.g.      <LISTING>	131.92-21.67  18.412345	^^^^^^^^^^^^^^^^^^-----      </LISTING>      <LI>If the line contains less data than is read in the the <EM>next</EM> line is also read in. e.g.      <LISTING>	131.92-21.67	^^^^^^^^^^^^	18.412345	^^^^^^---      </LISTING>   </UL>   <H4>Writing To Files</H4>   <UL>      <LI>Use the <TT>WRITE</TT> statement to write to a file rather than the screen. Note: no comma before list of items.      <LISTING>	WRITE (unit-number, *) items	WRITE (2, *) 'The answer is', 42      </LISTING>      <LI>Must <TT>OPEN</TT> the file before you write to it.      <LI>Can also write formatted data to files.      <LISTING>	     WRITE (2, 15) X, Y, Z	15   FORMAT (3F6.2)      </LISTING>   </UL>   <H4>Batch Processing</H4>   <UL>      <LI>Can read/write <EM>several</EM> files at the same time. Each file must have a unique unit number.      <LISTING>	OPEN(UNIT=1, FILE='DATA1', STATUS='OLD')	OPEN(UNIT=2, FILE='DATA2', STATUS='OLD')	OPEN(UNIT=3, FILE='RESULT', STATUS='NEW')	READ (1,*) NUM1	READ (2,*) NUM2	WRITE (3, *) NUM1 + NUM2      </LISTING>      <LI>Can still read from the keyboard and write to the screen at the same time.      <LISTING>	READ (1,*) NUM1	PRINT *, 'Please enter a number'	READ *, NUM2	WRITE (3, *) NUM1 + NUM2      </LISTING>      <LI>If you are reading from a file you don't need prompts (redundant).   </UL>   <H4>End-of-File (writing)</H4>   <UL>      <LI>When you have finished writing everything to an output file, write a special <EM>end-of-file</EM> marker at the end.      <LISTING>	END FILE (UNIT=3)      </LISTING>      <LI>Must be the last thing written to the file.   </UL>   <H4>CLOSE Statement</H4>   <UL>      <LI>When you have finished using either an input or an output file then <TT>CLOSE</TT> it.      <LISTING>	READ (1, *) NUM1	READ (2, *) NUM2	WRITE (3, *) NUM1 + NUM2	END FILE (UNIT=3)	CLOSE (UNIT=1)	CLOSE (UNIT=2)	CLOSE (UNIT=3)      </LISTING>      <LI>Usually these are last few statements in your program before the <TT>STOP</TT> and <TT>END</TT>.   </UL>   <H4>End-of-File (reading)</H4>   <UL>      <LI>Unlike the keyboard where the user can always keep typing, eventually all the data in a file will be read in.      <LI>When there's no more data to be read, the computer will reach the <EM>end-of-file marker</EM>.  Generally you want to do something special when this happens; for example, exit a loop.      <LI>A modified <TT>READ</TT> statement jumps to a <TT>CONTINUE</TT> statement when it reaches the end-of-file marker.      <LISTING>	      OPEN(UNIT=1, FILE='DATA', STATUS='OLD')	      SUM = 0	C     Add up all the numbers in the file	      DO WHILE (.TRUE.)	         READ (1, *, END=20) NUM	         SUM = SUM + NUM	      END DO	C     Reached the end-of-file so print the sum	 20   CONTINUE	      PRINT *, SUM	      CLOSE (UNIT=1)	      STOP	      END      </LISTING>      <LI>Normally the <TT>CONTINUE</TT> is the first statement after the end of a <TT>DO/END DO</TT> loop.      <LI>Similar to a <TT>GOTO</TT> statement to exit the loop.      <LI>Exits the loop when the <TT>READ</TT> statement is re-executed and there's no more data to read; i.e. <STRONG>not</STRONG> immediately after the last number is read.   </UL></DL></BODY><HR><ADDRESS><H5>Copyright &copy 1996 Modified from <!WA2><!WA2><!WA2><A HREF="http://www.cs.wisc.edu/~bestor/bestor.html">Gareth S. Bestor</A> (<!WA3><!WA3><!WA3><A HREF="mailto:bestor@cs.wisc.edu">bestor@cs.wisc.edu</A>).  Last modified October 6, 1996.</H5></ADDRESS></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -