Índice 1.
Intr Introd oduç ução ão à lógi lógica ca de de prog progra rama maçã ção o 1 ______________ _____________________ ______________ ______________ _______4 4 1.1. Noções de lógica___________________ lógica___________________________ _________________ __________________ _________________ ___________ ___ 4 4 1.2. Algoritmos_____________________________________________________________ 4
1.2.1. 1.2.2. 1.2.3. 1.2.4.
______________________ _______________ ______________ ___________ ____ 5 Formas de Represe Representação ntação de Algoritmos Algoritmos ______________ _______________________________ ____________________ ____________________ _______________ _____ 6 Descrição Narrativa Narrativa _____________________ Fluxograma ________________ ________________________ ________________ _________________ _________________ _________________ ______________ _____ 6 Pseudocódigo _____________________________ _____________________________________________ ________________________________ ________________ 7
1.3. Linhas de Código de um Algoritmo ou Programa________________ Programa_______________________ _____________ ______ 8 8 1.4. !ecuç"o do Programa____________ Programa______________________ _____________________ ______________________ _________________ ______ 8 8 1.#. Coment$rios______________ Coment$rios______________________ _________________ __________________ _________________ __________________ ___________ _ 8 1.%. Constantes_____________________________________________________________ Constant es_____________________________________________________________ 8 1.&. 'ari$(eis_______ 'ari$(eis_________________ ____________________ ____________________ ___________________ ___________________ ________________ ______ 8
1.7.1. Nomes de variáveis ___________________________ ___________________ ____________________ ____________________ __________ 8 variáveis __________________ 1.7.2. 1.7.2. Tipos Tipos de Dados Dados Definidos Definidos Para as Va Variáveis___ riáveis________ ___________ ___________ __________ __________ ___________ ________ __ 8 1.7.3. 1.7.3. Declaraç Declaraço o de Variávei ariáveis____ s_________ _________ _________ _________ _________ _________ _________ _________ ________ _________ _________ ____ ! 1.8. strutura do algoritmo__________ algoritmo_____________________ ______________________ ______________________ _________________ ______ 11 11 1.). *+eradores aritm,ticos______________ aritm,ticos______________________ ________________ ________________ ________________ ___________ ___ 11 11 1.1-.
*+eradores relacionais______________ relacionais_______________________ __________________ _________________ _______________ _______ 12 12
1.11. 1.11.
*+eradores lógicos_________ lógicos______________ ___________ ___________ __________ __________ __________ __________ ___________ ______ 12 12
1.12.
egras de +reced/ncia__________ +reced/ncia________________ ____________ ____________ ____________ ____________ ___________ ________ ___ 12 12
1.13.
Atri0uiç"o__________ Atri0uiç"o_________________ _____________ ____________ ____________ _____________ ______________ ______________ _________ __ 13 13
1.14.
Comandos de entrada e sada___________ sada________________ ___________ ____________ ____________ ____________ ________ __ 13 13
1.14.1. Entrada de dados ___________________________________ ____________________________________________________ ______________________ _____ 13 13 1.14.2. Saída de dados ____________________________________ ______________________________________________________ _______________________ _____ 13 13 1.1#.
struturas de controle_________ controle______________ ___________ ____________ ___________ ____________ _____________ __________ ____ 1# 1#
1.1%.
strutura seencial________________ seencial________________________ _________________ _________________ ________________ ________ 1# 1#
1.1&.
struturas de seleç"o__________ seleç"o________________ ____________ ___________ ___________ ____________ ____________ __________ ____ 1# 1#
1.17.1. 1.17.2. 1.17.3. 1.17.4. 1.18.
"eleço si#ples___________ si#ples___________________ _________________ _________________ ________________ _________________ _______________ ______ 15 15 "eleço co#pos$a__________________ co#pos$a_______________________________ ___________________________ __________________________ ____________ 15 15 "eleço %nin&ada________________ %nin&ada_____________________________ ____________________________ ____________________________ _____________ 16 16 "eleço de #'l$ipla escol&a________________________ escol&a_______________________________________ _________________________ __________ 18 18
struturas de re+etiç"o__________ re+etiç"o________________ _____________ ______________ _____________ ____________ ___________ _____ 22-
1.18.1. (epe$iço co# $es$e $es$e no in)cio______ in)cio______________ _________________ _________________ ________________ _________________ _________ 2* 2* 1.18.2. (epe$iço co# $es$e $es$e no final___________ final___________________ _______________ _______________ ________________ _______________ _______ 2* 2* 1.18.3. (epe$iço co# variável de con$role___________________ con$role_______________________________ ________________________ ____________ 21 21 1.1).
'etores__ 'etores________ ____________ ____________ ___________ ____________ ____________ ____________ _____________ ____________ ___________ _____ 24 24
1.2-.
atri5es____________________ atri5es_________________________________ ________________________ ________________________ _______________ __ 2#
1. Introduç Introdução ão à lógica lógica de program programação ação1 1.1.
Noções de de lógica
A lógica lógica é a ação do pensament pensamento o humano humano para a soluçã solução o de problem problemas as do dia-a-dia dia-a-dia mas, pode pode também, ser a origem de outros problemas. É a característica característica do pensamento correto. A lógica busca a correção do raciocínio, e é determinante nas tomadas de decisões. Por isso a lógica ensina a colocar ordem no pensamento. A lógica está presente nas ações da nossa ida! "uando #alamos ou escreemos algo, por e$emplo, deemos ordenar as palaras de #orma lógica, de modo a e$pressar corretamente o "ue pensamos, o "ue sentimos e o "ue "ueremos. %$emplo! & carro está com o pneu a'io. & macaco e a chae de rodas estão no porta-malas. Preciso primeiro pegar o macaco e a chae de rodas, para depois tomar tomar outro passo para trocar o Preciso pneu do carro.
1.2.
Algoritmos
Algorit Algoritmo mo é uma uma se"( se"()nci )ncia a de ações, ações, organi' organi'adas adas de #orm #orma a lógic lógica, a, "ue "ue isam isam alcança alcançarr um ob*eti ob*etio o bem de#inido. Apesar Apesar do nome nome parecer parecer estran estranho, ho, algor algoritm itmos os são são comuns comuns em em nosso nosso coti cotidian diano, o, como como por por e$emp e$emplo lo uma receita de bolo. +ela está descrita uma série de ingredientes necessários, uma se"()ncia de diers diersos os passos passos ações ações a serem serem executados para "ue se consiga #a'er determinado tipo de bolo ob*etio bem de#inido. %$emplo! roca de uma l/mpada. pegue uma escada0 posicione-a embai$o da l/mpada0 bus"ue uma l/mpada noa suba na escada0 retire a l/mpada elha0 colo"ue a l/mpada noa0 %sse algoritmo tem um ob*etio, trocar uma l/mpada, e #a' isso bem. 1as troca a l/mpada mesmo "ue ela não este*a "ueimada. Podemos Podemos melhorar esse algoritmo para "ue a l/mpada não se*a trocada caso este*a #uncionando, #uncionando, incluindo um teste. ligue o interruptor0 se o interruptor não acender, então! pegue uma escada0 posicione-a embai$o da l/mpada0 bus"ue uma l/mpada noa0 suba na escada0 retire a l/mpada elha0 colo"ue a l/mpada noa0 Ainda Ainda pode ocorrer ocorrer de a noa noa l/mpada l/mpada também também não #uncion #uncionar ar,, podemos podemos alterar alterar o algorit algoritmo mo para "ue as l/mpadas continuem sendo trocadas até "ue alguma #uncione. ligue o interruptor0 se o interruptor não acender, então!
pegue uma escada0 posicione-a embai$o da l/mpada0 bus"ue uma l/mpada noa0 suba na escada0 retire a l/mpada elha0 colo"ue a l/mpada noa0 en"uanto a l/mpada não acender, #aça! retire a l/mpada0 colo"ue outra l/mpada0 Exercícios propostos 1
2 3m homem "uer atraessar um rio com um barco "ue pode carregar ele mesmo e apenas mais uma de suas tr)s cargas! um lobo, um carneiro e um maço de al#a#a. & "ue o homem dee #a'er para atraessar o rio sem perder nenhuma de suas cargas4 5 6uponha "ue oc) possua um rob7 e "ueira #a')-lo trocar uma l/mpada e depois con#erir se a mesma acende, sendo "ue o mesmo #oi programado para obedecer os seguintes comandos! pegue 8ob*eto9 largue 8ob*eto9 pressione 8ob*eto9 gire garras 2:; graus no sentido horário para#usar gire garras 2:; graus no sentido anti-horário moa 8ob*eto9 para
anói, "ue consiste em = hastes a-b-c, uma das "uais sere de suporte para os tr)s discos de tamanhos di#erentes 2-5-=, os menores sobre os maiores. Pode-se moer um disco de cada e' para "ual"uer haste, sendo "ue nunca dee ser colocado um disco maior sobre um menor. & ob*etio é trans#erir os tr)s discos da haste ?a@ para a haste ?c@. 1oa 8disco n9 da haste 8n29 para haste 8n59
2 5 = a
1.2.1.
b
c
Formas de Representação de Algoritmos
%$istem diersas #ormas de representação de algoritmos. Algumas #ormas de representação de algoritmos tratam os problemas apenas em níel lógico, abstraindo-se de detalhes de implementação muitas e'es relacionados com alguma linguagem de programação especí#ica. Por outro lado, e$istem #ormas de representação de algoritmos "ue possuem uma maior ri"ue'a de detalhes e muitas e'es acabam por obscurecer a idéia principal, o algoritmo, di#icultando seu entendimento. entre as #ormas de representação de algoritmo mais conhecidas, destacam-se! A descrição narratia0
& #lu$ograma conencional0 & pseudocódigo, também conhecido como linguagem estruturada ou Portugol.
1.2.2.
Descrição Narrativa
1.2.3.
Fluxograma
+esta #orma de representação, os algoritmos são e$pressos em linguagem natia, como o e$emplo do algoritmo da troca de l/mpada, discutido acima. Blu$ograma é uma #erramenta desenolida e usada pelos pro#issionais de análise de sistemas, bem como, por alguns pro#issionais de &rgani'ação, 6istemas e 1étodos. em como #inalidade descreer o #lu$o, se*a manual ou mec/nico, especi#icando os suportes usados para os dados e in#ormações. 3sa símbolos conencionais, permitindo poucas ariações. Cepresentado por alguns desenhos geométricos básicos, os "uais indicarão os símbolos de entrada de dados, do processamento de dados e da saída de dados, acompanhados dos procedimentos re"ueridos pelo analista de sistemas e a serem reali'ados pelo programador por meio do desenolimento do raciocínio lógico, o "ual deerá solucionar o problema do programa a ser processado pelo computador. A tabela abai$o mostra alguns símbolos e seu signi#icado. Símolo
Signi!icado
erminal D Endica início ou #im do #lu$o
&peração de entrada e saída. Fenérica, sem indicar dispositio.
Procedimentos. Gomandos simples.
&peração de saída. Hídeo, impressora, etc.
ecisão. Endica "ue uma ou mais comparações serão #eitas com a possibilidade de desio para outras partes do programa.
Gonectores.
6entido do #lu$o.
%$emplo! Enício
Ier notas +2 e +5 1ed J +2K+5<5 +ão
6im 6e 1ed 9J L.;
%screa reproado
%screa aproado
Bim
Exercícios propostos 2
2 %labore um #lu$ograma para ler duas notas, calcular a média semestral e in#ormar ao aluno se ele está reproado, em e$ame ou aproado. Gonsiderar a média para aproação direta igual ou superior a L,;. Para #icar de recuperação e$ame, o aluno terá "ue ter média semestral mínima não in#erior a 2,ML. 5 %labore um noo #lu$ograma a partir do desenolido para a "uestão anterior, in#ormando se o aluno está aproado ou não após o e$ame. & aluno deerá ter média semestral não in#erior a N,; obedecendo ao seguinte cálculo! média semestral após e$ame J media semestral antes do e$ame $ M K nota do e$ame $ O<2;. Hide critérios de aaliação da 3%6G no semestre 5;;=.5.
1.2.".
Pseudocódigo
A partir deste ponto, iniciaremos o estudo de algoritmos usando pseudocódigo portugol. 3m modelo de escrita para #acilitar o desenolimento de algoritmos. & pseudocódigo usado a"ui terá uma organi'ação sinta$e praticamente id)ntica da linguagem G, com as palaras chae tradu'idas para o portugu)s e com algumas simpli#icações. %ste aspecto é original, ou se*a, não #oi baseado em nenhuma
re#er)ncia. Pre#erimos "ue o algoritmo se*a ensinado com a sinta$e semelhante a linguagem G pela #acilidade "ue se obterá com este aspecto "uando o G #or estudado. & ob*etio de apresentar o pseudocódigo, é tornar o aluno #amiliari'ado com a lógica de programação, atraés de algoritmos simples, antes de e#etiamente começar a programar com a linguagem G. É e$tremamente importante compreender os assuntos a"ui abordados pois serão necessários "uando estiermos programando em G. A lógica de programação # !undamental para aprender a programar e muito importante para $%rias disciplinas de um curso de ci&ncia da computação' portanto' apro$eite e estude muito.
1.3. (in)as de *ódigo de um Algoritmo ou +rograma Iinhas de código nada mais são do "ue a escrita do programa linha a linha, ou se*a, a sinta$e do programa. odas as linhas escritas de um programa de#inem o código de comandos do programa, e, *unto ao código pode-se escreer comentários sobre ele. 1.". ,xecução do +rograma Quando escreemos um programa, para "ue ele mostre os e#eitos resultados do "ue #oi escrito e solicitado atraés das linhas de comando, é necessário "ue o programa se*a e$ecutado. Para tanto basta "ue acionemos um comando para essa e$ecução começar. %m um algoritmo escrito em portugol ou similar, só é possíel a e$ecução do mesmo a níel do raciocínio lógico de nós mesmos D com o cérebro. 3m algoritmo ou programa só é e$ecutáel por uma má"uina computador se nele tier um outro programa compilador "ue trans#orme a linguagem usada no código do programa para a linguagem "ue o computador entenda. Por isso é importante "ue #açamos um bom e$ercício mental colocando o cérebro para e$ecutar algoritmos. Ba'endo assim, aprenderemos a lógica de programação e conse"uentemente aprenderemos a programar. 1.-. *oment%rios Gomentários são anotações escritas nas pro$imidades das linhas de código de um algoritmo ou programa, e são usados para e$plicar melhor alguma parte do código para eitar con#usões de entendimento na hora de sua análise. Para podermos identi#icar um comentário no código do programa ou algoritmo usaremos o símbolo
Nomes de variveis
& nome de uma ariáel #a' re#er)ncia ao endereço de memória onde essa ariáel se encontra. %$istem algumas regras para a utili'ação das ariáeis! +ome de ariáel pode ter 2 ou mais caracteres. & primeiro caractere de uma ariáel dee ser uma letra ou sublinhado S . +enhuma ariáel pode ter espaço em branco em seu nome.
+enhum nome de ariáel pode ser uma palara reserada a uma instrução da linguagem usada. Poderão ser utili'ados somente letras, nTmeros e sublinhado0 Procure sempre utili'ar ariáeis "ue tenham sentido 1nem7nico.
1./.2.
ipos de ados e!inidos +ara as 0ari%$eis
Para definir +#a variável , necessário dar +# no#e para ela e definir o $ipo de infor#aço -+e ela irá +ardar. /sse $ipo pode ser +# valor n+#,rico in$eiro0 +# valor real o+ +# carac$er o+ con+n$o de carac$er s$rin.
Inteiro toda e "ual"uer in#ormação numérica "ue pertença ao con*unto dos nTmeros inteiros.
%$emplos! a 2;;
b U
d NU;;
4eal toda e "ual"uer in#ormação numérica "ue pertença ao con*unto dos nTmeros reais.
%$emplos! a 2;;.UU
c =2: b ;.;;2
c 2.N
d :.N;NM
*aractere 6ão caracteri'adas com as se"()ncias contendo letras, nTmeros e símbolos
especiais, ou se*a, "ual"uer símbolo e$istente é um caracter. 3ma se"()ncia de caracteres dee ser indicada entre aspas dupla ?a"ui 5O?, é também denominada 6tring. 3m caracter dee ser colocado entre aspas simples VAW. %$emplos! a ?oi mundoX@ b ?não pise na grama@ c V2W d VaW e V V
1./.3.
eclaração de 0ari%$eis
# prora#a0 e# #+i$as vees0 precisa +$iliar variáveis e cons$an$es. #a cons$an$e será definida no caeçal&o do prora#a e0 nor#al#en$e0 no #+dará se+ valor d+ran$e o processa#en$oeec+ço do prora#a. %s variáveis pode# $er o se+ valor al$erado d+ran$e a eec+ço do prora#a. %s cons$an$es0 para o caso dos alori$#os -+e va#os cons$r+ir sero definidas co# le$ras #ai'sc+las. %s variáveis $ero -+e ser declaradas loo no in)cio de cada prora#a. %s variáveis deve# ser declaradas antes de serem usadas e no local ade-+ado para se+ f+nciona#en$o. #a declaraço especifica +# $ipo0 e pode ser se+ida por +#a o+ #ais variáveis da-+ele $ipo0 separadas por vir+las. 9 fi# da declaraço , indicada por pon$o e v)r+la. 6inta$e! tipo lista_de_nomes;
/e#plos: in$eiro dia0 #;s< carac$er seo0 escol&a< carac$er no#e=8*>0 dia_se#ana=1*>< real no$a10 no$a20 #edia< %o declarar variáveis do $ipo carac$er co# #ais de +# carac$er0 o+ o+$ro $ipo co# o oe$ivo de +ardar #ais de +# valor0 deve?se definir o se+ $a#an&o en$re colc&e$es0
loo ap@s o no#e da variável0 co#o no ee#plo aci#a. %aio #os$ra?se +# pe-+eno prora#a ee#plo. MAX = 80 NM! = "Maria" #rograma principal In$cio Inteiro idade% ano% me&% dia' (eal media% notoa1% nota)' *aracter &e+o' *aracter nome,80-' media = nota1 / nota))' 2im
Ao pe-+eno prora#a aci#a0 no$a?se -+e MAX e NM! so cons$an$es. %s variáveis declaradas so: idade0 ano0 me& e dia co#o in$eiro< media0 nota10 nota) co#o real< &e+o co#o carac$er de +#a le$ra e nome co#o carac$er de oi$en$a 8* le$ras. 9serve# a posiço e# -+e cada +#a , escri$a no prora#a. %s cons$an$es so definidas an$es do in)cio do prora#a principal. %s variáveis so declaradas loo ap@s o in)cio do prora#a principal. Exercícios propostos
2 etermine "ual é o tipo primitio de in#ormação presente nas sentenças abai$o!
δ
a A placa ?PareX@ tinha dois #uros de bala. b Yose#ina subiu N degraus para pegar uma maçã boa. c Alberta leou = horas e meia para chegar ao hospital onde concebeu uma garota. d Belisberto recebeu sua 2:Z medalha por ter alcançado a marca de NL,= segundos nos 2;; metros rasos. e É melhor seguir pela ?Cua@ VAW .
5a a b c d e # g h i * \ l
Assinale os identi#icadores de tipos álidos! V[W 35 AhX ?aluno@ NN \m
α β χ
5b Assinale os identi#icadores de ariáeis álidas! m V[W n 35 o AhX
p " r s t u $
?aluno@ NN \m
= 6uponha "ue as ariáeis +^, +A, +1at, 6[ se*am utili'adas para arma'enar, respectiamente, a nota do aluno, o nome do aluno, um nTmero inteiro para a matrícula e o se$o com uma letra, declare-as corretamente. O %ncontre os erros ou inade"uação em relação a mnem7nicos nas seguintes declarações de ariáeis! a inteiro endereço, nBilhos0 b caractere ida de, 2$0 c real cru'eiros, U$pto, c, peso, out0 N 6e uma ariáel arma'enará nomes com o má$imo de U; letras, declare uma ariáel para guardar um nome "ual"uer. M e#ina uma constante e declare uma ariáel para receber o alor da diisão da constante PE =.2O2N2M por 2;. L %$pli"ue os termos! a Algoritmos b Gódigo c Programa d Hariáel e Gonstante # Gomentários g 1emória h %$ecução i Gompilação * ipos
1.5. ,strutura do algoritmo &s algoritmos serão estruturados da seguinte maneira! definição de constantes /*Definição das funções para tarefas específicas*/ Nome_função_1(lista de declarações) { declarações de variáveis; comandos; . . . retorno(valor); } . . . Nome_função_n(lista de declarações) {
declarações de variáveis; comandos; . . . retorno(valor); }
Programa rincial( ) { declaração de variáveis; comandos! inclusive as c"amadas ara funções! etc; }
&nde o abrir chaes e o #echar chaes delimitam respectiamente onde o algoritmo começa e onde este termina. +as declarações serão de#inidos os nomes e os tipos das ariáeis usadas, no algoritmo.
9 corpo do prora#a con$erá $odas as ins$r+çBes -+e devero ser eec+$adas. 9 n'#ero de #@d+los f+nçBes do prora#a dependerá do prora#ador. C reco#endável para a por$ailidade0 clarea de c@dio e #an+$enço do alori$#o -+e os prora#as sea# fei$os e# módulos e co# endentaç"o. 1.6. 7peradores aritm#ticos &s operadores são um con*unto de símbolos "ue indicam uma determinada operação a ser #eita pelo programa. 7perador
Signi!icado
K R <
Adição 6ubtração 1ultiplicação iisão Cesto de diisão inteira
1.18. 7peradores relacionais 3tili'amos os operadores relacionais para reali'ar comparações entre dois alores de mesmo tipo. ais alores são representados por constantes, ariáeis ou e$pressões aritméticas. &s operadores relacionais são! 7perador
Signi!icado
JJ XJ, 89, 9 9J, 8 8J,
Egual a i#erente de 1aior "ue maior ou igual a 1enor "ue menor ou igual
& resultado obtido é sempre um alor lógico. %$emplo! 5 R O J J 5O < = erdadeiro : J J : erdadeiro
1.11. 7peradores lógicos 3tili'aremos tr)s operadores básicos para a #ormação de e$pressões lógicas. &s operadores lógicos são! 7perador
Signi!icado
.%., ff .&3., X
&perador lógico e &perador lógico ou +egação
1.12. 4egras de preced&ncia Algumas e'es a ordem em "ue são reali'adas as operações podem alterar o resultado de uma e$pressão, essa ordem é de#inida pelas regras de preced)ncia. A tabela a bai$o lista em ordem decrescente a preced)ncia dos operadores. %ssa ordem pode ser mudada com o uso dos par)nteses, sendo e$ecutadas primeiro as operações dentro dos par)nteses mais internos. &perador X R< K 8 9 JJ .%. .&3. J
Signi!icado
+egação e negatio 1ultiplicação, diisão e resto da diisão inteira Adição e subtração 1aior "ue, maior ou igual a, menor "ue e menor ou igual a Egual e di#erente &perador lógico e &perador lógico ou Atribuição
Exercício proposto
etermine os resultados obtidos na aaliação das e$pressões lógicas seguintes, sabendo "ue A, ^, G, e % cont)m respectiamente 5, L, =.N, ?noite@ e ?#rio@! a ^ J J A R G b ?dia@ J J .&3. ?#rio@ ?clima@ c ^ < A G .&3. A G d = < L R 5 J J 2O < A .&3. ^ D = G K ;,N e ^ K -5 J J 5 R G R 5 < 2;
1.13. Atriuição Para atribuir um alor a uma ariáel, o tipo do alor #ornecido dee ser compatíel com o tipo da ariáel. Esso é #eito da seguinte #orma! variável = expressão; %$emplo! inteiro $0
Exercícios propostos
2 %ncontre os erros nos seguintes comandos de atribuição! real ^, G0 inteiro 0 J ^0 G K 2 J ^ K G0
^ J 2; K 5 < U D 2N < -O < 5 N R -20 G .%. ^ J =.N0
1.1". *omandos de entrada e saída +a criação de algoritmos precisamos de comandos para entrar com as in#ormações para o algoritmo e esperamos "ue o algoritmo nos retorne uma in#ormação como saída.
1.1".1. Entrada de dados
& comando de entrada, atraés do "ual #aremos o algoritmo esperar "ue lhe se*a passada alguma in#ormação será o leia. 6inta$e! leia(parâmetro_! parâmetro_"! ###! parâmetro_n$;
&s par/metros serão ariáeis "ue receberão os alores digitados pelo usuário.
1.1".2. Saída de dados
3m algoritmo não teria serentia alguma se não pudesse nos deoler algum resultado. Baremos os algoritmos retornarem seus resultados atraés do comando escrea. 6inta$e! escreva(parâmetro_! parâmetro_"! ###! parâmetro_n$;
&s par/metros podem ser ariáeis, constantes ou e$pressões "ue serão impressas na tela, na ordem em "ue aparecem na #unção. %$emplo!
2 3tili'ando o seguinte trecho de algoritmo! ... inteiro $, 0 real '0 escrea?$! @0 leia$0 escrea$, ? ao cubo J @, $R$R$0 escrea?! @0 leia0 escrea$ K 0 ' J $ < 0 escrea'0
' J ' K 20 $ J K ' 50 escrea$0
... %$pli"ue o "ue está acontecendo em cada linha e "ual é o resultado de cada ação e$ecutada. 5 Gite e discorra sobre tr)s e$emplos do seu dia-a-dia nos "uais oc) encontra e$plicitados entrada, saída e processamento. = Baça uma analogia de entrada, processamento e saída de dados com o "ue acontece "uando oc) l) e sinteti'a um liro e "uando oc) dialoga com outra pessoa. O Galcular e e$ibir a área de um "uadrado, a partir do alor de sua aresta "ue será digitado. N Galcular e e$ibir a área de um "uadrado a partir do alor de sua diagonal "ue será digitado. M A partir dos alores da base e altura de um tri/ngulo, calcular e e$ibir sua área. L Galcular e e$ibir a média aritmética de "uatro alores "uais"uer "ue serão digitados. : Galcular e e$ibir a tensão de um determinado circuito eletr7nico a partir dos alores da resist)ncia e corrente elétrica "ue serão digitados. 3tili'e a lei de &hm. U %ntrar ia teclado com o alor de uma temperatura em graus Gelsius, calcular e e$ibir sua temperatura e"uialente em Bahrenheit. 2; %ntrar ia teclado com o alor da cotação do dólar e uma certa "uantidade de dólares. Galcular e e$ibir o alor correspondente em Ceais C. 22 %ntrar ia teclado com o alor de cinco produtos. Após as entradas, digitar um alor re#erente ao pagamento da somatória destes alores. Galcular e e$ibir o troco "ue deerá ser deolido.
1.1-. ,struturas de controle Atraés das estruturas básicas de controle do #lu$o de e$ecução D se"(encial, seleção, repetição D e da combinação delas, poderemos criar um algoritmo para solucionar ários problemas. 1.1. ,strutura se9:encial Ações "ue serão e$ecutadas na ordem em "ue #oram escritas, de cima para bai$o e da es"uerda para a direita. & ponto-e-írgula 0 delimita o #im de um comando.
1.1/. ,struturas de seleção 1.1/.1. Seleção simples
3ma estrutura de seleção permite a escolha de um bloco de comandos a ser e$ecutado "uando determinadas condições, representadas por e$pressões lógicas, são ou não satis#eitas. 6inta$e! se (condição) {
;
comando_; comando_"; comando_n;
&nde condição é uma e$pressão lógica. &s comandos só serão e$ecutados se a condição resultar erdadeira. As chaes permitem a e$ecução de todos os comando dentro da estrutura de seleção. 6e houer apenas um comando não é necessário as chaes, e a seleção termina no primeiro ponto e írgula.
1.1/.2. Seleção composta
3m segundo bloco de comandos é adicionado, estes serão e$ecutados somente se a condição testada #or #alsa, isto se #a' usando a palara reserada senão. 6e a condição resultar erdadeira, somente os comandos dentro da seleção se serão e$ecutados, os comandos dentro do senão não são e$ecutados, passando-se a aaliar a linha logo abai$o do Tltimo comando senão. 6inta$e! se (condição) {
comando_; comando_"; comando_n;
} senão {
comando_; comando_"; comando_n;
}
%$emplo2!
se media L
` 6e dese*armos escreer mais de um comando dentro da estrutura se
%$emplo5!
1.1/.3. Seleção Anin)ada
%struturas de seleção podem ser aninhadas, ou se*a, podemos incluir uma estrutura de seleção dentro de outra. Esso pode ser #eito "uantas e'es #or necessário. Para melhor compreensão obsere a sinta$e abai$o. 6inta$e! se (condição) {
comando_; comando_"; comando_n;
} senão { se (condição) {
comando_; comando_"; comando_n; % senão & se (condição$ & comando_; comando_"; comando_n; % senão &
# # # % % %
%$emplo
1.1/.". Seleção de m=ltipla escol)a
& uso de uma estrutura c)a$e s>itc) de mTltipla escolha em programação, pode ser #eito com o uso da aaliação de casos em "ue uma constante?c)a$eadora ou alor de uma ariáel dentro da c)a$e é comparado com a constante de cada caso. 6e na aaliação do caso resultar em satis#i'er a condição resultado erdadeiro, normalmente é e$ecutado o comando de parada pare rea@ e a estrutura c)a$e é abandonada e$ecutando-se os comandos #ora da estrutura. 6e nenhum dos casos satis#i'er a condição todos os casos #orem #alsos, o comando caso?contr%rio de!ault, se e$istir, será e$ecutado. 6e o comando caso?contr%rio não e$istir, o símbolo chaes ; no programa é encontrado e é #echada a estrutura de mTltipla escolha saindo da mesma. He*amos a sinta$e abai$o. 6inta$e! c)a$e constante?c)a$eadora B C caso constante?1
comandoS20 comandoS50 . . comandoSn0
pareD . . . caso constante?n
comandoS20 comandoS50 . . comandoSn0 pareD
. . caso?contr%rio
comandoS20 comandoS50 . . comandoSn0 ;
%$emplo! Programa principal _ real preço0 inteiro origem0 leiapreço, origem0 c)a$e origem _ caso 1
escreapreco, ? D produto do sul@0
pareD caso 2
escreapreco, ? D produto do norte@0
pareD caso 3
escreapreco, ? D produto do leste@0
pareD caso "
escreapreco, ? D produto do oeste@0
pareD caso -
escreapreco, ? D produto do sudeste@0 caso
escreapreco, ? D produto do centro-oeste@0
caso /
escreapreco, ? D produto do nordeste@0 caso contr%rio
escreapreco, ? D produto importado@0
;
2 Ba'er um algoritmo para entrar ia teclado com dois alores distintos e e$ibir o maior deles. 5 3sando a estrutura de escolha de ários casos chae D caso #a'er um algoritmo para entrar com dois alores "uais"uer e e$ibir o maior deles, se e$istir, caso contrário, eniar mensagem aisando "ue os nTmeros são id)nticos. = Ba'er um algoritmo para calcular e e$ibir a área de um ret/ngulo, a partir dos alores da base e altura "ue serão digitados. 6e a área #or maior "ue 2;;, e$ibir a mensagem ?erreno grande@. O Ba'er um algoritmo para calcular e e$ibir a área de um ret/ngulo, a partir dos alores da base e altura "ue serão digitados. 6e a área #or maior "ue 2;;, e$ibir a mensagem ?erreno grande@, caso contrário, e$ibir a mensagem ?erreno pe"ueno@. N Ba'er um algoritmo para entrar ia teclado com tr)s alores distintos. %$ibir o maior deles. M Ba'er um algoritmo para, a partir de tr)s alores "ue serão digitados, eri#icar se #ormam ou não um tri/ngulo. %m caso positio, e$ibir sua classi#icação! ?Esósceles, escaleno ou e"(ilátero@. 3m tri/ngulo escaleno possui todos os lados di#erentes, o isósceles, dois lados iguais e o e"(ilátero, todos os lados iguais. Para e$istir tri/ngulo é necessário "ue a soma de dois lados "uais"uer se*a maior "ue o outro, isto, para os tr)s lados. L Ba'er um algoritmo para eri#icar se tr)s alores "uais"uer a, b, c "ue serão digitados #ormam ou não um tri/ngulo ret/ngulo. : %screa um algoritmo para determinar se um nTmero lido do teclado é maior, menor, ou igual a 'ero. U
3sando a estrutura se
1.15. ,struturas de repetição 6ão estruturas usadas para repetir um trecho de código, "uando a aaliação da condição #or satis#eita, en"uanto essa condição #or erdadeira os comandos dentro da estrutura #icam se repetindo. A condição dee, em algum momento, tornar-se #alsa ou a estrutura #icará se repetindo in#initamente. 1.15.1. 4epetição com teste no início
A"ui o teste é #eito antes de iniciar cada e$ecução dos seus comandos. 6inta$e! enquanto (condição$ {
comando_; comando_"; # #
# comando_n;
}
&s comandos entre chaes são repetidos en"uanto a condição lógica entre os par)nteses #or erdadeira, sendo "ue o teste é #eito antes da e$ecução dos comandos. %$emplo!
ma J n2 K n5 K n= K nO < O0 escre$a?+ome! ?, nome, ?1édia anual! @, ma0 se ma 9J L escrea?aluno aproado@0 senão
escrea?aluno reproado@0 cont J cont K 20
;
1.15.2. 4epetição com teste no !inal
+esta estrutura de repetição, os seus comandos são e$ecutados antes de acontecer o teste, sendo o resultado do teste erdadeiro o bloco de comandos da estrutura será e$ecutado noamente. 6inta$e! faça {
comando_; comando_"; comando_n;
} enquanto (condição$;
& bloco de comandos é e$ecutado, então, se a condição #or erdadeira, o bloco é e$ecutado noamente, até "ue a condição se*a #alsa. %$emplo!
real ma,
mat J acm < N;0
1.15.3. 4epetição com $ari%$el de controle
%ssa estrutura tra' algumas #acilidades para ocasiões onde o nTmero de repetições iterações é de#inido. %la permite iniciali'ar a ariáel "ue serirá de contador, de#inir a condição de parada e o incremento do contador. 6inta$e! para (iniciali'ação; condição; controle$ {
comando_; comando_";
comando_n;
}
%$emplo! Programa Principal C
real ma, acm, mat0 inteiro i0 acm J ;0 para i J 20 i 8 JN;0 i J i K 2 C
escrea?entre com a média anual do aluno@0 leiama0 acm J acm K ma0
;
mat J acm < N;0 escrea?média anual da turma! @, mat0
;
%ste e$emplo #a' o mesmo "ue o e$emplo anterior, mas usa a estrutura para. Feralmente um problema pode ser resolido de árias maneiras di#erentes, cabe ao programador escolher a melhor opção. +o e$emplo acima o termo para parece ser mais ade"uado. Exercícios propostos
2 Ba'er um algoritmo para entrar com dois alores ia teclado, onde o segundo deerá ser maior "ue o primeiro. Gaso contrário solicitar noamente apenas o segundo alor. 5 Ba'er um algoritmo para entrar ia teclado com de' alores positios. Heri#icar a digitação e eniar mensagem de erro, se necessário. Após a digitação, e$ibir! a & maior alor0 b A soma dos alores0 c A média aritmética dos alores0 = Ba'er um algoritmo para criar uma rotina de entrada "ue aceite somente um alor positio. O Ba'er um algoritmo para entrar ia teclado com o se$o de determinado usuário, aceitar somente ?B@ ou ?1@ como respostas álidas. N Ba'er um algoritmo para e$ibir a tabuada do nTmero cinco no interalo de um a de'. M Ba'er um algoritmo para e$ibir a soma dos nTmeros inteiros positios do interalo de um a cem. L Ba'er um algoritmo para e$ibir os trinta primeiros alores da se"uencia de Bibonacci! 2, 2, 5, =, N, :, 2=, ... : Ba'er um algoritmo para entrar ia teclado com um alor "ual"uer. raar a digitação, no sentido de aceitar somente alores positios. Após a digitação, e$ibir a tabuada do alor solicitado, no interalo de um a de'. U Ba'er um algoritmo para entrar ia teclado com um alor [ "ual"uer. raar a digitação, no sentido de aceitar somente alores positios. 6olicitar um interalo A D ^ para "ue o programa possa calcular a tabuada do alor digitado, sendo "ue o segundo alor ^, deerá ser maior "ue o primeiro A, caso contrário, digitar noamente somente o segundo. Após a alidação dos dados, e$ibir a tabuada do alor digitado, no interalo decrescente, ou se*a, a tabuada de [ no interalo de ^ para A. 2; Ba'er um algoritmo para calcular o #atorial de um alor "ue será digitado. %ste alor não poderá ser negatio. %niar mensagem de erro e solicitar o alor noamente, se necessário. Perguntar se o usuário dese*a ou não #a'er um noo cálculo, consistir a resposta em ?6@ ou ?+@. 22 Ba'er um algoritmo para entrar ia teclado com ?+@ alores "uais"uer. & alor ?+@ "ue representa a "uantidade de nTmeros será digitado, deerá ser positio, mas menor "ue inte. Gaso a "uantidade
a b c d e #
não satis#aça a restrição, eniar mensagem de erro e solicitar o alor noamente. Após a digitação dos ?+@ alores, e$ibir! maior alor0 menor alor0 A soma dos alores0 A média aritmética dos alores0 A porcentagem de alores "ue são positios0 A porcentagem de alores negatios0
25 Ba'er um algoritmo para após e$ibir os dados, perguntar ao usuário se dese*a ou não uma noa e$ecução do programa. Gonsistir a resposta no sentido de aceitar somente ?6@ ou ?+@ e encerrar o programa em #unção dessa resposta. 2= & *ogo da mega-sena consiste em acertar seis dos sessenta nTmeros disponíeis em um olante. Ba'er um programa para calcular a "uantidade de *ogos "ue temos "ue #a'er, para com certe'a acertar o resultado da mega-sena. Admitindo "ue #aremos *ogos de seis nTmeros por olante, o programa deerá e$ibir "uais seriam estes nTmeros em cada olante, ou se*a, e$ibir todos os resultados possíeis.
1.16. 0etores Até a"ui, apresentamos uma #orma simples para reserar espaço de memória no computador, ou se*a! atraés do arti#ício da declaração de ariáeis simples. %$emplo de uso simples da memória Gonsidere o código de declaração abai$o! inteiro num0 real media0 1%1CEA num
#edia
Gon#orme se pode obserar na #igura acima, a memória é diidida em células. Gonsideramos "ue cada célula é constituída de : oito bits de capacidade e pode arma'enar um Tnico caracter. Ao declarar a ariáel num como inteiro, a má"uina reserará uma "uantidade dessas células para arma'enar um alor numérico inteiro. Gomo os inteiros são menores "ue os alores reais, o espaço de memória reserado para este tipo inteiro também é menor "ue o espaço reserado para o tipo real. +ormalmente nas má"uinas, para um tipo real é arma'enado o dobro do espaço do tipo inteiro. esta #orma, se para um inteiro a ar"uitetura da má"uina dispor de 5 células e cada célula #or constituída por : bits, o inteiro terá capacidade para 2M bits en"uanto um alor real terá =5 bits de capacidade. %ntretanto, a declaração de ariáeis simples não garante "ue possamos guardar na memória mais "ue um alor ao mesmo tempo. Por e$emplo, no problema de cálculo de média aritmética de duas notas de uma turma de alunos, se declararmos uma ariáel simples de#inida como media, esta ariáel somente poderá guardar na memória um alor por e', sendo este alor substituído pelo pró$imo e assim por diante. 6e dese*armos arma'enar ários alores reais do mesmo nome ao mesmo tempo, como no caso de árias médias de alunos, pode-se determinar "ue a má"uina computador resere espaço de memória re#erenciada pelo nome média mas com ários campos do tamanho de um alor do tipo real, colocando um colchetes após a de#inição do nome da ariáel e o tamanho "ue se dese*a reserar dentro dos colchetes, con#orme mostrado abai$o na declaração da ariáel média com tamanho para N cinco médias de alunos e não mais apenas uma média como apresentado anteriormente. real mediajNk0 1%1CEA mediaj;k mediaj2k mediaj5k mediaj=k mediajOk
esta #orma, pode-se dedu'ir, "ue para arma'enar ários alores correspondentes a mesma ariáel pode-se utili'ar etores para alocação de memória. %ntretanto, "uando tentarmos arma'enar espaço em memória para ários nomes, é bom lembrar "ue um Tnico nome *á ocupa uma cadeia de células na memória. eido a isso, para arma'enar espaço para ários nomes #icarem arma'enados na memória ao mesmo tempo, é necessário #a'ermos o uso de um etor de duas dimensões! uma dimensão para os caracteres do nome e uma outra para indicar cada nome. Assim, nas colunas #icam arma'enados os caracteres de cada nome e em cada linha é reserado o espaço para a posição endereço de cada nome. He*a a declaração no código a seguir e o es"uema abai$o. caracter nomejNkj2;k0 1%1CEA
/ndereço dos no#es
caracteres ;25=ONML:Unomej;k1ariaPeranomej2kiao6ou'anomej5kGaco^omn omej=karciFolnomejOk1arta6il
Gomo pode-se obserar, no es"uema acima está a representação da memória com espaço para cinco nomes de no má$imo 2; caracteres cada um.
%$emplo2 Ba'er um algoritmo para ler um etor real de 2; elementos e imprimir os alores maiores ou iguais a 'ero.
1.28. EatriFes 3ma matri' nada mais é "ue um etor bidimensional. +o e$emplo dado acima, com a ariáel nome, na realidade, usamos uma matri' para guardar N cinco nomes. esta #orma, podemos também reserar espaço em memória para uma matri' numérica, se*a ela do tipo real ou inteira. & código a seguir e o es"uema de memória abai$o a*udam a compreender o "ue acontece. inteiro AjOkjNk0 ; 2 5 =
; Aj;kj;k Aj2kj;k Aj5kj;k Aj=kj;k
2 Aj;kj2k Aj2kj2k Aj5kj2k Aj=kj2k
5 Aj;kj5k Aj2kj5k Aj5kj5k Aj=kj5k
= Aj;kj=k Aj2kj=k Aj5kj=k Aj=kj=k
O Aj;kjOk Aj2kjOk Aj5kjOk Aj=kjOk
Gomo pode-se obserar acima, o conteTdo de Aj;kj;k ocupará a primeira célula, o conteTdo de Aj;k j2k ocupará a segunda célula, assim por diante até a Tltima célula ou o conteTdo de Aj=kjOk. Ao estudar uma estrutura como etores ou matri'es pode-se concluir "ue "ual"uer ariáel de um tipo caracter, inteiro ou real pode ser de#inida como uma dessas estruturas. A opção pelo uso delas está na necessidade para a solução do problema. %$emplo5
Ba'er um algoritmo para ler uma matri' A e uma outra matri' ^ de alores inteiros, somar as duas matri'es e colocar o resultado em uma matri' G. A matri' G deerá ser impressa na tela. Gonsiderar a ordem de todas as matri'es lidas como 5$5.
2 ado o etor H%, de#inido por! inteiro H%j2;;k0 a preench)-lo com o alor =;0 b preench)-lo com os nTmeros inteiros 2, 5, =..., 2;;0 c preencher H%jEk com 2, se E é "uadrado per#eito, e com ;, nos demais casos. 5 ado o seguinte etor! "ual será a sua con#iguração depois de e$ecutados os comandos! H% =5O25N:= para E J L0 E9JO0 EJE-2 _ au$JH%jEk0 H%jEk J H%jLD E K2k0 H%jL D E K 2k J au$0 ` H%j5kJH%j;k0 H%jH%j5kk J H%jH%j2kk0 = %screa um algoritmo em portugol, para um programa "ue! a leia um con*unto A de 2;; elementos reais0 b construa e imprima um outro con*unto ^ #ormado da seguinte maneira! i os elementos de ordem par são os correspondentes de A diididos por 50 ii os elementos de ordem ímpar são os correspondentes de A multiplicados por =. O ado o seguinte etor de caracteres! H%
C[6%&^AX
Qual será a sua con#iguração após serem e$ecutados os comandos a seguir 4 au$ J H%jNk0 H%jNkJH%j:k0 H%j:kJau$0 para EJ;0 E8J=0 EJEK2 _ au$ J H%jEk0 H%jEkJH%j: D Ek0 H%j: D Ek J au$0 ` H%jNk J H%j2k0 N %screa um algoritmo em portugol "ue! a Ieia um con*unto A de 5; elementos do teclado0 b calcule e imprima o alor de 6, onde!
6 J A2 D A5;5 K A5 D A2U5 K ......K A2; D A225 2;
ou se*a, 6 J ∑ Ai D A52-i5 i J2
M Ba'er um algoritmo para ordenar um etor de nTmeros em ordem crescente. & etor ordenado deerá ser impresso na tela. L %screa um algoritmo "ue leia dois etores de 2; posições e #aça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceiro etor. 1ostre o etor resultante. : %screa um algoritmo "ue leia um etor de 5; posições e mostre-o. %m seguida, tro"ue o primeiro elemento com o Tltimo, o segundo com o penTltimo, o terceiro com o antepenTltimo, e assim sucessiamente. 1ostre o noo etor depois da troca. U %screa um algoritmo "ue leia um etor de :; elementos inteiros. %ncontre e mostre o menor elemento e sua posição no etor. 2; %screer um algoritmo "ue l) 5 etores [2; e ]2; e os escree. Grie, a seguir, um etor "ue se*a a a união de [ com ]0 b a di#erença entre [ e ]0 c a soma entre [ e ]0 d o produto entre [ e ]0 e a intersecção entre [ e ]. %screa o etor a cada cálculo. 22 Baça um algoritmo "ue leia um etor de N;; posições de nTmeros inteiros e diida todos os seus elementos pelo maior alor do etor. 1ostre o etor após os cálculos. 25 3ma locadora de ídeos tem guardada, em um etor de N;; posições, a "uantidade de #ilmes retirados por seus clientes durante o ano de 2UU=. Agora, esta locadora está #a'endo uma promoção e, para cada 2; #ilmes retirados, o cliente tem direito a uma locação grátis. Baça um algoritmo "ue crie um outro etor contendo a "uantidade de locações gratuitas a "ue cada cliente tem direito. 2= %screer um algoritmo para a geração da seguinte matri'! 2 2 2 2 2 2
2 5 5 5 5 2
2 5 = = 5 2
2 5 = = 5 2
2 5 5 5 5 2
2 2 2 2 2 2
2O ada a matri' 1A abai$o! a d g
b e h
c # i
Qual será a con#iguração de 1A depois de e$ecutado o algoritmo4 início inteiro E, Y0 caracter au$0 caracter 1A jOkjOk0 para EJ;0 E8J=0 EJEK2 _ para YJEK20 Y8J=0 YJYK2 _ au$ J 1AjEkjYk0 1AjEkjYkJ1AjYkjEk0 1AjYkjEkJau$0 ` ` au$J1Aj2kj2k0 1Aj2kj2kJ1AjOkjOk0 au$J1Aj5kj5k0 1Aj5kj5kJ1Aj=kj=k0 1Aj=kj=kJau$0 #im 2N escrea o "ue será produ'ido depois de e$ecutados os comandos abai$o se! 2 5 2 A J = 2 O GJ
2 5 2
= 2 O
para EJ;0 E850 EJEK2 _ para YJ;0 Y850 YJYK2 _ para \J;0 \8J50 \J\K2 _ escreaAjEkj\k K Gj\kj*k0 ` ` ` 2M Ba'er um algoritmo para multiplicar duas matri'es de mesma ordem. A matri' produto deerá ser impressa na tela. 2L %screa um algoritmo "ue l) uma matri' 1N$N e calcula as somas! a da linha O de 1 b da coluna 5 de 1 c da diagonal principal d da diagonal secundária
e de todos os elementos da matri' 1 %screer essas somas e a matri'. 2: %screer um algoritmo "ue l) uma matri' 12;$2; e a escree. ro"ue, a seguir! a a linha 5 com a linha : b a coluna O com a coluna 2; c a diagonal principal com a diagonal secundária d a linha N com a coluna 2;. %screa a matri' assim modi#icada. 2U %screer um algoritmo "ue l) uma matri' 1N$N e cria 5 etores 6IN e 6GN "ue contenham, respectiamente, as somas das linhas e das colunas de 1. %screer a matri' e os etores criados. 6i0liogra7ia
?Iógica de programação@ de Borbellone e %berspcher ?Algoritmos e %struturas de ados@ de Fuimarães
Por #aor, ao encontrar algum erro<#alha no material #aor entrar em contato pelo e-mail! daidq*oinille.udesc.br En#ormando a página e o erro. Bicaremos muito agradecido por oc) a*udar a construir um material didático melhor para os alunos da 3%6G de Yoinille D 3niersidade PTblica de "ualidade e gratuita.