Você está na página 1de 50

glna 1 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA


ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

Sumr|o
CaplLulo 1: noes rellmlnares ................................................................................................... 4
1.1. lnLroduo .......................................................................................................................... 4
1.2. CompuLadores .................................................................................................................... 4
1.3. AlgorlLmos .......................................................................................................................... 4
1.4. ulagramas de lluxo ............................................................................................................ 3
1.3. Llnguagens de rogramao ............................................................................................... 6
1.3.1 Llnguagem de Mqulna ................................................................................................ 6
1.3.2. Llnguagem Slmbllca MonLadora ................................................................................ 7
1.3.3. Llnguagens de Complladores ....................................................................................... 7
1.6.assos no uesenvolvlmenLo de rogramas ......................................................................... 8
CaplLulo 2 - A Llnguagem lorLran: ConcelLos 8slcos ................................................................... 9
2.1 lnLroduo ........................................................................................................................... 9
2.2. ueflnles da Llnguagem .................................................................................................... 9
2.3. lLens slnLLlcos do lorLran .................................................................................................. 9
2.4. CaracLeres usados no lorLran ........................................................................................... 10
2.3. uma vlso geral do lorLran .............................................................................................. 10
2.6. Codlflcao de programas em lorLran ............................................................................. 16
2.6.1. lormaLo Llvre (lorLran90 e posLerlores) ................................................................... 16
2.6.2. lormaLo llxo (lorLran77 e anLerlores) ...................................................................... 17
CaplLulo 3: ConsLanLes, varlvels e Con[unLos ............................................................................ 18
3.1 lnLroduo ......................................................................................................................... 18
3.2. ConsLanLes ........................................................................................................................ 19
3.2.1. ConsLanLes lnLelras .................................................................................................... 19
3.2.2. ConsLanLes 8eals ........................................................................................................ 19
3.2.3. ConsLanLes CaracLeres ............................................................................................... 19
3.3. varlvels ........................................................................................................................... 19
3.3.1. varlvels lnLelras ....................................................................................................... 20
3.3.2 varlvels 8eals ............................................................................................................ 20
3.3.3. varlvels CaracLere .................................................................................................... 20
3.4. Con[unLos .......................................................................................................................... 20
3.4.1 ueclaradores de Con[unLos ........................................................................................ 21
glna 2 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

CaplLulo 4: Lxpresses ................................................................................................................. 23
4.1. lnLroduo ........................................................................................................................ 23
4.2. Lxpresses ArlLmeLlcas ..................................................................................................... 23
4.3. Lxpresses 8elaclonals ..................................................................................................... 24
4.4. Lxpresses Lglcas ............................................................................................................ 23
CaplLulo 3: Comandos de ALrlbulo ........................................................................................... 26
3.1. lnLroduo ........................................................................................................................ 26
CaplLulo 6: Comandos de Lspeclflcao: ueclarao de 1lpos de varlvels ............................... 27
6.1. lnLroduo ........................................................................................................................ 27
6.2. Comando lMLlCl1 ........................................................................................................... 27
6.3. Comandos de Lspeclflcao LxpllclLa ............................................................................... 27
6.3.1. Comando lnLeger ....................................................................................................... 27
6.3.2. Comando 8LAL........................................................................................................... 28
6.3.3. Comando uCu8LL 8LClSlCn ................................................................................... 28
6.3.4. Comando CCMLLx ................................................................................................... 29
6.3.3. Comando LCClCAL ..................................................................................................... 29
6.3.6. Comando CPA8AC1L8 ............................................................................................... 29
CaplLulo 7: Comandos de Lspeclflcao: ueslgnao de reas de Memrla .............................. 30
7.1. lnLroduo ........................................................................................................................ 30
7.2. Comando ulMLnSlCn ...................................................................................................... 30
7.3. Comando CCMMCn ......................................................................................................... 30
7.4. unldades de programas do Llpo MCuuLL ........................................................................ 31
7.3. Comando uSL ................................................................................................................... 31
7.6. Comando A8AML1L8 ..................................................................................................... 32
7.7. Comando 8CC8AM ........................................................................................................ 33
7.8. Comandos ALLCCA1L, uLALLCCA1L L ALLCCA1A8LL ...................................................... 33
CaplLulo 8: Comandos de ConLrole de lluxo e rogramao LsLruLurada .................................. 34
8.1. lnLroduo ........................................................................................................................ 34
8.2. LsLruLuras de ConLrole ...................................................................................................... 33
8.3. Comandos CC 1C ............................................................................................................. 33
8.4. Comandos ll ..................................................................................................................... 36
8.4.1. Comando ll lglco ..................................................................................................... 36
8.4.2. Comandos ll bloco .................................................................................................... 37
glna 3 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

8.4.3. LsLruLuras de ll bloco encalxados ............................................................................. 38
8.3. Comando uC .................................................................................................................... 39
8.3.1. Laos de uC encalxados ............................................................................................ 40
8.6. Comando Lxl1 ................................................................................................................... 40
8.7. Comando C?CLL ................................................................................................................ 40
8.8. Comando CCn1lnuL ........................................................................................................ 40
8.9. Comando S1C ................................................................................................................. 40
8.10. Comando Lnu ................................................................................................................. 41
8.11. Comando SLLLC1 CASL ................................................................................................... 41
CaplLulo 9: Comandos de LnLrada/Salda ..................................................................................... 41
9.1. lnLroduo ........................................................................................................................ 41
9.2. 8eglsLros, Arqulvos e unldades ........................................................................................ 42
9.3. ComponenLes dos Comandos de L/S................................................................................ 43
9.3.2. LlsLa de L/S................................................................................................................. 44
9.4. Comandos 8LAu ............................................................................................................... 43
9.4.1. Comandos 8LAu sequenclals .................................................................................... 43
9.3. Comandos W8l1L (8ln1) ................................................................................................ 46
9.3.1. Comandos W8l1L (8ln1) sequenclals ...................................................................... 46
9.6. Comandos de Condlo de Arqulvos de L/S ..................................................................... 47
9.6.1. Comando CLn ......................................................................................................... 47
9.6.2. Comando CLCSL ........................................................................................................ 48
CaplLulo 10: Comando lC8MA1 e Lspeclflcaes de lormaLo ................................................... 48
10.1. lnLroduo ...................................................................................................................... 48
10.2. Comando lC8MA1 ......................................................................................................... 48
10.3. Lspeclflcaes de lormaLo (Ll) de Converso ............................................................... 49
10.4. Lspeclflcaes de lormaLo de Ldlo ............................................................................. 49
10.3. Lspeclflcaes de lormaLo em Crupos 8epeLldos ......................................................... 30
8efernclas .................................................................................................................................. 30

glna 4 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


Cap|tu|o 1: Noes re||m|nares

1.1. Introduo
- "C que Lodo compuLador pode realmenLe fazer e segulr ordens mulLo slmples, as quals foram
culdadosamenLe conslderadas e refleLldas por um programador e escrlLas em uma llnguagem
de programao, como o lorLran."
1.2. Computadores
- P somenLe 4 Llpos de lnsLrues que um compuLador pode reallzar:
1. ArmazenamenLo e recuperao de lnformaes da memrla,
2. Clculos,
3. LnLrada e salda de dados,
4. ConLrole de programa.

- Lsquema de um compuLador:


1.3. A|gor|tmos
- um "algorlLmo" e um con[unLo de lnsLrues passo-a-passo para resolver um problema.

glna S de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- um algorlLmo correLo deve possulr 3 qualldades:
1. Cada passo no algorlLmo deve ser uma lnsLruo que possa ser reallzada.
2. A ordem dos passos deve ser preclsamenLe deLermlnada.
3. C algorlLmo deve Ler flm.
- Llaborao em grupos de 3 de um algorlLmo para que um dos elemenLos do grupo
desempenhe a segulnLe Larefa:
Salr de uma poslo na sala de aula, que ser deLermlnada pelo professor, aLe o
lnLerrupLor das luzes e provldenclar o desllgamenLo desLas.
As operaes corporals posslvels devem ser deLermlnadas anLes do comeo do Lrabalho em
grupo, em con[unLo enLre os alunos e o professor. Aps o Lermlno do Lrabalho dos grupos, o
professor escolher aleaLorlamenLe Lrabalhos, os ler em voz alLa, deLermlnando se os passos
do algorlLmo esLo conLldos no con[unLo de operaes permlLldas. Se lsLo for verdade, um dos
elemenLos do grupo ler em voz alLa os passos que sero execuLados por ouLro membro do
grupo. SugesLes de operaes permlLldas: camlnhar, glrar o corpo (graus e senLldo),
levanLamenLo de brao (graus e senLldo), movlmenLo de mo, ceguelra do execuLor, eLc.
1.4. D|agramas de I|uxo
- "ulagramas de lluxo" fornecem uma represenLao grflca de um algorlLmo.

- rlnclpals slmbolos de dlagramas de fluxo:



glna 6 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

1.S. L|nguagens de rogramao
- um "programa de compuLador" e um algorlLmo escrlLo numa llnguagem de programao,
como o lorLran.

- LxlsLem 3 nlvels de llnguagens de programao:
1. Llnguagens de balxo nlvel (ou de mqulna).
2. Llnguagens de nlvel lnLermedlrlo (ou slmbllca monLadora).
3. Llnguagens de alLo nlvel (ou de complladores).

1.S.1 L|nguagem de Mqu|na
- Cada lnsLruo e consLlLulda de 2 parLes:
cdlgo de operao operando(s)
- C "cdlgo de operao" lnsLrul o compuLador para reallzar uma funo especlflca: adlo,
subLrao, lelLura, escrlLa, comparao, movlmenLo de dados, eLc...
- C(s) operando(s) especlflca(m) o endereo do dado a ser operado, endereo do dlsposlLlvo de
enLrada/salda, eLc...
- Lxemplo do Lrecho prlnclpal de um programa em llnguagem de mqulna para calcular
3A+168
8 = ---------- - u
C
onde os valores de A, 8, C, u e 8 esLo armazenados nos endereos 1000, 1004, 1012, 1020 e
2030 da memrla.
Cdlgo da Cperao Cperando ComenLrlo
14 1000 carrega A no acumulador
12 =3 mulLlpllca o acumulador por 3
13 3000 armazena conLeudo acumulado no endereo 3000
14 1004 carrega 8 no acumulador
12 =16 mulLlpllca acumulador por 16
10 3000 adlclona acumulador com conLeudo de 3000
13 1012 dlvlde acumulador pelo conLeudo de 1012
11 1020 subLral do acumulador o conLeudo de 1020
13 2030 armazena acumulador em 2030
- na realldade, um programa real em llnguagem de mqulna, para ser compreendldo por ela,
geralmenLe e escrlLo no slsLema blnrlo.

glna 7 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

1.S.2. L|nguagem S|mb||ca Montadora
- As llnguagens slmbllcas procuram faclllLar a Larefa do programador, crlando mnemnlcos
para as operaes.

- Cs programas monLadores Lraduzem um programa fonLe (ou se[a, em llnguagem slmbllca)
em um programa ob[eLo (ou se[a, em llnguagem de mqulna).
- C Lrecho de programa vlsLo aclma, flcarla em uma llnguagem slmbllca parecldo com:

Cperao Cperando ComenLrlo
CA8 A carrega A
MuL 3 mulLlpllca por 3
A8M 1M armazena o resulLado em 1M
CA8 8 carrega 8
MuL 16 mulLlpllca por 16
Aul 1M adlclona o resulLado com o conLeudo de 1M
ulv C dlvlde o resulLado por C
Su8 u subLral o resulLado de u
A8M 8 armazena o resulLado em 8
1.S.3. L|nguagens de Comp||adores
- uma llnguagem de compllador (ou de alLo nlvel) Lem por ob[eLlvo permlLlr ao programador se
uLlllzar de uma llnguagem mulLo prxlma aquela uLlllzada no amblenLe no qual se coloca a
Larefa a ser reallzada.
- Cs programas complladores Lraduzem um programa fonLe, escrlLos em uma llnguagem de
alLo nlvel, em um programa ob[eLo em llnguagem de mqulna.
- C Lrecho de programa vlsLo aclma, flcarla na llnguagem de alLo nlvel lorLran ldnLlco a:
8 = (3.0*A + 16.0*8) / C - u

- LLapas do processamenLo de um programa em llnguagem de alLo nlvel:
glna 8 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN



1.6.assos no Desenvo|v|mento de rogramas








glna 9 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

Cap|tu|o 2 - A L|nguagem Iortran: Conce|tos 8s|cos
2.1 Introduo
- lC818An = lC8mula 18AnslaLlon (em porLugus: Lraduo de frmulas).
- C lorLran e uma llnguagem slmples cu[o vocabulrlo conslsLe de um con[unLo de palavras,
conhecldas como "palavras-chave" (para se Ler uma ldela, no lorLran77 eram cerca de 430,
aLualmenLe o numero e bem malor).
- um "comando" lorLran e uma senLena escrlLa nesLa llnguagem. um programa conslsLe
numa sequncla de comandos, cada um escrlLo numa llnha.
2.2. Def|n|es da L|nguagem
- ltoqtomo ltloclpol e uma unldade que pode chamar ouLras unldades de programa, mas que
no pode ser chamado por esLas. C programa prlnclpal e quem recebe o conLrole da execuo
no lnlclo da fase de execuo.
- 5obptoqtomo e uma unldade de programa que e chamada por ouLra unldade de programa.
ode ser de dols Llpos: subroLlna ou funo. usualmenLe um subprograma recebe parmeLros
de enLrada e reLorna parmeLros de salda.
- looo lottloseco e uma funo suprlda pelo compllador e que reallza operaes sobre
numeros ou caracLeres.
- ltoqtomo xecotvel e um programa [ em llnguagem de mqulna que pode ser execuLado
pelo compuLador. ConslsLe de um programa prlnclpal e subprogramas.
- comooJo xecotvel e aquele que efeLua clculos, LesLes, provldencla enLrada ou salda de
dados, alLera o fluxo de execuo ou aLrlbul valores a varlvels.
- comooJo No-xecotvel e aquele que descreve as caracLerlsLlcas de uma unldade de
programa, dos dados ou de lnformaes de edlo.
- uolJoJe Je ltoqtomo e uma sequncla de comandos Lermlnando com um comando Lnu.
- Atpolvos Je uoJos so unldades de enLrada e salda de dados, passlvels de serem
lldos/escrlLos por um programa.
2.3. Itens s|ntt|cos do Iortran
- 5lotoxe e a parLe da gramLlca que esLuda a dlsposlo das palavras na frase e a das frases no
dlscurso.
- coostootes so valores ou numeros que ocorrem num programa.
- Nome slmbllco e uma sequncla de uma ou mals leLras ou dlglLos, o prlmelro dos quals deve
ser uma leLra.
glna 10 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- votlvels so valores ou numeros ou con[unLos de caracLeres que ocorrem num programa e
que podem sofrer varlaes duranLe a execuo do programa. na realldade uma varlvel e o
nome de uma locallzao da memrla.
- Nometo Je comooJo e um numero de um a clnco dlglLos, um dos quals deve ser dlferenLe de
zero e e usado para ldenLlflcar um comando. ueve esLar locallzado no lnlclo da llnha.
- lolovto cbove e uma sequncla de leLras que ldenLlflcam excluslvamenLe comandos lorLran.
- OpetoJot e um enLe slmllar a um operador maLemLlco.
- valores so obLldos da memrla quando eles so usados no lado dlrelLo do slnal de lgual.
- Cbserve que o slnal de "=" no lndlca uma lgualdade e slm uma aLrlbulo.
- C lorLran permlLe que voc deflna dlferenLes Llpos de varlvels. usa-se varlvels lnLelras para
armazenar numeros lnLelros, varlvels reals para numeros reals, varlvels complexas para
numeros complexos, varlvels caracLer para palavras e frases, eLc.
- voc pode deflnlr os Llpos de varlvels no seu programa aLraves de "comandos de deflnlo
de Llpo".
- LxlsLem vrlos comandos lorLran para a deflnlo de Llpo de varlvel, enLre os quals
"CPA8AC1L8", "ln1LCL8" e "8LAL".
- Cs clculos podem ser felLos aLraves de comandos de aLrlbulo, escrevendo-se uma
"expresso" no lado dlrelLo do slnal de lgual.
- Slmbolos de operaes maLemLlcas (Lambem conhecldos como "operadores arlLmeLlcos"):
adlo, "+", subLrao, "-", mulLlpllcao, "*", dlvlso, "/", poLenclao, "**".
- ode-se usar parnLeses para agrupar Lermos em expresses lorLran, como e felLo em
lgebra.
2.4. Caracteres usados no Iortran
- C con[unLo de caracLeres lorLran e consLlLuldo de: leLras (ou caracLeres alfabeLlcos), dlglLos
(ou caracLeres numerlcos) e slmbolos especlals como =, +, -, /, *, eLc.
- L preclso Lomar culdado em relao aos slmbolos especlals, pols esLes podem varlar de
funo dependendo do fabrlcanLe do compllador.
2.S. Uma v|so gera| do Iortran
- Lxemplo de um programa para calcular a medla das noLas de uma prova de uma Lurma e
deLermlnar o numero de noLas aclma e abalxo de 3,0. vamos usar a equao abalxo para
calcular a medla da Lurma:
glna 11 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

,
sendo que: M1 = medla da Lurma,
noLa(l) = noLa do aluno l,
n1 = numero LoLal de alunos.
C cdlgo do programa poderla ser:
ptoqtom meJlo
! ptoqtomo poto colcolot o meJlo Je omo totmo
! ptoqtomoJot. lclovotJo
lmpllclt oooe
loteqet l,ot,os5,ol5
teol mt,ooto,somo
somo=0.0
os5=0
ol5=0
ptlot *,'ulqlte o oometo totol Je olooos. '
teoJ *, ot
Jo l=1,ot
ptlot *,'ulqlte o ooto Jo olooo ',l
teoJ *,ooto
somo=somo-ooto
lf(ooto>=5.0) tbeo
os5=os5-1
else
ol5=ol5-1
eoJlf
eoJJo
mt=somo/ot
ptlot *,'*** kesoltoJos ***'
ptlot *,'MeJlo Jo totmo. ',mt
ptlot *,'Notos sopetlotes oo lqools o 5.0 = ',os5
ptlot *,'Notos lofetlotes o 5.0 = ',ol5
stop
eoJ

- ve[a flgura a segulr conLendo o fluxograma para o programa medla.f90.
glna 12 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


- uma "varlvel" lorLran e um nome para uma locallzao de memrla. varlvels no exemplo
aclma: nL, ns3, nl3, mL, noLa, soma, l.
- C "valor" de uma varlvel e a lnformao armazenada na locallzao de memrla que e
represenLada pela varlvel.
- um "comando de aLrlbulo" e o Llpo de comando que permlLe armazenar um valor em uma
varlvel. Comandos de aLrlbulo no exemplo aclma:
somo=0.0
os5=0
ol5=0
somo=somo-ooto
os5=os5-1
ol5=ol5-1
mt=somo/ot
glna 13 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- Cuando voc aLrlbul um valor a uma varlvel, o valor anLerlormenLe armazenado e desLruldo.
- Cs comandos num programa lorLran so, normalmenLe, execuLados na ordem em que so
escrlLos. LnLreLanLo, pode-se alLerar esLa ordem de execuo aLraves dos "comandos de
conLrole de fluxo".
- um comando de conLrole que represenLa uma declso e a consLruo "ll-1PLn-LLSL", que e
sempre Lermlnado por um comando Lnull.
- ve[a flgura a segulr para uma Lomada de declso e desvlo do fluxo de execuo.
Tal coisa
verdade?
Comandos
executaveis
Comando
executaveis
n
s

- ve[a flgura a segulr para o fluxograma para o algorlLmo que declde aprovar ou reprovar um
aluno, baseado na sua medla flnal.

- Comandos lorLran para o fluxograma anLerlor:
lf(mf>=3.0)Lhen
slLuacao='aprovado'
else
slLuacao='reprovado'
glna 14 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

endlf

- um comando de conLrole que represenLa um lao e o comando "uC", que e sempre
Lermlnado por um comando LnuuC.
- Lm lorLran77, um comando uC pode Lermlnar por um comando numerado.
- ve[a a segulr um fluxograma de um lao de repeLlo.
=vi
> vf?
Comandos executaveis
= i + incr
n

- ve[a a segulr o fluxograma para o algorlLmo para somar Lodos os numeros naLurals de 1 a 10.
glna 1S de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


- Comandos lorLran para o fluxograma anLerlor:
soma=0
do l=1,10,1
soma=soma+l
enddo
- ve[a a segulr o fluxograma para o algorlLmo para somar Lodos os numeros naLurals pares de 1
a 10.
glna 16 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


- Comandos lorLran para o fluxograma anLerlor:
soma=0
do l=2,10,2
soma=soma+l
enddo
- ara dlzer ao compuLador para parar a execuo de seu programa, voc usa o comando
"S1C".
- A ulLlma llnha em qualquer unldade de programa lorLran e sempre o comando "Lnu".

2.6. Cod|f|cao de programas em Iortran
2.6.1. Iormato L|vre (Iortran90 e poster|ores)
- Cada comando e escrlLo numa llnha.
- Cada llnha de comando possul aLe 132 colunas. C edlLor de LexLo e capaz de Lrabalhar com
um numero malor de colunas (culdado!).
- ConLlnuao de comandos: mulLas vezes um comando no cabe nas colunas dlsponlvels em
uma llnha (ou no se quer escrever Ludo numa llnha). uma "llnha de conLlnuao" pode enLo
ser deflnlda slmplesmenLe colocando-se um caracLere & no flnal da llnha e conLlnua-se na de
balxo. ode-se fazer lsLo aLe 39 vezes seguldas, de modo que um comando pode Ler aLe 40
llnhas. Como sugesLo de boa programao, as colunas [1,3] podem flcar em branco.
glna 17 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- ara a codlflcao de arqulvos de dados de enLrada e salda, esLes seguem a esLruLura que
porvenLura se[a deflnlda no prprlo programa que val ler/escrever nesLe arqulvo.

2.6.2. Iormato I|xo (Iortran77 e anter|ores)
- Cada comando e escrlLo numa llnha e cada llnha, por sua vez, e dlvldlda em "campos", que
so con[unLos de colunas.
- Cada llnha de comando possul 80 colunas. C edlLor de LexLo e capaz de Lrabalhar com um
numero malor de colunas (culdado!).
- Cada llnha e dlvldlda em 4 campos, que so formados pelos con[unLos de colunas [1,3], [6],
[7,72] e [73,80].
- compo Je oometos Je comooJo, colunas [1,3]: um numero de comando (qualquer numero
lnLelro e malor que zero, conslsLlndo de 3 dlglLos) pode ser escrlLo nas colunas de 1 a 3.
8rancos e zeros a esquerda so lgnorados.
- compo Je cootloooo Je comooJos, coluna [6]: mulLas vezes um comando no cabe nas 66
colunas dlsponlvels em uma llnha. uma "llnha de conLlnuao" pode enLo ser deflnlda
slmplesmenLe colocando-se um caracLere qualquer dlferenLe de branco e zero na coluna 6.
ode-se fazer lsLo aLe 19 vezes seguldas, de modo que um comando pode Ler aLe 20 llnhas. As
colunas [1,3] devem flcar em branco.
- compo Je comooJos, colunas [7,72]: somenLe nesLas colunas pode-se escrever um comando
lorLran.

- compo Je lJeotlflcoo, colunas [73,80]: esLe campo e usado somenLe para ldenLlflcao do
programa. lsLo e uma herana mulLo velha, pouco usada ho[e. CeralmenLe o compllador que
alnda se lmporLa com a ldenLlflcao do programa, escreve os prlmelros 8 caracLeres do nome
do programa nesLas colunas.
- llobos Je comeottlo, coluna [1]: qualquer llnha que conLenha uma leLra "c" ou um asLerlsco
"*" na coluna 1 so lgnoradas em lorLran. So usadas para lnserlr comenLrlos denLro de um
programa lorLran.
- ara a codlflcao de arqulvos de dados de enLrada e salda, esLes seguem a esLruLura que
porvenLura se[a deflnlda no prprlo programa que val ler/escrever nesLe arqulvo.





glna 18 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

Cap|tu|o 3: Constantes, Var|ve|s e Con[untos
3.1 Introduo
- LsLe caplLulo LraLa de deflnlr correLamenLe os componenLes bslcos dos comandos lorLran.
Alguns [ vlmos no caplLulo anLerlor, como "lLens de slnLaxe".
- "ConsLanLes" so valores flxos, Lals como numeros. LsLes valores no podem ser alLerados
pelos comandos do programa. Lxemplos: 3.0, 3, 'palavra'.
- "varlvels" so nomes slmbllcos que represenLam valores armazenados na memrla do
compuLador. LsLes valores podem ser alLerados pelos comandos do programa.
- "Con[unLos" so grupos de varlvels, cu[os valores so armazenados ad[acenLemenLe e
podem ser referenclados lndlvldualmenLe aLraves de um nome slmbllco com um lndlce. So
conhecldos Lambem como "varlvels lndexadas" (vl).
- um "operador" e um slmbolo especlflco para uma deLermlnada operao. Lxemplo: + (soma).
- "Lxpresses" so comblnaes de consLanLes, varlvels, elemenLos de con[unLos e
operadores. Lxemplo: 3.0*var1+var2.
- no "comando de aLrlbulo" abalxo:
faL = a(3) * 4 * (8 + 2.3)
Lemos a "expresso" a(3)*4*(8+2.3). nesLa expresso Lemos duas "consLanLes" (4 e 2.3), uma
"varlvel" (8), uma varlvel lndexada (a(3)), dols "operadores" (* e +) e parnLeses. vemos
Lambem que Lemos uma consLanLe lnLelra (4) e uma real (2.3), as varlvels a(3) e 8 dependem
de como Lenham sldo deflnldas.
- no Lrecho de programa abalxo:
prlnL *, 'dlglLe a velocldade lnlclal:'
read *, v0y
g=9.8
dL=0.1
do l =1,np
L(l)=l*dL
y(l)=v0y*L(l)-0.3*g*L(l)**2
enddo
...
do l=1,np
prlnL *,L(l),y(l)
enddo
vemos o uso das "varlvels lndexadas" L(l) e y(l).
glna 19 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

3.2. Constantes
- uma "consLanLe" e uma quanLldade flxa e lnvarlvel.
- C lorLran dlsLlngue Lrs classes de consLanLes: numerlcas, lglcas e cadelas de caracLeres.

- As consLanLes numerlcas que mals nos lnLeressam so:
- lnLelras: para numeros lnLelros declmals (escrlLos sem o ponLo declmal).
- 8eals: para numeros declmals (ou fraclonrlos).
- uupla preclso: para numeros reals com mals dlglLos slgnlflcaLlvos que o normal.
- Complexos: para numeros complexos.
- As consLanLes lglcas podem ser:
- .Lrue. : represenLa o valor "verdade".
- .false. : represenLa o valor "falso".
- As consLanLes "cadelas de caracLeres" so uma sequncla de caracLeres alfanumerlcos e/ou
especlals sempre enLre aspas.
- C comando A8AML1L8 pode ser usado para assoclar um nome slmbllco a uma consLanLe.

3.2.1. Constantes Inte|ras
- C lnLervalo mxlmo de valores posslvels para consLanLes lnLelras varla de mqulna para
mqulna. C menor lnLervalo e de [-9999,+9999].
3.2.2. Constantes kea|s
- uma consLanLe real e uma cadela de dlglLos escrlLa com ponLo declmal, com um expoenLe ou
com ambos, expressando um numero real. Lx.: 0.123, 123.0L-03, -123.0L-03 .
- C lnLervalo de valores posslvels para o expoenLe, bem como a preclso do numero
(quanLldade mxlma de dlglLos slgnlflcaLlvos) varla de mqulna para mqulna. C menor
lnLervalo conhecldo e de 10
-28
a 10
+28
. A preclso do numero e LlplcamenLe no mlnlmo de 7
dlglLos.
3.2.3. Constantes Caracteres
- C comprlmenLo mxlmo de uma cadela de caracLeres geralmenLe no e menor que 233.
3.3. Var|ve|s
- uma varlvel possul um nome e um Llpo, podendo assumlr dlversos valores.

glna 20 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- 8egras para nomes de varlvels:
1. Cs nomes devem comear com uma leLra.
2. Cs nomes podem conLer leLras e dlglLos.

- 1lpos de varlvels: lnLelras, reals, dupla preclso, complexas, lglcas e caracLeres, que
possuem caracLerlsLlcas slmllares as consLanLes.
3.3.1. Var|ve|s Inte|ras
- Se no for usado o comando lMLlCl1 nCnL, por conveno, Loda varlvel numerlca cu[o
nome lnlcla por uma das leLras l, [, k, l, m ou n, e uma varlvel lnLelra.
- As varlvels lnLelras podem assumlr valores na mesma falxa das consLanLes lnLelras.

3.3.2 Var|ve|s kea|s
- Se no for usado o comando lMLlCl1 nCnL, por conveno, Loda varlvel numerlca cu[o
nome no lnlcla por uma das leLras l, [, k, l, m ou n, e uma varlvel real.
- As varlvels reals podem assumlr valores na mesma falxa que as consLanLes reals.
3.3.3. Var|ve|s Caractere
- uma varlvel caracLere e uma varlvel que e declarada como caracLere aLraves dos comandos
de especlflcao expllclLa ou do comando lMLlCl1. A quanLldade de caracLeres numa varlvel
caracLere e especlflcada quando da declarao da varlvel caracLere.
- ve[a os segulnLes exemplos de comandos de especlflcao de varlvels caracLere:
1. lmpllclL characLer*28 (y,z)
2. characLer*36 llnha
3. characLer soma*13,maLrlz*64
1emos que llnha, soma e maLrlz so especlflcadas como varlvels caracLere conLendo 36, 13 e
64 caracLeres, respecLlvamenLe. Alem dlsso, Lodas as varlvels cu[a prlmelra leLra e y ou z so
Lambem declaradas como varlvels caracLere conLendo 28 caracLeres cada uma.

3.4. Con[untos
- nesLa seo nos ocuparemos dos con[unLos de varlvels, ou varlvels lndexadas (vl), [
deflnldos no lnlclo desLe caplLulo.
- uma vl possul um nome, um Llpo e um con[unLo de lndlces (ou um unlco lndlce).
glna 21 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- "veLor" e uma vl que possul um unlco lndlce, e por lsLo e dlLo uma vl unldlmenslonal.
- A varlvel L no Lrecho de programa abalxo e um veLor:
dlmenslon L(10)
L(1)=0.1
L(2)=0.2
L(3)=0.3
...
L(10)=1.0

- "MaLrlz" e uma vl que possul dols con[unLos de lndlces e por lsLo e dlLa bldlmenslonal.

- A varlvel a no Lrecho de programa abalxo e uma maLrlz:
dlmenslon a(3,3)
do l = 1,3
do [ = 1,3
a(l,[) = 0.0
enddo
enddo
- 8epresenLao MaLrlclal da varlvel a:

- lorma de armazenamenLo na memrla:
... a
11
a
21
a
31


a
12
a
22
a
32
a
13
a
23
a
33
...
- ulzemos que uma vl e uma maLrlz n-dlmenslonal quando esLa possul um con[unLo de n
lndlces.
- no lorLran 77, uma vl no podla possulr mals do que 7 lndlces.
3.4.1 Dec|aradores de Con[untos
- Comando ulMLnSlCn: permlLe especlflcar uma deLermlnada varlvel como sendo uma
varlvel lndexada.

- Lxemplos do uso do comando ulMLnSlCn:
glna 22 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

1) dlmenslon a(8)
onde 8 e numero mxlmo de dlferenLes a's.
2) dlmenslon a(8),b(3,6)
sendo que 3 e 6 so os valores mxlmos do prlmelro e segundo lndlces (que resulLam em 30
dlferenLes b's).
3) lnLeger a
real b
dlmenslon a(8),b(3,6)
sendo que o veLor a e um veLor de numeros lnLelros e b uma maLrlz de numeros reals.
4) dlmenslon c(0:10),d(1:4,1:3,1:3)
sendo que: c = veLor de 11 elemenLos, sendo o prlmelro c(0) e o ulLlmo c(10),
d = maLrlz Lrldlmenslonal de 60 elemenLos, sendo que o prlmelro elemenLo e
d(1,1,1) e o ulLlmo e d(4,3,3)
















glna 23 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


Cap|tu|o 4: Lxpresses

4.1. Introduo
- uma "expresso" lorLran e deflnlda como uma comblnao de lLens slnLLlcos, lsLo e: uma
expresso pode conslsLlr de uma unlca consLanLe, de uma unlca varlvel, de um unlco
elemenLo de con[unLo, ou uma comblnao de consLanLes, varlvels, elemenLos de con[unLos,
unldos com um ou mals operadores e, posslvelmenLe, agrupados com parnLeses.
- "Cperadores" especlflcam as compuLaes a serem reallzadas sobre os valores dos
elemenLos bslcos.

- As expresses, no lorLran, so classlflcadas em arlLmeLlcas, caracLeres, relaclonals e lglcas.

4.2. Lxpresses Ar|tmt|cas
- uma "expresso arlLmeLlca" e usada para expressar uma compuLao numerlca. C clculo
desLa expresso produz um valor numerlco cu[o Llpo e lnLelro, real, dupla preclso ou
complexo.

- Cs "operadores arlLmeLlcos" so deflnldos pela Labela abalxo:
Cperador ueflnlo uso Slgnlflcado
----------------------------------------------------------------------------------------------------
** poLenclao a**b a elevado a poLncla b
* mulLlpllcao a*b a mulLlpllcado por b
/ dlvlso a/b a dlvldldo por b
+ adlo a+b a mals b
- subLrao a-b a menos b
- menos unrlo -a a com slnal lnverLldo

- Lm expresses conLendo um unlco operando, o Llpo do operando deflne o Llpo de expresso.

- Lm expresses com mals de um Llpo de operando, o Llpo da expresso depende dos Llpos dos
operandos e dos operadores.

- ara Lodas as operaes (com exceo da poLenclao):
1. Se os operandos forem do mesmo Llpo, esLe ser o Llpo da expresso.
glna 24 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

2. Se os operandos forem de Llpos dlferenLes, o Llpo da expresso ser o Llpo do
operando de malor precedncla, dada pela Labela abalxo:
1lpo recedncla
-------------------------------------------
lnLelro 1
real 2
dupla preclso 3
complexo 4

- 8egras para ordem de compuLao:
1. arnLeses podem ser usados para agrupar operandos em uma expresso. Cualquer
expresso enLre parnLeses e calculada anLes do clculo da expresso da qual ela e uma parLe.
arnLeses mals lnLernos so calculados anLes.
2. Com exceo do uso dos parnLeses, as operaes so reallzadas na segulnLe ordem de
precedncla:
Cperao recedncla
--------------------------------------------------------------
+ e - mals balxa
* e / lnLermedlrla
** mals alLa
3. ara operadores de mesma precedncla, o clculo se desenvolve da esquerda para a dlrelLa.
4. oLenclaes consecuLlvas so reallzadas da dlrelLa para a esquerda.

4.3. Lxpresses ke|ac|ona|s
- uma "expresso relaclonal" e usada para comparar os valores de duas expresses arlLmeLlcas
(ou os valores de duas expresses caracLere).

- A comparao enLre duas expresses arlLmeLlcas e felLa aLraves dos "operadores relaclonals".

- C clculo de uma expresso relaclonal produz um resulLado lglco, com um valor "verdade"
ou "falso". A expresso e lnLerpreLada como "verdade" se os valores dos operandos saLlsfazem
a relao maLemLlca especlflcada pelo operador, e "falso" se eles no saLlsfazem a relao.
- "Cperadores 8elaclonals" so aqueles deflnldos na Labela abalxo:
Cperador ueflnlo uso Slgnlflcado
somenLe lorLran90 e posLerlores
== lgual a A==8 A e lgual a 8 ?
/= dlferenLe de A/=8 A e dlferenLe de 8?
glna 2S de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

< menor que A<8 A e menor a 8?
<= menor ou lgual A<=8 A e menor ou lgual a 8?
> malor que A>8 A e malor que 8 ?
>= malor ou lgual A>=8 A e malor ou lgual a 8?
Lodos
.eq. lgual a (equal) A.eq.8 A e lgual a 8 ?
.ne. dlferenLe de (noL equal) A.ne.8 A e dlferenLe de 8?
.lL. menor que (less Lhan) A.lL.8 A e menor a 8?
.le. menor ou lgual (less or equal) A.le.8 A e menor ou lgual a 8?
.gL. malor que (greaLer Lhan) A.gL.8 A e malor que 8 ?
.ge. malor ou lgual (greaLer or equal) A.ge.8 A e malor ou lgual a 8?


4.4. Lxpresses Lg|cas
- uma expresso lglca e usada para reallzar um clculo lglco.

- Cs "operadores lglcos" so (llsLamos somenLe os prlnclpals):
Cperador ueflnlo uso Slgnlflcado
-----------------------------------------------------------------------------------------------------
.noL. negao .noL.A se A e verdade, .noL.A e falso
.and. con[uno A.and.8 para a expresso ser verdade, A e 8 preclsam ser verdade
.or. dls[uno A.or.8 para a expresso ser verdade, A ,ou 8, preclsa ser verdade

- Lxemplos:
1) lf(x1.eq.x.and.x2.eq.x1) Lhen .
2) flm=.false.
do whlle(.noL.flm) .
bloco de comandos
enddo

- 8egras para clculos de expresses lglcas.
1. arnLeses podem ser usados e so calculados anLes.
2. Cs operadores arlLmeLlcos so calculados em segundo lugar.
3. Cs operadores relaclonals so calculados em Lercelro lugar.
4. As operaes lglcas so reallzadas na segulnLe ordem de precedncla:
Cperador recedncla
------------------------------------------------------------------
.noL. mals alLa
glna 26 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

.and. lnLermedlrla
.or. mals balxa
Cap|tu|o S: Comandos de Atr|bu|o
S.1. Introduo
- C "comando de aLrlbulo" e usado para aLrlbulr um valor a (ou deflnlr) uma varlvel ou a um
elemenLo de con[unLo.

- Cs comandos de aLrlbulo calculam uma expresso e aLrlbuem o valor resulLanLe a uma
varlvel ou elemenLo de con[unLo.

- A forma de um comando de aLrlbulo e:
varlvel=expresso

- Cs comandos de aLrlbulo so classlflcados como:
arlLmeLlco,
caracLere,
lglco.

- Lxemplos:
arlLmeLlco: varnum=3.0*a/b
caracLere: varcar='dlglLe o valor de x:'
lglco: varlog=.Lrue. ou varlog=a<b.and.b==c

- Aps o clculo da expresso, o valor e converLldo, se necessrlo, para o Llpo de varlvel de
acordo com a segulnLe regra:
1lpo da varlvel valor aLrlbuldo
----------------------------------------------------------------
lnLelro a parLe lnLelra da expresso
real o valor real da expresso
dupla preclso o valor dupla preclso da expresso
complexo o valor complexo da expresso



glna 27 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


Cap|tu|o 6: Comandos de Lspec|f|cao: Dec|arao de 1|pos de Var|ve|s
6.1. Introduo
- Cs comandos de declarao de Llpo so: lMLlCl1, ln1LCL8, 8LAL, uCu8LL 8LClSlCn,
CCMLLx, LCClCAL e CPA8AC1L8.

6.2. Comando IMLICI1
- A forma geral do comando e:
lMLlCl1 Llpo (a[,a]...) [,Llpo (a[,a])]

- C comando lMLlCl1 permlLe que se deflna o Llpo de Lodas as varlvels que comeam por
uma deLermlnada leLra.

- Lxemplos:
1) lmpllclL real(l)
- faz com que Lodas as varlvels que comecem pela leLra l se[am reals.
2) lmpllclL real(l,[,k,l)
- faz com que as varlvels com lnlclals de l a l se[am reals.
3) lmpllclL real(l-l)
- ldem.
4) lmpllclL real(l-l),lnLeger(a,b)
- faz a mesma colsa que o comando anLerlor mals a deflnlo que as varlvels com lnlclals a ou
b se[am lnLelras.
3) lmpllclL none
- faz com que Lodas as varlvels do programa Lenham que Ler o seu Llpo obrlgaLorlamenLe pre-
deflnldas.

6.3. Comandos de Lspec|f|cao Lxp||c|ta
6.3.1. Comando Integer
- C comando ln1LCL8 e usado para declarar varlvels lnLelras.

glna 28 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- A forma geral do comando ln1LCL8 e:
ln1LCL8 nome [,nome]...
ou
ln1LCL8 nomevl[(d[,d]...)]
sendo que nomevl e o nome de uma varlvel lndexada lnLelra.

- Lxemplos:
lnLeger soma,conL
lnLeger a(0:10,0:8)

6.3.2. Comando kLAL
- C comando 8LAL e usado para declarar varlvels reals.

- A forma geral do comando 8LAL e:
8LAL nome[,nome]...
ou
8LAL nomevl[(d[,d]...)]
sendo que nomevl e o nome de uma varlvel lndexada real.

- Lxemplos:
real a,b,c
real d(1:10,1:8)

6.3.3. Comando DCU8LL kLCISICN
- C comando uCu8LL 8LClSlCn e usado para dupllcar o numero de algarlsmos slgnlflcaLlvos
de uma varlvel ou de um con[unLo.

- A forma geral do comando uCu8LL 8LClSlCn e:
uCu8LL 8LClSlCn nome[,nome]...
glna 29 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

ou
uCu8LL 8LClSlCn nomevl[(d[,d]...)]
sendo que nomevl e o nome de uma varlvel lndexada de dupla preclso.

6.3.4. Comando CCMLLk
- C comando CCMLLx e usado para declarar varlvels do Llpo complexo.

6.3.S. Comando LCGICAL
- C comando LCClCAL e usado para declarar varlvels do Llpo lglco.

6.3.6. Comando CnAkAC1Lk
- C comando CPA8AC1L8 e usado para declarar varlvels do Llpo caracLere.

- A forma geral do comando CPA8AC1L8 e:
CPA8AC1L8*comp nome[,nome]...
ou
CPA8AC1L8 nome*comp[,nome*comp]...
sendo que comp e o comprlmenLo da(s) varlvel(els) caracLere.

- Lxemplos:
characLer*12 a,b,c
characLer d*3,e*4,f*10





glna 30 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN


Cap|tu|o 7: Comandos de Lspec|f|cao: Des|gnao de reas de Memr|a
7.1. Introduo
- nesLe caplLulo, aprenderemos a reservar reas de memrla, com os segulnLes ob[eLlvos:
1. ueLermlnar a quanLldade de memrla que deve ser reservada para varlvels
lndexadas.
2. lndlcar reas de memrla que podem ser acessadas por dlferenLes unldades de
programa.

7.2. Comando DIMLNSICN
- C comando ulMLnSlCn e usado para especlflcar nomes slmbllcos como nomes de varlvels
lndexadas, deflne o numero de dlmenses (lndlces) de cada con[unLo de vls e especlflca os
llmlLes de cada dlmenso.
- A forma geral do comando ulMLnSlCn e:
ulMLnSlCn c(d[,d]...)[,c(d[,d]...)]
sendo que:
- "c" e um nome de con[unLo,
- "d" e um declarador de dlmenso (que podem ser no mxlmo 7) e especlflca os llmlLes para
cada lndlce do con[unLo, em uma das formas: sopetlot ou lofetlot.sopetlot
- sopetlot: o lndlce varla de 1 aLe sopetlot.
- lofetlot.sopetlot: o lndlce varla de lofetlot aLe sopetlot.

- Lxemplos:
dlmenslon a(0:10),b(3,3),c(3,4,3)

7.3. Comando CCMMCN
- C comando CCMMCn e usado para especlflcar reas de memrla que so uLlllzadas em
comum por vrlas unldades de programa, Lal como o programa prlnclpal e subprogramas do
Llpo lunC1lCn ou Su88Cu1lnL.
- reas de memrla deslgnadas por uma unldade de programa no so "enxergadas" pelas
ouLras unldades. Asslm, o que CCMMCn faz e permlLlr que dlferenLes unldades de programa
"enxerguem" uma dada rea de memrla.
glna 31 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- A forma geral do comando CCMMCn e:
CCMMCn[/r/] llsLa
sendo que:
- "r" e um rLulo do bloco de varlvels que Lero suas reas de memrla especlflcadas.
- "llsLa" e uma llsLa com nomes de varlvels que Lero suas reas de memrla especlflcadas.

- Lxemplos:
1) common m,a,x
2) dlmenslon a(10),b(3,20)
common/bloco1/a,b

- C mesmo comando CCMMCn, escrlLo do mesmo [elLo, deve aparecer em cada unldade de
programa que preLende Ler acesso as varlvels deflnldas num dado bloco.
7.4. Un|dades de programas do t|po MCDULL
- As unldades de programa do Llpo MCuuLL exlsLem a parLlr do lorLran 90 e podem subsLlLulr
Lodas as ocorrnclas do comando CCMMCn, do comando lnCLuuL (no apresenLado nesLa
aposLlla) e funes de comando (CaplLulo 11).
- numa unldade de programa do Llpo MCuuLL podem se deflnlr Llpos e valores de consLanLes
e varlvels. Alnda e posslvel lnclulr subprogramas, mas esLe Lplco no ser abordado.
7.S. Comando USL
- C comando uSL e uLlllzado para deflnlr uma unldade de programa do Llpo MCuuLL que deve
ser lnclulda no programa.
- Lxemplo de uLlllzao das unldades de programa do Llpo MCuuLL e do comando uSL:
module modulo01
lnLeger:: a=2,b=3
end module modulo01
module modulo02
lnLeger:: a=4,b=3
end module modulo02
program exmodls
! Cb[eLlvo: exempllflca o uso dos subprogramas do Llpo MCuuLL
use modulo01
lmpllclL none
glna 32 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

lnLeger c,d
! nas duas llnhas a segulr, sero usados os valores de a e b declarados
! no mdulo modulo01:
c=a+b
d=a*b
prlnL *,a,b,c,d
! na subroLlna abalxo, alnda sero usados os valores de a e b declarados
! no mdulo modulo01, demonsLrando a comparLllhao de dados enLre o
! programa prlnclpal e um subprograma:
call subroLlna01
! A subroLlna abalxo e ldnLlca a anLerlor, com a unlca dlferena que
! uLlllza novos valores para a e b declarados no mdulo modulo02:
call subroLlna02
sLop
end
subrouLlne subroLlna01
use modulo01
lmpllclL none
lnLeger c,d
c=a+b
d=a*b
prlnL *,a,b,c,d
reLurn
end
subrouLlne subroLlna02
use modulo02
lmpllclL none
lnLeger c,d
c=a+b
d=a*b
prlnL *,a,b,c,d
reLurn
end
7.6. Comando AkAML1Lk
- C comando A8AML1L8 fornece um melo de se represenLar uma consLanLe por um slmbolo,
como na MaLemLlca, em vez de represenL-la por um valor.
- A forma geral do comando A8AML1L8 e:
A8AML1L8(ns=e[,ns=e]...)
sendo que:
glna 33 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- "ns" e um nome slmbllco.
- "e" e uma consLanLe ou uma expresso consLanLe.

- A8AML1L8 e um comando de especlflcao e deve ser escrlLo enLre os comandos de
especlflcao. orem cada consLanLe slmbllca deve ser deflnlda anLes de qualquer referncla
a ela.

- Cs novos slmbolos das consLanLes deflnldas denLro de um comando A8AML1L8 seguem as
mesmas regras para os nomes de varlvels (em relao ao Llpo).

- C valor de uma consLanLe deflnlda em A8AML1L8 [amals e ou pode ser alLerado duranLe a
execuo do programa.

- Lxemplo:
?
real pl
parameLer(pl=3.1413927)
?
7.7. Comando kCGkAM
- C comando 8CC8AM e usado para ldenLlflcar o programa prlnclpal.

- 1odo programa possul um unlco programa prlnclpal.

- A forma geral de 8CC8AM e:
program nome
sendo que:
- "nome" e um nome slmbllco deflnldo para o programa prlnclpal.


7.8. Comandos ALLCCA1L, DLALLCCA1L L ALLCCA1A8LL
- Cs comandos ALLCCA1L, uLALLCCA1L L ALLCCA1A8LL Lm por funo permlLlr que uma
varlvel lndexada possa ser dlmenslonada duranLe a execuo do programa.

- ALLCCA1A8LL: lndlca que a maLrlz val Ler os valores mlnlmos e mxlmos para o seu(s)
lndlce(s) deLermlnados em algum ponLo do programa. A rea de memrla para esLa varlvel
glna 34 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

alnda no esL reservada.

- ALLCCA1L: dlmenslona a varlvel lndexada e reserva (aloca) um espao de memrla para ela.

- uLALLCCA1L: desaloca, mas no exLlngue, a varlvel lndexada, llberando a memrla anLes
por ela ocupada.

- no exemplo a segulr Lemos vrlos Lrechos de um programa sendo que as varlvels lndexadas
A, 8, C e u esLo sendo
dlmenslonadas, alocadas e desalocadas usando os comandos ALLCCA1L, uLALLCCA1L L
ALLCCA1A8LL:
...
lnLeger l,[,k,l,m,n
lnLeger,dlmenslon(:,:),allocaLable :: a
real,dlmenslon(:),allocaLable :: b,c
real,dlmenslon(:,:,:),allocaLable :: d
...
prlnL *,'ulglLe os mlnlmos e maxlmos das 2 dlmensoes de A:'
read *,l,[,k,l
allocaLe(a(l:[,k:l))
...
prlnL *,'ulglLe o mlnlmo e o maxlmo da unlca dlmensao de 8:'
read *,l,[
prlnL *,'ulglLe o mlnlmo e o maxlmo da unlca dlmensao de C:'
read *,k,l
allocaLe(b(l:[),c(k:l))
...
prlnL *,'ulglLe os mlnlmos e maxlmos das 3 dlmensoes de u:'
read *,l,[,k,l,m,n
allocaLe(d(l:[,k:l,m:n))
...
deallocaLe(a,d)
...
deallocaLe(b)
...
deallocaLe(c)
...
Cap|tu|o 8: Comandos de Contro|e de I|uxo e rogramao Lstruturada
8.1. Introduo
- normalmenLe, a execuo dos comandos num programa e felLa na ordem em que os
comandos so escrlLos: de clma para balxo, llnha por llnha, de acordo com a esLruLura
sequenclal. LnLreLanLo voc pode usar comandos para Lransferlr o conLrole de fluxo para ouLra
glna 3S de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

parLe da mesma unldade de programa ou para ouLra unldade de programa.

- C conLrole pode ser Lransferldo somenLe para um comando execuLvel.

- or vezes, um comando pode ser ldenLlflcado por um "numero de comando", conslsLlndo de
um numero lnLelro, escrlLo anLes do comando, no lnlclo da llnha. Cada numero de comando
deve ser unlco denLro da unldade de programa. Lles servem prlnclpalmenLe para a
especlflcao de formaLos de enLrada e/ou salda de dados. LvlLa-se ho[e o uso anLlgo do
numero de comando, que servla de referncla para uma Lransferncla de conLrole de fluxo.
lsLo favorece a crlao de cdlgos de programa "espagueLe", sendo que o conLrole de fluxo
pode ser mudado de manelra absurda, dlflculLando e lnvlablllzando a manuLeno dos
programas.

8.2. Lstruturas de Contro|e
- As esLruLuras bslcas de conLrole so:
1. LsLruLura sequenclal.
2. LsLruLura de Lomada de declso (lf-Lhen-else lf-else-endlf).
3. LsLruLura de lao:
faa-enquanLo (whlle-loop).
LsLruLura de lao repeLlo (repeaL-loop).
4. LsLruLura de seleo de caso (selecL case).

8.3. Comandos GC 1C
- Cs comandos CC 1C Lransferem o conLrole de fluxo para um comando execuLvel na mesma
unldade de programa. Cs Lrs Llpos de CC 1C so:
1. CC 1C lncondlclonal.
2. CC 1C compuLado.
3. CC 1C asslnalado.

8.3.1. Comando GC 1C |ncond|c|ona|
- C comando CC 1C lncondlclonal Lransfere o conLrole para o comando ldenLlflcado pelo
numero de comando especlflcado no CC 1C.
- A forma geral do comando CC 1C lncondlclonal e:
go Lo n
sendo que "n" e um numero de comando execuLvel.
glna 36 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

8.4. Comandos II
- Cs comandos ll Lransferem o conLrole do fluxo ou execuLam ouLro comando (ou um bloco de
comandos) dependendo do resulLado verdadelro ou falso de uma expresso lglca conLlda no
parLlcular comando ll. Cs Lrs Llpos de comandos ll so:
1. ll arlLmeLlco.
2. ll lglco.
3. ll bloco.

- Cs comandos LLSL, LLSL ll e Lnu ll so Lambem apresenLados nesLa seo, pols eles so
usados somenLe em con[unLo com um comando ll bloco.
8.4.1. Comando II |g|co
- C comando ll lglco calcula uma expresso lglca/relaclonal e execuLa ou lgnora um
comando execuLvel conLldo no prprlo ll, dependendo do valor (falso ou verdadelro) dessa
expresso.
- A forma geral do comando ll lglco e:
lf (e) c
sendo que:
- "e" e uma expresso lglca ou relaclonal.
- "c" e o comando que ser execuLado caso a expresso se[a verdade, "c" no pode ser um
comando uC.
- ve[amos como flca o fluxo do programa quando esLe chega a esLas Lrs llnhas:
x=a-b
lf(a.eq.b) x=a+b
y=x**2
Cbserve que nas ulLlmas 2 llnhas Lemos Lrs comandos:
1) lf(a.eq.b)
2) x=a+b
3) y=x**2
LnLo:
a) Se de faLo a=b, Leremos a segulnLe ordem de execuo: 1 >> 2 >> 3.
b) Se, por ouLro lado, a e dlferenLe de b, Leremos a ordem de execuo: 1 >> 3.

glna 37 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

8.4.2. Comandos II b|oco
- C comando ll bloco permlLe a execuo de um deLermlnado bloco de comandos,
dependendo do valor da(s) expresses lglca(s)/relaclonal(ls) nele conLldo.
- A forma geral do comando ll bloco e:
lf (e1) Lhen
bloco1
else lf (e2) Lhen
bloco2
else lf (e3) Lhen
bloco3
...
else
bloco n
endlf
sendo que e1, e2,e3, ... so expresses lglcas/relaclonals. ueve flcar claro que somenLe um
dos blocos de comandos ser execuLado.
- C menor ll bloco e a esLruLura:
lf (e) Lhen
bloco
endlf
vemos que os comandos LLSL ll e LLSL so opclonals.

- C comando ll 1PLn permlLe a execuo condlclonal de um bloco de comandos execuLvels. L
obrlgaLrlo usar em con[uno o comando Lnull para fechar o comando.

- A forma geral do comando ll 1PLn e:
lf (e) Lhen
sendo que "e" e uma expresso lglca/relaclonal (porLanLo produzlndo um resulLado
verdadelro ou falso).
- Se a expresso "e" for verdadelra, a execuo passa para o prxlmo comando execuLvel e
dal para o comando Lnull. Se for falsa, o conLrole e Lransferldo para o prxlmo comando: LLSL
ll 1PLn, LLSL ou Lnull.
- C comando LLSL fornece uma roLa alLernaLlva para um comando ll 1PLn ou LLSL ll 1PLn.
Sua forma geral e slmplesmenLe:
else
glna 38 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- C comando LLSL ll 1PLn comblna as funes dos comandos LLSL e ll 1PLn, pols fornece
uma roLa alLernaLlva e Lorna posslvel uma esLruLura ll bloco com mals de uma alLernaLlva.
- A forma geral do comando LLSL ll 1PLn e:
else lf (e) Lhen
sendo que "e" e uma expresso lglca/relaclonal.
- Se a expresso for verdadelra, o conLrole passa para o prxlmo comando execuLvel e dal
para o comando Lnull. Se for falsa, passa para o prxlmo comando LLSL ll 1PLn, LLSL ou
Lnull.

- C comando Lnull ou Lnu ll flnallza uma esLruLura ll bloco. Sua forma geral e slmplesmenLe:
end lf
- Lxemplo:
...
prlnL *,'ulglLe a noLa do aluno: '
read *,noLa
lf(noLa>=3.0) Lhen
prlnL *,'C aluno fol aprovado.'
elself(noLa>=3.3) Lhen
prlnL *,'C aluno fol reprovado mas podera cursar o 8L.'
else
prlnL *,'C aluno fol reprovado e nao podera cursar o 8L.'
endlf
?
8.4.3. Lstruturas de II b|oco enca|xados
- um bloco de comandos execuLvels denLro de um comando ll bloco pode conLer ouLra
esLruLura ll bloco. L lsLo pode se repeLlr lndeflnldamenLe.
...
prlnL *,'ulglLe a noLa do aluno: '
read *,noLa
lf(noLa>=3.0) Lhen
lf(noLa>=9.3) Lhen
prlnL *,'C aluno fol aprovado com louvor.'
elself(noLa>=8.0) Lhen
prlnL *,'C aluno fol aprovado com dlsLlncao.'
else
prlnL *,'C aluno fol aprovado.'
endlf
elself(noLa>=3.3) Lhen
prlnL *,'C aluno fol reprovado mas podera cursar o 8L.'
else
glna 39 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

prlnL *,'C aluno fol reprovado e nao podera cursar o 8L.'
endlf
?
8.S. Comando DC
- C comando uC e um comando de conLrole que permlLe que um bloco de comandos se[a
repeLlLlvamenLe execuLado. C numero de execues depende da varlvel de conLrole.

- A forma geral do comando uC e:
do v = vl , vf [, lncr]
sendo que:
- "v" e a varlvel do conLrole do lao uC.
- "vl" e o valor lnlclal de v.
- "vf" e o valor flnal ou mxlmo de v.
- "lncr" e o lncremenLo de v. Se for omlLldo, e suposLo como de valor 1.
- C comando LnuuC ou Lnu uC flnallza uma esLruLura uC. Sua forma geral e slmplesmenLe:
enddo
- Lxemplo:
do l=0,100,3
bloco de comandos
enddo

- LxlsLem duas esLruLuras uC:
1) A esLruLura uC - Lnu uC (repeaL loop) repeLe um bloco de comandos condlclonado ao valor
de uma varlvel de conLrole que deve varlar de modo flxo e pre-deLermlnado:
do v=vl,vf,lncr
bloco de comandos
end do
2) A esLruLura uC WPlLL - Lnu uC (whlle loop) execuLa o lao uC enquanLo uma expresso
lglca/relaclonal for verdadelra:
do whlle (var.ge.0)
bloco de comandos
end do
glna 40 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- C comando uC lmpllclLo e uma Lercelra forma do comando uC e somenLe pode ser usando
em comandos de enLrada ou salda de dados.
- Lxemplos de uso do comando uC lmpllclLo:
prlnL *,(var(l),l=1,10,1)
prlnL *,(var(l,[),[=10,20,2)
read(1,100)(var(l),l=2,8,2)
wrlLe((3,200)(var(l,[),[=1,3,1)
8.S.1. Laos de DC enca|xados
- L posslvel encalxar dols ou mals comandos uC.
- ara as esLruLuras uC encalxadas, o prlmelro comando Lnu uC aps o comando uC, fecha o
lao.

8.6. Comando LkI1
- C comando Lxl1 Lermlna abrupLamenLe um lao uC, dlreclonando o fluxo do programa para
a prlmelra llnha de comando aps o LnuuC daquele respecLlvo comando uC envolvldo.
8.7. Comando CCLL
- C comando C?CLL relnlcla abrupLamenLe um lao uC, dlreclonando o fluxo do programa para
a llnha do comando uC denLro do qual ele esL lnserldo.
8.8. Comando CCN1INUL
- C comando CCn1lnuL e um comando execuLvel que somenLe passa o conLrole para o
prxlmo comando execuLvel. A forma geral e:
conLlnue

8.9. Comando S1C
- C comando S1C Lermlna a execuo do programa. Apesar de sua locallzao denLro do
programa em geral ser a penulLlma llnha de comando, ele pode ser colocado em qualquer
poslo denLro do programa.
- A forma geral do comando S1C e:
sLop [varcar]
sendo que "varcar" e uma varlvel caracLer que ser exlblda na salda padro (em geral, a Lela
do monlLor do operador).
glna 41 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

8.10. Comando LND
- C comando Lnu lndlca o flnal de uma unldade de programa para o compllador. Sua forma
geral e:
end
e deve obrlgaLorlamenLe ser colocado na ulLlma llnha do programa.
8.11. Comando SLLLC1 CASL
- A esLruLura SLLLC1 CASL permlLe a execuo de apenas uma enLre mulLas opes posslvels.
- A esLruLura SLLLC1 CASL possul a segulnLe forma:
selecL case (var)
case (um_valor_de_var)
bloco de comandos 1
case (ouLro_valor_de_var)
bloco de comandos 2
case (ouLro_alnda_valor_de_var)
bloco de comandos 3
...
end selecL

- Lxemplo:
...
prlnL *,'ulglLe um numero de 1 a 10: '
read *,nu
selecL case (nu)
case (1:4)
prlnL *,'A opcao fol um numero no lnLervalo [1,4]'
case (3)
prlnL *,'A opcao fol pelo numero 3'
case (6:10)
prlnL *,'A opcao fol um numero no lnLervalo [6,10]'
end selecL
...
Cap|tu|o 9: Comandos de Lntrada]Sa|da
9.1. Introduo
- Cs "Comandos de LnLrada" fornecem um meLodo de Lransferlr dados de um dlsposlLlvo
perlferlco (como um Leclado) ou de um arqulvo lnLerno para a memrla prlnclpal. LsLe
processo e chamado de "lelLura de dados".
glna 42 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- Cs "Comandos de Salda" fornecem um melo de Lransferlr dados da memrla prlnclpal para
um dlsposlLlvo perlferlco (como um monlLor de vldeo ou lmpressora) ou um arqulvo lnLerno.
LsLe processo e chamado de "escrlLa" ou "gravao" de dados.
- Alguns comandos de L/S permlLem que se edlLe os dados duranLe a sua Lransferncla.

- nesLe caplLulo somenLe sero apresenLados os comandos de L/S que Lransferem dados
(8LAu, 8ln1, W8l1L). Comandos auxlllares no sero dlscuLldos.
9.2. keg|stros, Arqu|vos e Un|dades
- um "caracLere" e um unlco slmbolo, Lal como a leLra z, o dlglLo 4 ou um asLerlsco *.
- um "campo" e uma sucesso de caracLeres, que represenLa alguma lnformao, Lal como
AN1ONlO ou 128.47.
- um "reglsLro" e um grupo de campos que reune lnformaes sobre um unlco lLem, Lal como:
AN1ONlO 26-01-19J7 654J.21
(nome) (daLa nasc.) (salrlo)
- um "arqulvo" e um grupo de reglsLros, Lal como:

A N 1 O N l O

2 6 - 0 1 - 1 9 J 7 6 5 4 J . 2 1
A k N A l u O

2 2 - 1 0 - 1 9 4 5

9 8 7 . 6 5
M . c k l 5 1 l N A 0 7 - 0 9 - 1 9 4 2 1 2 J 4 . 5 6
1emos aclma um arqulvo, com Lrs reglsLros, cada reglsLro com Lrs campos e comprlmenLo
LoLal de 27 caracLeres.

- Cada comando de L/S opera sobre um unlco reglsLro.

- uma unldade de L/S e um melo de se referlr a um arqulvo. usa-se numeros de unldades de
L/S para dlsLlngulr um arqulvo de ouLro.

- CerLos numeros de unldades podem ser pre-deflnldos. Asslm, por exemplo, o numero 3 pode
lndlcar o Leclado e 6 pode lndlcar o monlLor de vldeo.

- C comando CLn esLabelece a conexo enLre o numero da unldade e um parLlcular arqulvo.

glna 43 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

9.3. Componentes dos Comandos de L]S
- Cs comandos de L/S so consLlLuldos de 3 parLes:
comando (especlflcadores) [llsLa]
sendo que:
especlflcoJotes deflnem aproprladamenLe a execuo do comando,
llsto deflne a(s) varlvel(els) sobre a(s) qual(ls) opera o comando.

9.3.1. L|sta de Lspec|f|cadores de Contro|e de L]S
- LxlsLem mulLos especlflcadores de conLrole de enLrada e salda. veremos somenLe os mals
lmporLanLes para o lnlclanLe.

- unl1: o especlflcador de unldade deslgna a unldade exLerna de L/S ou o arqulvo lnLerno a ser
usado para o comando de L/S no qual ele aparece. Seu uso e:
[unlL=]u ou [unlL=]*
sendo que:
- "u" e uma expresso lnLelra que deslgna o numero de L/S.
- "*" deslgna a unldade de enLrada padro em 8LAu e salda padro em 8ln1 ou W8l1L.

- Cs caracLeres "unlL=" somenLe podem ser omlLldos no caso do especlflcador de unldade ser o
prlmelro na llsLa de especlflcadores.

- lM1: o especlflcador de formaLo deslgna o formaLo a ser usado para o comando de L/S
formaLado ou o comando de L/S com llsLa dlreLa. Seu uso e
[fmL=]f ou [fmL=]*
sendo que:
- "f" e um ldenLlflcador de formaLo,
- "*" deslgna uma formaLao em llsLa dlreLa.

- Cs caracLeres "fmL=" somenLe podem ser omlLldos se o especlflcador de formaLo for o
segundo especlflcador e alnda o prlmelro especlflcador for o de unldade sem os caracLeres
"unlL=" .

glna 44 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- C ldenLlflcador de formaLo "f" pode ser um numero de um comando lC8MA1. Cu uma
expresso lnLelra (que acaba por lndlcar um comando lC8MA1). Cu especlflcaes de formaLo
(em forma de varlvel caracLere).

- Lxemplos. 1odos eles fazem a mesma colsa e alnda o comando 8LAu poderla ser subsLlLuldo
pelo comando W8l1L.
Lxemplo 1:
read(unlL=1,fmL=100) a,b
100 formaL(l3,f10.3)
Lxemplo 2:
read(1,100) a,b
100 formaL(l3,f10.3)
Lxemplo 3:
read(1,*) a,b

9.3.2. L|sta de L]S
- uma llsLa de L/S Lem a forma:
s[,s].
sendo que "s" e uma llsLa de lLens slmples ou uma llsLa de uC lmpllclLo.

- um lLem da llsLa pode ser um nome de varlvel, um nome de con[unLo, um nome de
elemenLo de con[unLo, um nome de subcadela caracLere ou uma llsLa de uC lmpllclLo. no caso
de llsLa de salda, alnda pode ser uma expresso.

- Lxemplos de llsLas de L/S (sem uC lmpllclLo):
read(3,100) A,8,C,u
read(3,20) x,?,C(!),u(3,4),L(l,k,7),1
read(4,121)l,A(l),!,8(l,!)
wrlLe(2,302) ALlA,8L1A
wrlLe(6,122) CAMA(4*!+2,3*l+2,4*k),C,u(L)

- 8eglsLro de enLrada conLendo os dados L, M e n, que so deflnldos como numeros lnLelros:
100223436789
que e lldo pelos comandos:
read(3,60) L,M,n
60 formaL(l3,l2,l7)
glna 4S de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

apresenLar os segulnLes valores:
L=100
M=22
n=3436789 .

- uma llsLa de uC lmpllclLo Lem a segulnLe forma:
(d , l = e1, e2 [,e3] )
sendo que:
- "d" e uma llsLa de L/S.
- l , e1, e2 e e3 Lm as mesmas formas, funes e efelLos que num comando uC.

- Ao lnves de usar:
prlnL *, A(1),A(2),A(3),A(4),A(3),A(6),A(7),A(8),A(9)
use
prlnL *, (A(l), l = 1,9) .

9.4. Comandos kLAD
- Cs comandos 8LAu Lransferem dados de enLrada para a memrla de Lrabalho.

- lMC81An1L: cada novo comando 8LAu passa a ler dados em uma nova llnha.

9.4.1. Comandos kLAD seqenc|a|s
- As formas acelLas dos comandos 8LAu sequenclal so:
read([unlL=]u,[fmL=]f) [llsLa]
ou
read f [, llsLa]
sendo que "f" pode ser subsLlLuldo por "*" para deslgnar uma llsLa dlreLa. Se "u" for
subsLlLuldo por "*" , a lelLura ser felLa na unldade de enLrada padro.

glna 46 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

- Lxemplos:
read(unlL=3,fmL=100) a,b,c
100 formaL(3f3.2)
e lgual a:
read(3,100) a,b,c
100 formaL(3f3.2)
que alnda podem ser slmpllflcados para:
read(3,*) a,b,c
(llsLa dlreLa)
ou
read(*,*) a,b,c
(aqul a lelLura passa a ser felLa a parLlr da enLrada padro)

9.S. Comandos WkI1L (kIN1)
- Cs comandos W8l1L (8ln1) Lransferem dados armazenados na memrla do compuLador
para dlsposlLlvos de salda (vldeo, arqulvos ou lmpressora).

- lMC81An1L: cada novo comando W8l1L (8ln1) passa a escrever dados em uma nova
llnha.

9.S.1. Comandos WkI1L (kIN1) seqenc|a|s
- As formas acelLas dos comandos W8l1L sequenclal so:
wrlLe([unlL=]u,[fmL=]f) [llsLa]
sendo que "f" pode ser subsLlLuldo por "*" para llsLa dlreLa.

- Lxemplos:
wrlLe(unlL=7,fmL=200) a,b,c
200 formaL(3f3.2)
ou
wrlLe(7,200) a,b,c
200 formaL(3f3.2)
(lgual ao comando anLerlor)
glna 47 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

ou
wrlLe(7,200) a,b,c
200 formaL(3f3.2)
(praLlcamenLe lgual aos comandos anLerlores)
ou
wrlLe(*,*) a,b,c
(escreve na salda padro)
- A dlferena enLre W8l1L e 8ln1 e que esLe ulLlmo somenLe escreve na salda padro (o
vldeo, no nosso caso). or lsso 8ln1 dlspensa o especlflcador de unldade.
- A forma acelLa do comando 8ln1 e:
prlnL f [, llsLa]
sendo que "f" pode ser subsLlLuldo por "*" para llsLa dlreLa.
- Lxemplos:
prlnL 200, a,b,c
200 formaL(3f3.2)
ou
prlnL *, a,b,c
(llsLa dlreLa)
9.6. Comandos de Cond|o de Arqu|vos de L]S
9.6.1. Comando CLN
- C comando CLn serve para lnlclallzar um arqulvo.

- A forma geral slmpllflcada do comando CLn e:
open([unlL=]u[,flle='a'][,sLaLus='b'])
sendo que:
- "u" e o numero da unldade.
- 'a' e uma expresso caracLere que especlflca o nome do arqulvo,
- 'b' especlflca a condlo do arqulvo, que pode ser:
-'nLW', para arqulvos novos, que vo ser crlados pelo programa,
-'CLu', para arqulvos [ exlsLenLes (em geral, arqulvos de enLrada de dados),
-'SC8A1CP', para arqulvos que so crlados pelo programa e que devem ser apagados no flnal
glna 48 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

da execuo desLe.
- 'unknCWn', para arqulvos para os quals no se apllca nenhuma das condles aclma.
9.6.2. Comando CLCSL
- C comando CLCSL serve para flnallzar um arqulvo. L o oposLo de CLn.
- A forma geral slmpllflcada do comando CLCSL e:
close([unlL=]u)
sendo que "u" e o numero da unldade.
Cap|tu|o 10: Comando ICkMA1 e Lspec|f|caes de Iormato
10.1. Introduo
- lC8MA1 e o comando que conLem uma llsLa de especlflcaes de formaLo que permlLe ao
programador Ler conLrole sobre os dados de enLrada e salda.
- Lxemplo do uso de um comando de formaLao:
8ln1 10 , n, x, ?
10 lC8MA1 ( l3, l8.3, l3.1)
sendo que:
- 8ln1 e lC8MA1 so comandos (ou palavras-chave),
- "10" e numero de comando,
- "n,x,?" e llsLa de salda,
- "l3,l8.3,l3.1" so especlflcaes de formaLo.

10.2. Comando ICkMA1
- A forma geral do comando lC8MA1 e:
n formaL (ef [,ef [,.,ef]])
sendo que:
- "n" e um numero de comando,
- "ef" e uma especlflcao de formaLo (converso ou edlo).

- ode-se usar o mesmo comando lC8MA1 em dlversos 8LAu, W8l1L ou 8ln1.

glna 49 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

10.3. Lspec|f|caes de Iormato (LI) de Converso
- As Ll de converso mals usadas so:
Lspeclflcao ConverLe dados
--------------------------------------------------------------------------
- l w lnLelros declmals
- l w.d reals declmals, sem expoenLe
- L w.d reals declmals, com expoenLe
- u w.d reals declmals dupla preclso, com expoenLe
- C w.d reals declmals, com ou sem expoenLe
- L w lglcos
- A w caracLeres
sendo que:
- "a" e uma consLanLe lnLelra, sem slnal e no-nula, usada para lndlcar o numero de vezes que
a mesma Ll e seguldamenLe usada.
- "w" e uma consLanLe lnLelra, sem slnal e no-nula, usada para lndlcar a largura LoLal do
campo exLerno (lnclulndo dlglLos, espaos, slnals algebrlcos + ou - , ponLo declmal e expoenLe).
- "d" e uma consLanLe lnLelra, sem slnal e que lndlca a quanLldade de dlglLos a dlrelLa do ponLo
declmal denLro do campo de largura w. na salda, Lodos os valores so arredondados.

- Lxemplos:
Lxemplo 1. ara escrever na Lela do monlLor as varlvels numerlcas
var1=111 var2=2222.22 var3=3 var4=44.44
pode-se usar a segulnLe comblnao de comandos:
prlnL 3,var1,var2,var3,var4
3 formaL(l3,f7.2,l1,f3.2)
Lxemplo 2: para escrever na Lela do monlLor a segulnLe llsLa de varlvels
var1=.Lrue. var2='amerlca' var3=111 var4=2222.22 var3=333.33e+03
pode-se usar a segulnLe comblnao de comandos:
prlnL 6,var1,var2,var3,var4,var3
6 formaL(l1,a7,l3,f7.2,e10.2)

10.4. Lspec|f|caes de Iormato de Ld|o
- As especlflcaes de edlo mals usadas no lorLran so:
Lspeclflcao luno
--------------------------------------
w x espaamenLo
/ nova llnha
glna S0 de S0

unlvL8SluAuL LS1AuuAL uC CLA8 - uLCL - Cu8SC uL llSlCA
ln18CuuC A ClLnClA uCS CCMu1AuC8LS
8ClLSSC8 u8. CA8LCS SAn1AnA -dr.acss[gmall.com
ACS1ILA DL ICk1kAN

sendo que "w" represenLa o numero de espaos dese[ados.

10.S. Lspec|f|caes de Iormato em Grupos kepet|dos
- C comando:
320 formaL( l3, l3, f8.3, e16.7, f8.3, e16.7, f8.3, e16.7)
pode ser escrlLo de manelra mals reduzlda:
320 formaL( 2l3, 3(f8.3, e16.7))
lonLe: hLLp://wwwp.fc.unesp.br/~lavarda/ por lranclsco C. Lavarda
kefernc|as
LlnCuACLM uL 8CC8AMAC LS18u1u8AuA lC818An, (LdlLora McCraw-Plll, 1986) de M.
L. Pehl