apostina unisa

Upload: regiaracroelhas8206

Post on 30-Oct-2015

275 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/16/2019 Apostina Unisa

    1/168

    Algoritmos e

    Linguagem deProgramao

    Elisamara de Oliveira

    Revisada por Clausia Mara Antoneli (janeiro/2013)

  • 7/16/2019 Apostina Unisa

    2/168

    APRESENTAO

    com satisao que a Unisa Digital oerece a voc, aluno(a), esta apostila de Algoritmos e Lingua-gem de Programao, parte integrante de um conjunto de materiais de pesquisa voltado ao aprendizadodinmico e autnomo que a educao a distncia exige. O principal objetivo desta apostila propiciar

    aos(s) alunos(as) uma apresentao do contedo bsico da disciplina.

    A Unisa Digital oerece outras ormas de solidicar seu aprendizado, por meio de recursos multidis-

    ciplinares, como chats, runs, aulas web, material de apoio e e-mail.

    Para enriquecer o seu aprendizado, voc ainda pode contar com a Biblioteca Virtual: www.unisa.br,

    a Biblioteca Central da Unisa, juntamente s bibliotecas setoriais, que ornecem acervo digital e impresso,bem como acesso a redes de inormao e documentao.

    Nesse contexto, os recursos disponveis e necessrios para apoi-lo(a) no seu estudo so o suple-

    mento que a Unisa Digital oerece, tornando seu aprendizado eciente e prazeroso, concorrendo para

    uma ormao completa, na qual o contedo aprendido infuencia sua vida prossional e pessoal.

    A Unisa Digital assim para voc: Universidade a qualquer hora e em qualquer lugar!

    Unisa Digital

  • 7/16/2019 Apostina Unisa

    3/168

    SUMRIO

    INTRODUO............................................................................................................................................... 5

    1 ALGORITMOS ........................................................................................................................................... 71.1 O que um Algoritmo? .................................................................................................................................................71.2 Conceitos Bsicos da Programao de Computadores ....................................................................................91.3 Etapas da Programao de Computadores ........................................................................................................121.4 Expresso de Algoritmos ..........................................................................................................................................131.5 Os Algoritmos sero Expressos em Pseudolinguagem .................................................................................18

    1.6 Resumo do Captulo ....................................................................................................................................................191.7 Atividade Proposta.......................................................................................................................................................19

    2 PSEUDOLINGUAGEM DE PROGRAMAO: PORTUC............................................. 212.1 Identicadores ...............................................................................................................................................................212.2 Tipos Bsicos e Declarao de Variveis ...............................................................................................................222.3 Comando de Atribuio .............................................................................................................................................232.4 Operadores Aritmticos ............................................................................................................................................242.5 Operadores Lgicos ....................................................................................................................................................252.6 Operadores Relacionais..............................................................................................................................................282.7 Comando Condicional ................................................................................................................................................292.8 Comando de Repetio..............................................................................................................................................312.9 Comandos de Entrada e Sada .................................................................................................................................332.10 Separador de Comandos .......................................................................................................................................372.11 Comentrios .................................................................................................................................................................372.12 Bloco de Programa ....................................................................................................................................................382.13 Resumo do Captulo .................................................................................................................................................41

    3 CONSTRUO DE ALGORITMOS EM PORTUC: PRATICANDO OSCOMANDOS E FAZENDO CLCULOS ....................................................................................43

    3.1 Declarao de Variveis Comandos leia e imprima ................................................................................433.2 Comando Condicional se ........................................................................................................................................443.3 Bloco de Programa .......................................................................................................................................................453.4 Operaes Bsicas com Nmeros ..........................................................................................................................463.5 Operaes com Operadores Lgicos e Relacionais .........................................................................................493.6 Resumo do Captulo ....................................................................................................................................................513.7 Atividades Propostas ...................................................................................................................................................51

    4 METODOLOGIA PARA A CONSTRUO DE ALGORITMOS ................................... 554.1 Os Passos da Metodologia ........................................................................................................................................554.2 Soluo de Exerccios utilizando a Metodologia ..............................................................................................57

    4.3 Resumo do Captulo ....................................................................................................................................................574.4 Atividades Propostas ...................................................................................................................................................58

  • 7/16/2019 Apostina Unisa

    4/168

    5 A LINGUAGEM DE PROGRAMAO C.................................................................................. 615.1 Tipos Bsicos e Declarao de Variveis em C ...................................................................................................615.2 Operadores de Atribuio, Aritmticos, Relacionais e Lgicos (Binrios) em C ..................................625.3 Comando Condicional em C (i) ..............................................................................................................................655.4 Comando de Seleo Mltipla em C (switch) ....................................................................................................685.5 Comando de Repetio em C (while) ....................................................................................................................715.6 Comando de Repetio em C (or) .........................................................................................................................72

    5.7 Comandos de Leitura e Escrita em C ....................................................................................................................765.8 Comentrios em C .......................................................................................................................................................795.9 Bloco de Programa em C ..........................................................................................................................................795.10 Funes teis em C ...................................................................................................................................................815.11 Traduo de PortuC para a Linguagem C .......................................................................................................845.12 Resumo do Captulo .................................................................................................................................................895.13 Atividades Propostas ................................................................................................................................................89

    6 USANDO COMANDOS DE REPETIO EM C ................................................................... 916.1 Comando de Repetio Entrada Indeterminada de Dados (uso de ags) ..........................................91

    6.2 Comando de Repetio Entrada de Dados Determinada .........................................................................946.3 Exemplo dos Minutos Telenicos ..........................................................................................................................966.4 Exemplo do Preo Final de Automveis ............................................................................................................1006.5 Exemplo da Eleio ....................................................................................................................................................1046.6 Exemplo da Srie Numrica ...................................................................................................................................1086.7 Resumo do Captulo ..................................................................................................................................................1126.8 Atividades Propostas .................................................................................................................................................112

    7 OUTROS PROGRAMAS EM C .....................................................................................................119

    8 PRTICA EM LABORATRIO ......................................................................................................1278.1 Estudo Dirigido ........................................................................................................................................................... 127

    9CONSIDERAES FINAIS .............................................................................................................131

    RESPOSTAS COMENTADAS DAS ATIVIDADES PROPOSTAS ...................................133

    REFERNCIAS ...........................................................................................................................................175

  • 7/16/2019 Apostina Unisa

    5/168Unisa | Educao a Distncia | www.unisa.br5

    INTRODUO

    Esta apostila se reere disciplina Algoritmos e Linguagem de Programao do curso de Engenha-

    ria de Produo, na modalidade a distncia, da Unisa.

    O objetivo desta disciplina capacitar voc, caro(a) aluno(a), a azer os primeiros programas de

    computador utilizando uma linguagem de programao. Escrever programas de computador uma ta-

    rea muito interessante, instigante e desaadora! Vamos comear entendendo o que um algoritmo,

    que um roteiro com instrues sequenciais para se resolver um problema ou se realizar alguma tarea.

    como uma receita de bolo, que indica os ingredientes e as instrues para se azer o bolo passo a passo.

    Usando essa analogia, os ingredientes seriam os dados, os passos seriam as instrues do programa e oorno para assar o bolo seria o computador!

    O universo dos computadores muito simples, muito limitado, mas muito poderoso: tudo se ba-

    seia na base 2, que possui apenas 2 algarismos: 0 e 1. Esses dois dgitos binrios, ou bits, ormam a lingua-gem de mquina, que a nica linguagem que o computador digital entende. Mas ns vamos aprender

    a escrever as instrues dos nossos programas numa linguagem de programao chamada C, que mais

    prxima da nossa linguagem de comunicao. Ns nos comunicamos em Portugus, certo? Ento vamos

    comear a escrever nossos primeiros algoritmos em PortuC, uma pseudolinguagem, e depois traduzi-

    -los para um programa em linguagem C. Isso ainda no resolve nosso problema: para que o computador

    possa executar nosso programa em C, ele precisa ser traduzido para linguagem de mquina! Mas issoser eito acilmente pelo compilador C, um programa que az exatamente isso: traduz programas em C

    para instrues binrias (linguagem de mquina).

    Como voc pode ver, ser um belo desao! Ento, caro(a) aluno(a), ae seu raciocnio lgico e pre-

    pare-se para entrar num mundo em que a lgica ser o carro-chee! No tema nada, pois tudo ser

    ensinado de orma simples e didtica... Mais algumas pginas rente e voc j estar programando seu

    computador!

    Proa. Dra. Elisamara de Oliveira

  • 7/16/2019 Apostina Unisa

    6/168Unisa | Educao a Distncia | www.unisa.br7

    ALGORITMOS1

    Em nosso dia a dia, executamos mecanicamente uma srie de aes, que so seguidas sequencial-

    mente e que provocam o acontecimento de algo. Por exemplo, temos um trajeto requente ao sairmos

    diariamente de casa em direo ao nosso trabalho ou nossa universidade, que, sempre que seguido,

    nos leva ao nosso destino. Isso um algoritmo. Em outras palavras, um algoritmo descreve eventos com

    durao nita, que envolvem um conjunto de objetos cujas caractersticas podem ser alteradas, atravs

    de aes que ocorrem sequencialmente.

    1.1 O que um Algoritmo?

    Vamos, juntos, entender o que so algoritmos, utilizando inicialmente alguns conceitos j denidos

    na literatura tcnica da rea:

    Alm dessas importantes denies, acrescentemos que, num algoritmo, podem-se observar os

    seguintes aspectos:

    ao: evento que ocorre num perodo de tempo nito;

    estado: propriedades de um objeto numa dada situao;

    processo: sequncia temporal de aes;

    padro de comportamento: toda vez que seguido, um evento ocorre.

    AtenoAteno

    Programar construir algoritmos.Programa = algoritmo + estruturas de dados.No processo de construo de programas, a ormulao do algoritmo e a denio das estruturas de dados estointimamente ligadas.

  • 7/16/2019 Apostina Unisa

    7/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br8

    Apesar de muito simples, algumas observaes importantes podem ser notadas nesse algoritmo:

    o tempo verbal est na orma imperativa (aa, traga, rite etc.);

    h um sequenciamento das aes, que esto separadas por um ponto e vrgula;

    o avental no usado toda vez: existe um motivo para coloc-lo, ou seja, h uma condio para

    que o avental seja colocado;

    o nmero de batatas descascadas varia; a ao de descascar uma batata repete-se at que a

    condio de parada (ser suciente para alimentar as pessoas que iro jantar) seja alcanada;

    a ordem das aes importante: primeiro descasca-se a batata, pica-se a batata, para depois rit-la...

    Exemplos de algoritmos conhecidos:

    Qual o algoritmo que voc descreve para vir estudar?

    Qual o algoritmo para se azer uma eijoada?

    Qual o algoritmo para se trocar uma lmpada?

    Apesar de receitas culinrias e trajetos rotineiramente percorridos encaixarem-se pereitamente no

    conceito inicial de algoritmo, no nosso curso, estamos interessados num tipo de algoritmo especial, queseja capaz de ser executado por um computador. Para tanto, necessrio que identiquemos problemasdo mundo real que possam ser traduzidos em aes primitivas nitas e dos quais se possa extrair umpadro de comportamento.

    Saiba maisSaiba mais

    Exemplo de um algoritmo

    Algoritmo para azer batatas ritas para o jantar

    Traga a cesta com batatas da despensa;Traga a panela do armrio;Coloque leo na panela;Se a roupa clara

    ento coloque o avental;

    Enquanto n de batatas insufciente para o nmero de pessoas aa

    descasque as batatas;

    Pique as batatas;Esquente o leo da panela;Frite as batatas na panela;Escorra o excesso de leo das batatas ritas;

    Coloque as batatas ritas numa vasilha com papel absorvente.

  • 7/16/2019 Apostina Unisa

    8/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br9

    Com base nos exemplos apresentados at aqui, estamos prontos para denir o que um algoritmo.

    Um algoritmo a descrio de um padro de comportamento, expresso em termos de um

    repertrio bem denido e nito de aes primitivas que podem ser executadas.

    Analise a denio e veja como coerente com o que apresentamos; no mesmo? Alm disso,

    importante observar que, num algoritmo, distinguem-se claramente dois aspectos:

    aspecto esttico: que corresponde ao texto;

    aspecto dinmico: que corresponde sua execuo (a partir de valores iniciais).

    O curso de Algoritmos e Linguagem de Programao , na realidade, um curso de Programao de

    Computadores para alunos(as) que iniciam cursos superiores na rea de Engenharia e Inormtica. Sei

    que voc est curioso(a) para conhecer um algoritmo, mas, para comear a construir seus algoritmos e

    azer seus primeiros programas de computador, necessrio que voc domine uma srie de conceitosbsicos, que so apresentados a seguir, a comear pelo prprio computador!

    1.2 Conceitos Bsicos da Programao de Computadores

    Fonte: http://evotecinormatica.blogspot.com/p/como--cuidar-do-seu-computador.html.

    Computador: uma mquina capaz de seguir uma espcie de algoritmo chamado programa, queest escrito em linguagem de mquina.

    Linguagem de mquina: internamente, o computador executa uma srie de instrues que camarmazenadas em sua memria principal em cdigo binrio, ou seja, em linguagem de mquina (zeros (0)

    e uns (1), que so os dgitos binrios ou bits).

    Linguagem de alto nvel: para escrever os programas de computador, os programadores utilizam

    linguagens que esto mais prximas da linguagem humana, que so chamadas linguagens de alto nvelou, simplesmente, linguagens de programao. Exemplos de linguagens de programao (alto nvel)

    so: C, C++, C#, Pascal, Delphi, Java, Basic, VisualBasic, Fortran, Cobol, entre muitas outras.

  • 7/16/2019 Apostina Unisa

    9/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br10

    Linguagem de montagem ouAssembly: h programas de computador que precisam interferirdiretamente no hardware da mquina para permitir a execuo de unes especcas, como as oere-cidas por sistemas operacionais, por exemplo. Nesse caso, os programadores utilizam as linguagens de

    montagem ou linguagens assembly, que esto muito prximas da linguagem de mquina e mais distan-tes das linguagens de programao, sendo, por isso, chamadas linguagem de baixo nvel.

    A Figura 1 mostra a relao entre as linguagens discutidas anteriormente.

    Figura 1 Relao entre linguagens de baixo e de alto nvel.

    Numa ponta da Figura 1, est a linguagem de mquina e, no outro extremo, esto as linguagens

    humanas. Quanto mais prxima da linguagem de mquina, mais de baixo nvel a linguagem; em con-

    trapartida, quanto mais prxima das linguagens humanas, mais alto nvel. As linguagens de programa-

    o azem uma espcie de ponte entre a linguagem binria, ou linguagem que o computador entende,

    e a linguagem que ns humanos utilizamos.

    Linguagem de programao: Uma linguagem de programao uma linguagem utilizada poruma pessoa para expressar um processo atravs do qual o computador possa resolver um problema.

    (SEBESTA, 2000). Pessoas que possuem uma compreenso limitada da linguagem natural tendem a ser

    mais limitadas para expressar seus pensamentos, especialmente em termos de capacidade de abstrao.

    Programadores que tiveram pouca educao ormal em disciplinas de Computao tendem a continuar

    a usar a mesma linguagem de programao, mesmo que esta esteja em desuso. A aprendizagem con-

    tnua undamental. necessrio que os programadores conheam os undamentos das linguagens

    de programao para que possam ler, entender e aprender com os manuais e livros tcnicos das novas

    linguagens e os novos paradigmas que venham a surgir.

    Compilador: permite que os programadores utilizem linguagens de alto nvel para escrever osprogramas de computador, pois se encarrega de traduzi-los para linguagem de mquina. O compilador

    um programa que traduz uma determinada linguagem de programao para linguagem de mquina.

    Dessa orma, existem diversos compiladores especcos para cada uma das linguagens de programao

    e para cada sistema operacional, conorme ilustra a Figura 2.

  • 7/16/2019 Apostina Unisa

    10/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br11

    Figura 2 Os compiladores so especcos para cada linguagem e para cada sistema operacional.

    Conorme ilustra a Figura 2, um compilador C para o sistema operacional Windows (compilador

    X) dierente de um compilador C para o sistema operacional Linux (compilador Y), que tambm di-

    erente de um compilador C para o sistema operacional Mac OS (compilador Z), por exemplo, embora a

    linguagem de programao (C) seja a mesma (linguagem de alto nvel). O compilador de linguagem de

    montagem ou linguagem assembly chamado assembler.

    Caro(a) aluno(a), dadas essas explicaes bsicas, como unir todas essas inormaes para come-

    armos a programar? A Figura 3 vai nos ajudar, mostrando o ciclo completo da elaborao do algoritmo execuo de um programa de computador. Cada um dos componentes desse ciclo explicado a seguir.

    Figura 3 Do algoritmo execuo de um programa de computador.

  • 7/16/2019 Apostina Unisa

    11/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br12

    Algoritmo: estrutura do programa; instrues que descrevem a lgica do programa;

    Editor de texto: permite que o cdigo-onte do programa seja editado em um arquivo-onte.Alguns compiladores tm editores com ambiente de programao integrados, como o caso

    do compilador Dev C++;

    Cdigo-onte: conjunto de comandos escritos na linguagem de programao escolhida (que,neste curso, ser a linguagem C). O cdigo-onte ca armazenado no arquivo-onte em orma-

    toASCii, ou seja, em texto [o arquivo-onte possui a extenso relativa linguagem de progra-mao usada, por exemplo, .pas (Pascal), .c(C), .cpp (C++), .cs (C#), .java (Java)];

    Compilador: l o cdigo-onte do programa e cria outro arquivo, com o mesmo programaescrito em linguagem de mquina;

    Cdigo-objeto: arquivo resultante da compilao do cdigo-onte. Contm inormaes so-bre alocao de memria, os smbolos do programa (como nomes de variveis e de unes) e

    tambm inormaes sobre debug (o arquivo-objeto possui a extenso .objpara a maioria daslinguagens de programao);

    Arquivos de biblioteca: contm unes j compiladas que podem ser utilizadas no programa;

    Linker: programa auxiliar do compilador que cria o programa executvel a partir de arquivos--objeto e dos arquivos de biblioteca;

    Cdigo executvel: programa que pode ser executado no computador (o arquivo executvelpossui a extenso .exe).

    Resumindo todo esse processo, caro(a) aluno(a), vamos precisar passar por 5 etapas: obter um pro-

    blema a ser resolvido; escrever um algoritmo em pseudolinguagem para solucionar esse problema; tra-

    duzir o algoritmo para a linguagem de programao C; e, nalmente, editar esse programa e usar um

    compilador C para testar seu uncionamento!

    1.3 Etapas da Programao de Computadores

    Como acabamos de dizer, para conseguirmos construir programas de computador, necessrio

    cumprir 5 etapas bsicas da programao. As 5 etapas da programao de computadores so:

    1. identicao de um problema do mundo real;2. coneco do algoritmo;

    3. teste do algoritmo;

    4. coneco do programa de computador;

    5. execuo do programa no computador.

    Para realizarmos esse ciclo de etapas com sucesso, quer dizer, para conseguirmos azer programas

    de computador com qualidade e conveis, muito importante a utilizao de tcnicas de programao,

    como a programao estruturada. A programao estruturada uma metodologia de projeto e desen-volvimento que pretende:

  • 7/16/2019 Apostina Unisa

    12/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br13

    acilitar a escrita;

    acilitar o entendimento;

    permitir a vericao;

    acilitar a alterao e a manuteno dos programas de computador.

    O principal objetivo da metodologia de programao estruturada reduzir a complexidade dosproblemas. Essa metodologia, quando utilizada, induz o programador a produzir programas:

    conveis;

    de cil manuteno;

    fexveis;

    documentados;

    legveis.

    Sendo assim, caro(a) aluno(a), vamos aprender a programar da melhor maneira possvel: utilizando

    as regras da programao estruturada!

    1.4 Expresso de Algoritmos

    Os algoritmos podem ser expressos atravs de diagramas, de pseudolinguagens ou da prpria lin-

    guagem de programao. Vamos examinar cada uma dessas trs opes e, no nal deste captulo, vamosoptar por uma delas, para que possamos comear a azer nossos primeiros algoritmos!

    Expresso de Algoritmos Atravs de Diagramas

    A utilizao de diagramas para a expresso de algoritmos oi bastante utilizada at a dcada de

    1980. Diagramas de Chapin e fuxogramas oram os principais mtodos utilizados ento. Nos mtodos

    baseados em diagramas, uma grande variedade de ormas geomtricas, como quadrados, retngulos,

    hexgonos, pentgonos etc., utilizada para representar as instrues de leitura e impresso de dados,

    assim como os comandos condicionais, de repetio etc. Alm disso, uma srie de regras para a dispo-

    sio dessas ormas e/ou setas para representar o sequenciamento das instrues azem parte desses

    mtodos.

    Apesar de terem sido utilizados largamente pelas primeiras geraes de programadores, esses m-

    todos apresentam uma srie de inconvenincias, tais como:

    o programador tem que memorizar todas as ormas geomtricas e conhecer as regras de in-

    ter-relacionamento entre elas;

    o programador perde um tempo considervel para azer e reazer desenhos, tendo que possuirdiversas rguas com os smbolos dos diagramas;

    para algoritmos muito grandes, os desenhos comeam a ocupar muitas pginas, tornando im-

  • 7/16/2019 Apostina Unisa

    13/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br14

    praticvel a visualizao de toda a soluo;

    a memorizao de regras de expresso desvia a ateno do programador, que no tem apenas

    de se concentrar na lgica do problema, como seria desejvel, mas tem as preocupaes adi-

    cionais de elaborar desenhos e consultar regras e regras.

    Alm de todos os inconvenientes citados, que de longe esgotam os seus problemas, os mtodos

    baseados em diagramas se distanciam muito do alvo da programao, que a expresso da lgica al-

    gortmica na prpria linguagem de programao! Alm disso, esses mtodos no so nem um pouco

    intuitivos. Veja a Figura 4 e tente descobrir o que o programa az, sem muito esoro, se or possvel:

    Figura 4 Algoritmo expresso atravs de um diagrama de Chapin.

    A Figura 5 mostra um exemplo de um algoritmo expresso atravs de um fuxograma. Observe a

    existncia de dierentes ormas geomtricas para as dierentes instrues e o uso de setas para represen-tar o fuxo dos dados. Voc seria capaz de dizer o que esse algoritmo az? Quais as variveis que ele utiliza

    e de que tipo bsico elas so? (Dica: esse algoritmo az a mesma coisa que o expresso pelo diagrama de

    Chapin, da Figura 4).

  • 7/16/2019 Apostina Unisa

    14/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br15

    Figura 5 Algoritmo expresso atravs de um fuxograma.

    Expresso de Algoritmos Atravs de Linguagem de Programao

    Expressar um algoritmo atravs de uma linguagem de programao o objetivo, a meta do pro-

    gramador, com certeza, mas isso eito quando o programador j adquiriu bastante experincia de pro-

    gramao, quer dizer, quando o programador j consegue programar diretamente da linguagem de pro-gramao. Os programadores iniciantes podem ter grandes diculdades para aprender a programar se

    orem diretamente s instrues da linguagem de programao.

    Uma linguagem de programao permite, alm da expresso do raciocnio algortmico, a sua exe-

    cuo no computador (por causa do compilador, conorme j aprendemos). Embora as linguagens de

    programao sejam chamadas linguagens de alto nvel, devido sua proximidade com a linguagem hu-

    mana, suas instrues vm em ingls. O ingls uma das diversas linguagens humanas, claro, mas pode

    oerecer certo desconorto aos estudantes, principalmente aos que alam portugus, como o nosso

    caso.

    Existem diversas linguagens de programao. Cada uma pode ser mais adequada resoluo deproblemas especcos e recebe alguns rtulos por isso, como linguagens para aplicaes cientcas, lin-

    guagens para desenvolvimento de sotware bsico, linguagens para utilizao intensiva de recursos

  • 7/16/2019 Apostina Unisa

    15/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br16

    grfcos, para manipulao de bancos de dados etc. e linguagens para o ensino de programao!

    Veja a Figura 6. um cdigo escrito em Pascal.

    Figura 6 Algoritmo expresso na linguagem de programao Pascal.

    A Figura 6 mostra um algoritmo expresso na linguagem de programao Pascal, ou seja, j um

    programa de computador. Observe a estrutura do programa: comea com PROGRAM, depois tem a se-

    o VAR, na qual as variveis so declaradas e, depois, vm as instrues contidas entre o BEGIN (incio) e

    o END (m). Voc seria capaz de dizer o que esse algoritmo az? Quais as variveis que ele utiliza e de que

    tipo bsico elas so? (Dica: esse programa az a mesma coisa que o expresso pelo diagrama de Chapin e

    pelo fuxograma, mostrados nas Figuras 4 e 5).

    Agora, observe o exemplo de um programa escrito na linguagem de programao C.

    Figura 7 Algoritmo expresso na linguagem de programao C.

  • 7/16/2019 Apostina Unisa

    16/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br17

    A Figura 7 mostra um algoritmo expresso na linguagem de programao C, ou seja, tambm um

    programa de computador. Observe a estrutura do programa: comea com um comentrio, depois tem

    a incluso de uma biblioteca de unes, depois a declarao das variveis e, em seguida, vem a seo

    main, na qual as instrues do programa esto contidas entre o { (incio) e o } (m). Voc seria capaz dedizer o que esse algoritmo az? Quais as variveis que ele utiliza e de que tipo bsico elas so? (Dica: esse

    programa az a mesma coisa que o expresso pelo diagrama de Chapin, pelo fuxograma e pelo programa

    Pascal, mostrados nas Figuras 4, 5 e 6).O programa traz um comentrio dizendo explicitamente o que ele az. Portanto, garanto que voc

    conseguiu responder primeira pergunta. Com relao s variveis que o programa utiliza e seu tipo

    bsico, observe a declarao int valor, menor; no programa. H duas variveis ali declaradas: valor e

    menor; o tipo bsico int; um pouquinho de imaginao e int = inteiro!

    Que tal voc comparar o cdigo C com o cdigo Pascal? Semelhanas? Qual dos dois lhe pareceu

    mais cil de entender?

    Bem, se sua resposta oi o cdigo Pascal, digo-lhe que o Pascal tem o rtulo de linguagem mais

    adequado ao ensino de programao. Se sua resposta oi o cdigo C, saiba que uma linguagem que oi

    criada para ser utilizada por programadores experientes. Mas, se voc teve diculdade de entender am-bos os cdigos, no se preocupe! O curso est apenas comeando e h muito que se aprender de lgica

    de programao! Garanto que no nal do curso esse programa vai parecer muito, muito cil para voc!

    Expresso de Algoritmos Atravs de Pseudolinguagem

    Uma pseudolinguagem uma notao para expresso de algoritmos para ser utilizada nas 3 pri-

    meiras etapas da programao denidas na seo 1.3, quais sejam, identifcao de um problema do mun-do real, coneco e teste do algoritmo. apresentada na orma de portugus estruturado. Embora seja

    uma pseudolinguagem, possui estrutura, sintaxe e semntica semelhantes s de uma linguagem de pro-gramao.

    A principal dierena entre a pseudolinguagem e a linguagem de programao que a primeira

    no possui um compilador. Isso signica que possvel expressar o raciocnio algortmico utilizando-se

    uma pseudolinguagem, mas o programa no pode ser executado no computador.

    So muitas as vantagens de se utilizar uma pseudolinguagem para escrever algoritmos:

    uma linguagem independente de mquina; o programador pensa somente no problema a

    ser resolvido, sem se preocupar com possveis restries do compilador ou dohardware

    (com-

    putador);

    o programador tem que conhecer a sintaxe, a semntica e a estrutura da pseudolinguagem,

    mas tem total liberdade para criar novos comandos ou usar instrues em alto nvel (ou em

    orma de rases); por um lado, ele vai se acostumando com a rigidez da sintaxe das linguagens

    de programao, mas, por outro, tem a liberdade de expressar seu raciocnio sem esbarrar em

    limitaes de contexto;

    uma vez estando pronto o algoritmo na pseudolinguagem, a sua implementao no compu-

    tador (etapas 4 e 5 da programao: coneco e execuo do programa) ca muito acilitada,

    pois toda a lgica j oi desenvolvida e testada e somente uma traduo para a linguagem deprogramao-alvo se az necessria.

  • 7/16/2019 Apostina Unisa

    17/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br18

    Veja o exemplo de um algoritmo escrito na pseudolinguagem PortuC.

    Figura 8 Algoritmo expresso na pseudolinguagem PortuC.

    A Figura 8 mostra um algoritmo expresso na pseudolinguagem PortuC. Observe a estrutura doalgoritmo: comea com um comentrio dizendo o que o algoritmo az, tem a declarao das variveise depois vem a seo principal ( ), em que so apresentadas as instrues contidas entre o { (incio) e }(m) do algoritmo. Voc seria capaz de dizer o que esse algoritmo az? Quais as variveis que ele utilizae de que tipo bsico elas so? (Dica: esse algoritmo az a mesma coisa que o expresso pelo diagrama deChapin, pelo fuxograma, pela linguagem Pascal e pela linguagem C, mostrados nas Figuras 4, 5, 6 e 7).

    Esse algoritmo em PortuC corresponde ao programa em C mostrado na Figura 7. Observe a gran-

    de semelhana entre eles. Essa semelhana proposital, com certeza. O PortuC quase a traduo deum programa C para o portugus. As vantagens de se utilizar o PortuC so muitas. Pense sobre elas, poiso PortuC ser nosso maior aliado no aprendizado de algoritmos!

    Um exerccio interessante para voc azer agora seria visitar os exemplos deste algoritmo escritosno diagrama de Chapin e no fuxograma e compar-los com o PortuC. Diga-me: qual deles mais cilde entender? Qual dessas ormas de expresso de algoritmos voc escolheria?

    1.5 Os Algoritmos sero Expressos em Pseudolinguagem

    Em uno de tudo o que oi dito e aps conhecermos as 3 ormas de expresso de algoritmos, usa-

    remos pseudolinguagem para escrever nossos primeiros algoritmos! As justicativas dessa nossa esco-

    lha so muitas e oram j undamentadas. A pseudolinguagem PortuC utiliza o portugus, numa orma

    estruturada, e tem estrutura, sintaxe e semntica muito semelhantes s da linguagem de programao

    C.

    Apesar de o Pascal ter se consagrado como uma linguagem adequada para o ensino da progra-

    mao aos estudantes que a iniciam, ou seja, como primeira linguagem de programao, a linguagem

    C, antes restrita comunidade cientca, ganhou uma popularidade inquestionvel na dcada de 1990que se estende aos dias atuais, pois a base de novas linguagens, como o Java, o C# e at o Android. Em

    uno disso, a linguagem C passou a ser alvo do interesse dos estudantes. A resistncia, que j existiu,

  • 7/16/2019 Apostina Unisa

    18/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br19

    em utiliz-la como primeira linguagem de programao pelos proessores se deveu, em parte, ao ato de

    seus criadores, Dennis Ritchie e Brian Kernighan, terem armado que C retm a losoa bsica de que

    os programadores sabem o que esto azendo (KERNIGHAN; RITCHIE, 1989). Bem, se considerarmos que

    programadores iniciantes no tm condies de saber com segurana o que esto azendo, exatamente

    pelo ato de serem inexperientes, a adoo da linguagem seria realmente questionvel.

    No entanto, as linguagens de programao evoluram bastante e as mais utilizadas hoje, como o

    Java e o C#, tm como base a linguagem C. Alm disso, a adoo de um mtodo adequado e coerentepara o ensino da programao de computadores pode atuar como um acilitador do processo de apren-

    dizagem, permitindo que uma linguagem mais complexa, como o C, possa ser ensinado sem oerecer

    obstculos aprendizagem.

    Assim, a adoo do PortuC, nossa pseudolinguagem, e da metodologia de ensino proposta pela

    proessora viabiliza a adoo da linguagem de programao C como primeira linguagem. Isso vai ao en-

    contro das expectativas dos estudantes e coloca o ensino da programao na direo da atual tendncia

    da programao de computadores, que vem utilizando, cada vez mais, o C como base dos novos e mo-

    dernos paradigmas de programao.

    1.6 Resumo do Captulo

    1.7 Atividade Proposta

    Caro(a) aluno(a), o PortuC, alm de oerecer o conorto de utilizar nossa lngua ptria, o que o

    torna muito amiliar ao programador, no requer a memorizao das abominveis ormas geomtricas

    e setas e mais setas dos diagramas. Fique tranquilo, meu(minha) estudante, mais duas lies e voc j

    estar azendo seus primeiros programas de computador!

    1. Tente deduzir qual o padro de comportamento utilizado para gerar as sequncias:

    1, 5, 9, 13, 17, 21, 25 ...

    1, 1, 2, 3, 5, 8, 13, 21, 34 ...

  • 7/16/2019 Apostina Unisa

    19/168Unisa | Educao a Distncia | www.unisa.br21

    Caro(a) aluno(a), suponha que voc ganhou de presente uma viagem para os Estados Unidos. O

    que voc deveria azer antes de ir para l? Estudar ingls! J que os americanos alam essa lngua, claro.

    Ento, neste nosso curso, voc est ganhando a chance nica de aprender a programar. Este captulo

    o convida a aprender PortuC, que a lngua que os algoritmos (que so as bases dos programas de

    computador) alam! O PortuC , basicamente, uma traduo da linguagem C para Portugus. Assim,

    aprendendo bem o PortuC, voc j estar se preparando para aprender a prpria linguagem C, de orma

    simples e cil!

    PSEUDOLINGUAGEM DEPROGRAMAO: PORTUC2

    2.1 Identicadores

    Todo programa de computador manipula dados, que so armazenados em variveis. Uma varivel

    precisa ter um nome que a identique de orma nica no programa: o identicador.

    AtenoAteno

    Um identicador em PortuC ormado por caracteres alanumricos;O primeiro caractere tem que ser uma letra; os outros caracteres podem ser:

    letras: A-Z, a-z;dgitos: 0-9;sublinhado: _ .

    No pode haver dois identicadores iguais.Letras minsculas e letras maisculas so dierentes.Os identicadores no podem ser acentuados.No pode haver espao em branco num identicador.O caractere no pode ser usado num identicador.Um identicador no pode ter o mesmo nome das palavras reservadas do PortuC (como: principal, se, seno,

    inteiro, real etc.).

    Exemplos de identicadores vlidos:

    NOME, raiz1, letra4, Total_dos_Salarios, Nome_de_Familia.

  • 7/16/2019 Apostina Unisa

    20/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br22

    Exemplos de identicadores INVLIDOS:

    4pontos (comea com nmero)

    CUSTO FINAL (tem espao em branco)

    PreoTotal (caractere no pode ser usado)

    Pessoa+Alta(caractere + no pode ser usado)

    Preco-caro (caractere - no permitido)

    Total_dos_salrios (palavra acentuada)

    inteiro (palavra reservadado PortuC)

    2.2 Tipos Bsicos e Declarao de Variveis

    Os dados manipulados por um programa so armazenados em variveis. As variveis precisam ter

    um nome (identicador), um tipo associado, e precisam ser declaradas antes que possam ser utilizadas.

    Saiba maisSaiba mais

    H trs tipos bsicos que podem ser associados s variveis:inteiro;real;caractere.

    Para declarar uma varivel, escreve-se o nome de seu tipo, salta-se um espao em branco, em seguida escreve-se o

    nome do seu identicador e ; para nalizar a declarao.Se mais de uma varivel or do mesmo tipo bsico, elas podem ser declaradas juntas, apenas separadas por vrgulas.Toda varivel precisa ser declarada antes de ser utilizada.No pode haver duas variveis com mesmo nome, mesmo que tenham tipos bsicos dierentes, a menos que algum

    caractere maisculo ou minsculo as dierencie.

    Exemplos de declarao de variveis vlida:

    caractere NOME[20], letra;inteiro soma;

    real raiz1, Total_dos_Salarios;

    caractere Nome_de_familia[30];

    Exemplos de declarao de variveis INVLIDA:

    caractere NOME[20]; letra4; (o separador de identifcadores deve ser a vrgula)

    inteiro: SOMA; (no pode haver o sinal de dois-pontos aps o nome do tipo)

    raiz1, Total_dos_Salarios real; (o tipo bsico deve vir antes dos identifcadores)caractere Nome_de_Familia[30]; (o nome do tipo bsico est errado)

    real SOMA; (a varivel SOMA j oi declarada: um identifcador no pode ser duplicado)

  • 7/16/2019 Apostina Unisa

    21/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br23

    2.3 Comando de Atribuio

    O contedo das variveis do programa pode ser determinado atravs de dois tipos de comandos:

    comando de atribuio e comando de leitura. O comando de atribuio permite que um determinado

    valor seja armazenado numa varivel.

    AtenoAteno

    O smbolo do comando de atribuio = .No se deve atribuir a uma varivel um valor que NO seja compatvel com o tipo bsico dessa varivel, ou seja,

    nmeros inteiros devem ser atribudos a variveis do tipo inteiro; nmeros reais devem ser atribudos a variveis dotipo real; rases e letras devem ser atribudas a variveis do tipo caractere.

    Caso no haja compatibilidade entre o dado e o tipo da varivel, podem acontecer eeitos indesejados. Ento,muito cuidado, pois nesse tipo de atribuio ocorre a CONVERSO AUTOMTICA DE TIPOS e o que chega

    na varivel de destino pode ser um desastre!Toda varivel deve ter um valor a ela atribudo antes de ser usada no programa;Em variveis reais, S EXISTE PONTO DECIMAL; no se pode usar vrgula decimal.

    Exemplos de atribuies vlidas:

    letra = L;

    soma = 0;

    Total_dos_Salarios = 1275.50;NOME = Luiza;

    Exemplos de atribuies INVLIDAS:

    NOME = Maria;

    (a cadeia de caracteres tem que estar entre aspas)

    NOME = Maria;

    (o smbolo que delimita a cadeia de caracteres no pode ser apstroo, devem-se usar aspas)Total_dos_Salarios = 1275.50;

    (o valor a ser atribudo a uma varivel numrica no pode estar entre apstroos nem entre aspas)

    Total_dos_Salarios = 1275,50;

    (no existe vrgula decimal, o certo usar ponto decimal)

    soma = 10.0;

    (numa varivel do tipo inteiro,como o caso da varivel soma, no pode haver parte decimal;esse caso est sujeito converso automtica)

    soma := 0;

    (o smbolo do comando de atribuio = e no :=)

  • 7/16/2019 Apostina Unisa

    22/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br24

    2.4 Operadores Aritmticos

    Os operadores aritmticos permitem que expresses da Matemtica sejam atribudas s variveis.

    Os operadores aritmticos implementam as operaes bsicas (adio, subtrao, diviso e multiplica-

    o) e algumas operaes mais avanadas da Matemtica (como logaritmo, raiz quadrada, seno, cossenoetc.). A varivel que vai receber o resultado de uma operao aritmtica tem que ser de um tipo numri-

    co compatvel, capaz de armazenar o valor resultante, seno poder ocorrer uma converso automtica

    com resultados muitas vezes indesejados ou mesmo imprevisveis.

    Saiba maisSaiba mais

    Os operadores aritmticos bsicos so:

    + (adio);- (subtrao);* (multiplicao);/ (diviso real);++ (adiciona 1);-- (subtrai 1).

    Alguns operadores aritmticos mais avanados so:% (resto da diviso inteira);/ (quociente da diviso inteira);sqrt( ) (raiz quadrada);abs( ) (valor absoluto).

    Exemplos de expresses aritmticas vlidas:

    resto = 10 % 3;

    quociente = 10 / 3;

    salario = ((totaldehoras*32.50)+102.00) - descontoinss;

    valoremdolares = salario / 1.85;

    impostoderenda = salario * (0.20);

    nome = nome + da silva;

    contador = contador +1;

    ++contador;

    --contador;

    raiz = sqrt(numero);

  • 7/16/2019 Apostina Unisa

    23/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br25

    Exemplos de expresses aritmticas INVLIDAS:

    resto = 10.0 % 3;

    (o operador % s pode envolver nmeros inteiros)

    valoremdolares = salario / 1,85;

    (no existe vrgula decimal, o separador sempre o ponto decimal)

    salario = totaldehoras *+ 32.50;

    (os operadores * e + so didicos, envolvem sempre dois operadores, portanto no podem serutilizados juntos)

    nome = nome * 3;

    (em variveis do tipo caractere s pode ser eita adio ou subtrao de caracteres)

    contador = *1;

    (o operador * didico, tem que envolver dois operandos)

    2.5 Operadores Lgicos

    Os operadores lgicos permitem que os trs principais operadores da lgebra de Boole possam ser

    utilizados num programa: E, OU e NO. O estado dos operandos e o resultado de uma operao lgica

    so sempre FALSOS (avaliados como zero) ou VERDADEIROS (avaliados como dierentes de zero).

    Saiba maisSaiba mais

    Os operadores lgicos so:e (conjuno);ou (disjuno);! (negao).

    O operador binrio e envolve sempre dois operandos e o resultado VERDADEIRO somente quando ambos osoperandos orem VERDADEIROS, ou seja, basta que um operando seja FALSO para que o resultado seja FALSO.

    O operador binrio ou envolve sempre dois operandos e o resultado FALSO somente quando ambos os operan-dos orem FALSOS, ou seja, basta que um operando seja VERDADEIRO para que o resultado seja VERDADEIRO.

    O operador unrio ! muda o estado do operando de FALSO para VERDADEIRO ou de VERDADEIRO para FALSO.

    Caro(a) aluno(a), aqui cabe uma explicao um pouco mais detalhada para melhorar o entendi-

    mento dos operadores lgicos E, OU e ! (no):

    uma varivel lgica aquela que pode assumir apenas os valores VERDADEIRO ou FALSO;

    na prtica, as variveis lgicas so utilizadas para descrever o uncionamento de um sistema,

    como um circuito ormado por uma bateria e uma lmpada:

  • 7/16/2019 Apostina Unisa

    24/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br26

    a representao dos nveis lgicos (1=verdadeiro e 0=also) pode ser melhor entendida atravs

    de chaves que representam um circuito. Se a chave est echada (valor 1 ou valor VERDADEI-

    RO), a corrente pode passar, o que pode permitir que a lmpada se acenda. Se a chave est

    aberta (valor 0 ou valor FALSO), a corrente no pode passar, o que pode impedir que a lmpada

    se acenda;

    uma uno E resulta em 1=VERDADEIRO se, e somente se, todas as variveis lgicas de en-

    trada tiverem valor 1=VERDADEIRO. Em outras palavras, a lmpada do circuito s acende se

    ambas as chaves estiverem echadas, o que caracteriza um circuito com chaves em sequncia,

    como o mostrado a seguir (na uno E, somente se ambas as entradas orem verdadeiras a

    expresso avaliada como verdadeira);

  • 7/16/2019 Apostina Unisa

    25/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br27

    uma uno OU resulta em 1=VERDADEIRO se, pelo menos, uma das variveis lgicas de en-

    trada tiver valor 1=VERDADEIRO. Em outras palavras, a lmpada acende se uma das chaves

    estiver echada ou quando as duas estiverem echadas (orem verdadeiras), o que caracteriza

    um circuito com chaves em paralelo, como o mostrado a seguir (na uno OU, basta que uma

    entrada seja verdadeira para a expresso ser avaliada como verdadeira);

    uma uno ! (no) uma operao de inverso. Ela converte o estado ou valor de uma vari-

    vel lgica em seu inverso lgico: de VERDADEIRO para FALSO e de FALSO para VERDADEIRO.

    No caso do circuito, unciona assim: se a chave est aberta, ela se echa e acende a luz, e, se est

    echada, ela se abre e apaga a luz.

    Exemplos de expresses lgicas vlidas:

    se (altura > 1.80 e idade < 21 e escolaridade >= 2)

    se (idade >= 13 e idade = 7.0 e faltas

  • 7/16/2019 Apostina Unisa

    26/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br28

    Exemplos de expresses lgicas INVLIDAS:

    se (altura > 1.80 e ou idade < 21)

    (os operadores e e ou so binrios, envolvem sempre 2 operandos, portanto no podem serutilizados juntos)

    se (idade >=13 e (maior que);>= (maior ou igual a);< (menor que);

  • 7/16/2019 Apostina Unisa

    27/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br29

    se (resposta = S)

    (o problema aqui o uso do smbolo =, que do comando de atribuio, e no == que aigualdade; na verdade, o comando no est errado, mas est sendo eita uma atribuio e nouma comparao. Portanto, muito cuidado!)

    2.7 Comando Condicional

    O comando condicional permite que se tomem 2 caminhos dierentes e mutuamente exclusivos a

    partir da avaliao de uma condio. Se a condio avaliada como verdadeira, um caminho seguido;

    se avaliada como alsa, outro caminho escolhido, nunca ambos!

    A associao do comando condicional com atos rotineiros imediata: se estiver chovendo eu voude carro, seno eu vou de bicicleta; nesse exemplo, a pessoa avalia a condio do tempo antes de decidirse sair de carro ou de bicicleta e no h possibilidade de ela sair com ambos os meios de transporte!

    AtenoAteno

    A sintaxe do comando condicional :

    se ()

    {

    }

    seno

    {

    }

    A semntica (como unciona) do comando condicional :

    a avaliada como VERDADEIRA (valor dierente de zero) ou FALSA (valor igual a zero);se a or VERDADEIRA, o executado e o comando condicional nalizado;se a or FALSA, o executado e o comando condicional nalizado.

    seno clusula do comandose, ou seja, no comando, apenas az parte do comando se.A clusulaseno pode no existir num comando se. Nesse caso, (quando no existe a clusula seno), quando

    a avaliada como FALSA, nenhum comando executado e o comando se nalizado.Os delimitadores de incio { e de m } so obrigatrios quando existe mais de um comando no ou mais de um comando no . Quando existir apenas um comando, os

    delimitadores fcam opcionais.

  • 7/16/2019 Apostina Unisa

    28/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br30

    Exemplos de comandos condicionais VLIDOS:

    se (media >= 7.0)

    aprovado = 1;

    se (media >= 7.0)

    { aprovado = 1;}

    se (media >= 7.0)

    { aprovado = 1;

    ++contadoraprovados;

    }

    se (media >= 7.0)

    aprovado = 1;seno

    aprovado = 0;

    se (media >= 7.0)

    { aprovado = 1;

    ++contadoraprovados;

    }

    seno

    aprovado = 0;

    se (media >= 7.0 e faltas = 7.0

    aprovado = 1; (altou colocar parnteses na condio)

    se (media >= 7.0)

    { aprovado = 1;

    ++contadoraprovados;

    (altou colocar o delimitador de fm { no fnal do comando )

  • 7/16/2019 Apostina Unisa

    29/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br31

    se (media >= 7.0)

    aprovado = 1

    seno

    aprovado = 0;

    (altou ; depois do comando aprovado = 1)

    se (media >= 7.0){ aprovado = 1;

    ++contadoraprovados;

    }

    seno

    aprovado = 0

    (novamente altou ; aps o comando aprovado = 0)

    se (media >= 7.0 e faltas = 7.0)

    aprovado = 1;

    ++contadoraprovados;

    seno

    aprovado = 0

    (altaram os delimitadores { } aps a condio do comando se caso verdadeiro (antes do seno))

    2.8 Comando de Repetio

    O comando de repetio permite que um comando ou um bloco de comandos seja executado

    diversas vezes. O nmero de vezes determinado por uma condio que constantemente avaliada.

    Enquanto a condio or avaliada como verdadeira (ou dierente de zero), o comando ou bloco de co-

    mandos executado repetidamente; quando a condio ca alsa, o comando de repetio para.

    A associao do comando de repetio com atos rotineiros possvel: enquanto o nmero da casaor menor que o procurado, continue subindo a rua e verifcando se a casa procurada; nesse exemplo, apessoa avalia a condio, que a vericao do nmero desejado entre diversas casas de uma rua, por

    exemplo. Essa avaliao continua at que a casa procurada seja encontrada ou que se encontre uma casacujo nmero seja superior ao procurado, supondo que a numerao esteja em ordem crescente.

  • 7/16/2019 Apostina Unisa

    30/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br32

    AtenoAteno

    A sintaxe do comando de repetio :enquanto (condio)

    {

    }

    A semntica (como unciona) do comando de repetio :

    a condio avaliada como VERDADEIRA (dierente de zero) ou FALSA (igual a zero);se a condio or VERDADEIRA, o executado e, ao chegar ao delimitador de m } ou nal

    do comando, automaticamente se retorna avaliao da condio;se a condio or FALSA, o comando de repetio nalizado.

    Entre os comandos do ESSENCIAL que exista um comando que altere a que constantemente avaliada, pois, caso contrrio, o comando enquanto NUNCA TERMINAR!

    Os delimitadores { e }so obrigatrios quando existe mais de um comando no . Quandoexistir apenas um comando, os delimitadores fcam opcionais e o ; uncionar como delimitador de fm,

    indicando o fnal do comandoenquanto.

    Exemplos de comandos de repetio vlidos:

    enquanto (contador < 3)

    ++contador;

    numero = 1;

    enquanto (numero

  • 7/16/2019 Apostina Unisa

    31/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br33

    numero = 1;

    enquanto (numero

  • 7/16/2019 Apostina Unisa

    32/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br34

    AtenoAteno

    A sintaxe do comando de entrada :

    leia(%letra, [&]varivel);

    em que:

    %letra representa os especicadores de ormato e depende do tipo associado varivel:

    %d ou %i para variveis do tipo inteiro (integer);% para variveis do tipo real (foat);%c para variveis do tipo caractere (nico) (character);%s para variveis do tipo caractere (cadeia ou string);

    O smbolo & deve ser utilizado apenas para os tipos numricos, ou seja, para variveis declaradas como inteiras oureais.

    A semntica (como unciona) do comando de entrada :a varivel tem que ter sido previamente declarada;o usurio vai utilizar o teclado para ornecer o dado e, depois que ele teclar , tudo o que ele tiver digi-

    tado ser armazenado na varivel automaticamente.

    Recomenda-se utilizar o comando leia para ler uma s de cada vez.

    A tabela a seguir mostra um exemplo de declarao de variveis de tipos bsicos e a orma correta

    de leitura.

    Declarao Leitura Exemplos de contedos

    inteiro numero; leia(%i, &numero); numero = -5;numero = 2002;

    real valor; leia(%, &valor);valor = -5.867;

    valor = 2002.50;

    caractere ch; leia(%c, ch);

    ch = 5;

    ch = s;

    ch = #;

    caractere nome[20]; leia(%s, nome);

    nome = Maria;

    nome = m;

    Observe, na tabela, a dierena entre a declarao, a leitura e a atribuio de valores a um caractere

    nico (%c) e a uma cadeia de caracteres (%s). Um nico caractere vem entre apstroos ( ) e uma cadeia

    de caracteres entre aspas ( )!

  • 7/16/2019 Apostina Unisa

    33/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br35

    AtenoAteno

    A sintaxe do comando de sada :

    imprima( rase e %letra [, lista de variveis] );

    Entre aspas, podem ser escritas rases ormadas por palavras intercaladas pelos especicadores de ormato %s, %c,%i, %d ou %, descritos no comando leia. Para cada especicador utilizado, a varivel do tipo correspondente deveconstar da lista de variveis.

    A lista de variveis opcional; deve existir somente quando um especicador de ormato colocado na rase entreaspas e, nesse caso, deve haver uma vrgula separando a rase da lista de variveis e vrgulas separando as variveisda lista.

    A semntica (como unciona) do comando de sada :pode ser impressa qualquer rase e qualquer varivel dentro de um comando imprima, desde que a rase esteja

    entre aspas e as variveis estejam devidamente listadas aps a vrgula que separa a rase da lista de variveis;a rase entre aspas copiada integralmente para a tela e os especicadores de ormato so substitudos pelas

    variveis da lista de variveis;quando existe uma varivel, o seu contedo copiado para a tela;a ordem em que as palavras da rase e as variveis aparecem no comando imprima mantida quando im-

    pressa na tela.

    Exemplos de comandos de entrada e sada vlidos:

    imprima (Qual o seu nome? );

    leia(%s,nome);

    imprima (Qual a sua idade? );

    leia (%i,&idade);

    imprima (Qual a sua altura? );

    leia (%f,&altura);

    imprima (Qual o seu sexo? (F/M) );

    leia (%c,sexo);

    imprima (O seu nome : %s e voc tem %i anos ,nome, idade);

    imprima (Voc foi aprovado no curso com mdia= %f, Media);

    Exemplos de comandos de entrada e sada INVLIDOS:

    imprima (Qual o seu nome? );

    (altaram aspas aps a interrogao para delimitar a rase a ser impressa)

  • 7/16/2019 Apostina Unisa

    34/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br36

    imprima (Qual a sua idade? );

    leia (%i,idade);

    (altou o & antes do identifcador idade, pois o tipo numrico: %i)

    imprima (A sua idade %i idade);

    (altou uma vrgula entre a rase entre aspas e a varivel idade)

    imprima (Voc foi aprovado no curso com mdia= , media);

    (altou o especifcador de ormato da varivel Media (%) aps o = na rase entre aspas)

    imprima (Qual o seu nome? );

    leia (%s,&nome);

    (no pode haver & na leituras de variveis do tipo caractere (%c e %s) )

    Saiba maisSaiba mais

    Explicao adicional Passo a passo do comando de impresso:

    imprima (frase varivel1 varivel2 varivel3);

    (entre a rase e a varivel e entre as variveis deve haver uma vrgula separando-as).

    imprima (frase , varivel1, varivel2, varivel3);

    (a rase deve vir entre aspas).

    imprima (frase , varivel1, varivel2, varivel3);

    (dentro da rase, deve vir um ormato para cada varivel, compatvel com o seu tipo bsi-co).

    imprima (frase %s%i%f,varivel1,varivel2,varivel3);

    Exemplo:

    imprima (Vc se chama %s, tem%i anos e %f m de altura , nome, idade, altura);

  • 7/16/2019 Apostina Unisa

    35/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br37

    Todos os comandos do PortuC so separados por ponto e vrgula.

    2.10 Separador de Comandos

    2.11 Comentrios

    AtenoAteno

    O separador de comandos : ;

    Exemplos de erro na separao de comandos:

    se (resposta != s);

    {

    }

    (o ; depois da condio fnaliza o comando se)

    enquanto (contador < 5) ;

    {

    }

    (o ; depois da condio do comando enquanto coloca o programa em loop infnito!)

    Os comentrios no pertencem s instrues dos algoritmos, mas so teis para que o programa-

    dor explique o que est sendo eito.

    Saiba maisSaiba mais

    Os comentrios podem vir delimitados entre

    /* */Ou podem ser comentrios de linha

    //

    Exemplos de comentrios:

    /* Este trecho calcula a media de notas */

    desc = preco*0.15; // calcula desconto de 15%

  • 7/16/2019 Apostina Unisa

    36/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br38

    Bloco de programa o nome que se d estrutura de um programa escrito numa determinada

    linguagem. O bloco de programa em PortuC pode ser visto a seguir.

    2.12 Bloco de Programa

    Exemplos de programas escritos em PortuC vlidos:

    /* sexo.c: le o nome e o sexo de uma pessoa e imprime uma frase

    dizendo se masculino, feminino ou invalido */

    caractere nome[20], sexo;

    principal ( )

    { imprima (Qual eh o seu nome? );leia(%s,nome);

    imprima (Qual eh o seu sexo? (f/m) );

    leia (%c,sexo);

    se (sexo == f ou sexo == F)

    imprima (%s voce eh do sexo feminino. ,nome);

    seno se (sexo == m ou sexo == M)

    imprima (%s voce eh do sexo masculino. ,nome);

    seno imprima (Voce digitou um sexo invalido );

    imprima(Fim do programa.);

    }

    Saiba maisSaiba mais

    O Bloco de Programa em PortuC tem a orma:/* comentrios */

    ;

    principal()

    {

    ;

    }

    desejvel que todo algoritmo escrito em PortuC comecer com um comentrio dizendo o que o programa az,

    embora comentrios sejam opcionais.Em seguida, devem ser declaradas todas as variveis que sero utilizadas no .Aps a declarao das variveis, deve-se escrever a palavra principal( ), que delimita a seo em que os comandos

    podem ser utilizados.O pode conter todos os comandos vlidos em PortuC, separados por ponto e vrgula, e estes

    devem estar contidos entre os delimitadores { e }. Nenhum comando pode ser usado ora dessa seo. importante notar que letras maisculas e minsculas alteram os identicadores e as palavras reservadas do PortuC.

  • 7/16/2019 Apostina Unisa

    37/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br39

    /* nota.c: le a nota de um aluno e verica se ele foi aprovado ou repro-

    vado */

    real nota;

    principal()

    { imprima (Digite sua nota nal: );

    leia(%f,&nota);

    se (nota >= 6.0)

    imprima (Voce foi aprovado! );

    seno

    imprima (Voce foi reprovado. );

    imprima(Fim do programa.);

    }

    /* idade.c: le o ano atual e o ano de nascimento de uma pessoa

    e imprime uma frase dizendo qual eh a idade da pessoa */

    inteiro anoatual, anonasc, idade;

    principal()

    { imprima (Qual eh o ano atual? );

    leia(%i,&anoatual);

    imprima (Qual eh o seu ano de nascimento? );

    leia (%i,&anonasc);

    idade = anoatual anonasc;

    imprima (Voce fez ou fara %i anos , idade);

    imprima(Fim do programa.);

    }

    /* parimpar.c: le um numero e verica se ele eh par ou impar */

    inteiro n;

    principal()

    { imprima (Digite um numero inteiro: );

    leia(%i,&n);

    se (n % 2 == 0)

    imprima (O numero %i eh par , n);

    seno

    imprima (O numero %i eh impar , n);

    imprima( Fim do programa.);}

  • 7/16/2019 Apostina Unisa

    38/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br40

    Exemplos de programas escritos em PortuC INVLIDOS:

    caractere sexo, caractere[20];

    principal ( )

    { imprima (Qual eh o seu nome? );

    leia(%s,caractere);

    imprima (Qual eh o seu sexo? (F/M) );

    leia (%c,sexo);

    se (sexo == F)

    imprima (%s voce eh do sexo feminino. ,caractere);

    seno

    imprima (%s voc eh do sexo masculino. ,caractere);

    }

    (a varivel caractere tem o mesmo nome da palavra reservada caractere)

    real nota;

    { imprima (Digite sua nota nal: );

    leia(%f,&nota);

    se (nota >= 6.0)

    imprima (Voce foi aprovado! );

    seno

    imprima (Voce foi reprovado... );

    imprima(Fim do programa.);

    }

    (altou a palavra principal( ) para dar incio seo de comandos)

    real nota;

    nota = 7.5;

    principal()

    { imprima (Digite sua nota nal: );leia(%f,&nota);

    se (nota >= 6.0)

    imprima (Voce foi aprovado! );

    seno

    imprima (Voce foi reprovado... );

    imprima( Fim do programa.);

    }(h um comando de atribuio nota=7.5; na seo de declarao de variveis: no pode!)

  • 7/16/2019 Apostina Unisa

    39/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br41

    inteiro anoatual, anonasc, idade;

    principal()

    imprima (Qual eh o ano atual? );

    leia(%i,&anoatual);

    imprima (Qual eh o seu ano de nascimento? );leia (%i,&anonasc);

    idade = anoatual anonasc;

    imprima (Voce fez ou fara %i anos , idade);

    imprima(Fim do programa.);

    }

    (altou o delimitador { para iniciar a seo de comandos do programa)

    inteiro N;

    principal()

    { imprima (Digite um numero inteiro: );

    leia(%i,&n);

    se (n % 2 == 0)

    imprima (O numero %i eh par , n);

    seno

    imprima (O numero %i eh impar , n);

    imprima( Fim do programa.);

    }

    (no oi declarada a varivel n ou oi declarada errada (N maisculo dierente de n minsculo))

    2.13 Resumo do Captulo

    Caro(a) aluno(a), este captulo oi um convite a aprender PortuC, que a lngua que os algorit-

    mos (que so as bases dos programas de computador) alam! O PortuC , basicamente, uma traduo

    da linguagem C para Portugus. Assim, aprendendo bem o PortuC, voc j estar se preparando para

    aprender a prpria linguagem C, de orma simples e cil!

  • 7/16/2019 Apostina Unisa

    40/168Unisa | Educao a Distncia | www.unisa.br43

    1. Escreva um comando que leia um nmero inteiro.

    2. Escreva comandos para pedir e ler um nmero inteiro.

    3. Escreva comandos para pedir, ler e imprimir um nmero inteiro.

    4. Repita o exerccio 3 para um nmero real.

    CONSTRUO DE ALGORITMOSEM PORTUC: PRATICANDO OSCOMANDOS E FAZENDO CLCULOS

    3

    3.1 Declarao de Variveis Comandos leia e imprima

    Saiba maisSaiba mais

    Ao invs de usar % para apresentar a altura, usamos %.2O que isso signica? Que ns queremos apresentar a altura com apenas 2 dgitos na parte decimal! Anal, a orma tra-dicional de se apresentar uma altura com 2 dgitos apenas, como 1.75, 1.62, 1.88 etc., no mesmo?

    5. Declare as variveis utilizadas nos exerccios de 1 a 4.

  • 7/16/2019 Apostina Unisa

    41/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br44

    6. Escreva comandos para pedir, ler e imprimir o nome e a idade de uma pessoa.

    7. Escreva um comando para vericar se a idade lida no exerccio 6 corresponde a um adulto

    (maior que 17 anos). Se or verdadeiro, imprimir uma rase dizendo que um adulto.

    8. Escreva um comando para vericar se a idade lida no exerccio 6 corresponde a uma criana

    (menor que 13 anos). Se or, imprima uma rase dizendo que uma criana.

    9. Escreva um comando para vericar se a idade lida no exerccio 6 corresponde a um adolescen-te (entre 13 e 17 anos). Se or, imprima uma rase dizendo que um adolescente.

    10. Escreva um nico comando capaz de classicar uma pessoa pela aixa etria e ainda vericar

    se a idade vlida.

    3.2 Comando Condicional se

  • 7/16/2019 Apostina Unisa

    42/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br45

    11. Transorme o exerccio 6 num algoritmo, ou seja, construa o Bloco de Programa em PortuC.

    12. Escreva um algoritmo que leia o nome e a idade de uma pessoa e imprima uma rase dizendo

    se a pessoa uma criana, um adolescente, um adulto ou se a idade invlida.

    3.3 Bloco de Programa

  • 7/16/2019 Apostina Unisa

    43/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br46

    13. Escreva um comando para somar dois nmeros: n1 e n2.

    Observe que soma a varivel na qual o resultado da adio de n1 com n2 ser armazenado. Sousados apenas o comando de atribuio = e o operador +.

    14. Escreva comandos para subtrair e multiplicar dois nmeros: n1 e n2.

    O raciocnio para subtrair e multiplicar dois nmeros o mesmo usado na adio.

    15. Escreva um comando para dividir dois nmeros: n1 por n2.

    Antes de dividir um nmero n1 (numerador) por um nmero n2 (denominador) necessrio queverifquemos se o denominador dierente de zero, pois no existe diviso por zero! O comandodivisao = n1 / n2; vlido do ponto de vista sinttico, mas em programao temos que pensar

    nos erros que porventura possam ocorrer quando da execuo dos comandos.

    Para evitarmos a diviso eventual por zero, usamos o comando se. Somente se n2 or dierente de

    zero que a diviso ser calculada; caso contrrio, uma mensagem impressa para comunicar aousurio o motivo pelo qual o clculo no oi eetuado. O resultado da diviso um nmero real.

    16. Escreva um comando para calcular o quadrado de um nmero inteiro n1 e tambm n1 elevado a 3.

    Com certeza, muito mais cil do que voc pensava, no ? So pequenos truques da programa-o. Mas se quisermos calcular n1 elevado a 1000 ou n1 elevado a um nmero qualquer, teremosque escrever um pequeno trecho de algoritmo. Depois eu mostro como azer.

    3.4 Operaes Bsicas com Nmeros

  • 7/16/2019 Apostina Unisa

    44/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br47

    17. Escreva um comando para calcular a raiz quadrada de um nmero n1.

    Novamente, para evitarmos um erro tentando calcular a raiz de um nmero negativo, usamos ocomando se. Observe que sqrt( ) um operador aritmtico cuja sintaxe dierente dos outros vis-tos nos exerccios anteriores. Esse tipo de operador, na verdade, uma uno que recebe n1 como

    parmetro e devolve a sua raiz quadrada calculada. Existem muitas outras unes e elas seroapresentadas na medida em que se fzer necessria a sua utilizao.

    18. Escreva comandos para ornecer o quociente e o resto da diviso inteira de n1 por n2.

    No caso da diviso inteira de n1 (numerador) por um nmero n2 (denominador), tambm neces-srio que o denominador seja dierente de zero.

    Nesse caso, importante voc notar que ambos os nmeros (n1 e n2) tm que ser inteiros paraque os operadores / (quociente da diviso) e % (resto da diviso inteira) possam ser utilizados!Como voc pode notar, no existe um operador especfco para o quociente da diviso inteira; usa--se o / (que da diviso real), mas, como n1 e n2 so inteiros, haver uma converso automticade tipos, com o truncamento da parte racionria do resultado, o que nos ornece o quociente dadiviso inteira. Isso um truno do PortuC: nunca se esquea disso!Se n1 or 7 e n2 or 3, por exemplo, quais seriam os valores de quociente e resto? (7 dividido por 3d 2 (quociente) e sobra 1 (resto), no ?)

    Saiba maisSaiba mais

    Qual a dierena entre diviso real e diviso inteira?

    3.5 este o resultado da diviso real

    7 / 2 = 3 (quociente da diviso inteira)

    7 % 2 = 1 (resto da diviso inteira)

  • 7/16/2019 Apostina Unisa

    45/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br48

    19. Escreva um comando para calcular 10% de um nmero.

    Em primeiro lugar, vamos esclarecer que NO EXISTE O OPERADOR porcentagem. Na verdade,% o resto da diviso inteira. Portanto, o clculo da porcentagem tem que ser eito pela ope-rao equivalente: 10% = 10/100 = 0.10. A varivel porc deve ser do tipo real. No recomendoo uso de 10/100, pois 10/100 pode ser zero, com a converso automtica de tipos. Ento, usesempre 0.10 no clculo de 10%.

    20. Suponha que um produto custe um determinado preo, mas, se pago vista, o cliente ganha

    5% de desconto. Escreva comandos para calcular o valor do desconto e o valor nal do produto.

    21. Escreva comandos para separar os dgitos de um nmero inteiro menor que 100 em dezena

    e unidade.

    Vamos entender, primeiramente, o que se quer: dado um nmero menor que 100, por exemplo,29, deseja-se obter o dgito 2 (dezena) separado do dgito 9 (unidade); no caso de um nmero de

    um s dgito, por exemplo, 3, o resultado seria 0 (dezena) e 3 (unidade). Bem, este um problemamuito comum na programao e muito cil de ser resolvido tambm! Basta usar os operadores/ e % com nmeros inteiros.

    Vamos azer um pequeno teste: 29 dividido por 10 d 2 e sobra 9, certo? 2 a dezena de 29 e coinci-

    de com o quociente da diviso inteira; 9 a unidade de 29 e coincide com o resto da diviso inteirapor 10! No caso de n1 ser igual a 3, fcaria assim: 3 dividido por 10 d 0 e sobra 3. Nesse caso, 0 adezena (/) e 3 a unidade (%).

    Um bom teste aqui seria voc responder: como poderamos separar os 3 dgitos de nmeros entre100 e 999?

    Se no conseguir resolver, esta uma boa pergunta para o rum!

  • 7/16/2019 Apostina Unisa

    46/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br49

    22. Suponha que, numa certa universidade, os alunos tm um nmero de 5 dgitos que os identi-

    cam. Desses 5 dgitos, os 2 primeiros indicam o ano em que o aluno entrou na universidade.

    Escreva comandos para separar os 2 primeiros dgitos de um nmero inteiro de 5 dgitos que

    representa a identicao do aluno.

    Vamos entender o que se quer: dado um nmero de 5 dgitos, por exemplo, 99211, se deseja obteros 2 primeiros dgitos, no caso, 99 (que indicaria que o aluno entrou em 1999 na universidade).

    Mas e se o aluno entrou em 2000 ou 2009? O resultado teria que ser ano de entrada = 0. Vamosazer, agora, os testes. Vejamos: n1 00211. 00211 dividido por 1000 d ZERO (que o quociente)e sobra 211. Pode parecer estranho, mas pense: quando se divide um nmero por 1000, o menorresto zero e o maior resto pode ser 999. Como queremos apenas o quociente da diviso inteira, o

    resultado ser anoentrada = 0 (que, no caso, representaria 2000). Funciona!Outro teste: n1 igual a 10231. 10231 dividido por 1000 d 10 e sobra 231, certo? 10 o quociente,o que resulta em anoentrada= 10 (que seria 2010)! Funciona mesmo!Faa outros testes e verifque que d certo. E como o clculo simples, no?

    3.5 Operaes com Operadores Lgicos e Relacionais

    23. Escreva um comando para vericar se um nmero positivo ou negativo.

    Observe que 0 pode ser considerado um nmero positivo e todo nmero menor que 0 negativo.

    24. Escreva um comando para vericar se um nmero par ou mpar.

    Um nmero par aquele que, dividido por 2, tem resto zero: 0, 2, 4, 6, 8, 10..., e um nmero mpar

    aquele que, dividido por 2, tem resto dierente de zero: 1, 3, 5, 7, 9...

  • 7/16/2019 Apostina Unisa

    47/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br50

    25. Escreva um comando para vericar se um nmero maior que 100.

    26. Escreva um comando para vericar se um nmero est entre 10 e 100.

    Para se verifcar se um nmero est entre dois limites, so necessrias duas comparaes: umapara o limite inerior e outra para o limite superior, e essas comparaes tm que estar ligadaspelo conectivo lgico e, quer dizer, somente quando as duas comparaes orem verdadeiras, onmero est dentro dos limites. No como na Matemtica, que usamos uma expresso do tipo10 n1 100!

    27. Suponha que certo clube esportivo quer selecionar atletas para o time de basquete. As exi-

    gncias so: ter 1.85 m de altura ou mais, ter menos de 21 anos e ter, pelo menos, o primeiro

    grau completo. Escreva um comando para vericar se um candidato pode ser ou no aprova-

    do para o time de basquete. O grau de instruo denido como: 0= sem instruo, 1=pri-meiro grau, 2=segundo grau, 3=superior.

    Observe que, ao se azer a comparao da altura, no se az reerncia unidade de medida me-

    tros, quer dizer, estaria errada uma comparao do tipo altura >= 1.85 m. O mesmo acontececom a idade, em que os anos oram (e devem) ser omitidos.

  • 7/16/2019 Apostina Unisa

    48/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br51

    28. Suponha que o clube esportivo deseje, agora, ormar um time masculino (sexo == m) e outro

    eminino (sexo == ) e tenha mudado um pouco seus critrios. As exigncias passaram a ser:

    ter 1.85m de altura ou mais para os homens e 1.75 ou mais para as mulheres e ter menos de

    21 anos. Escreva um comando para vericar se um candidato ou candidata pode ser ou no

    aprovado(a) para o time de basquete.

    Observe que surgiu o conectivo ou ligando as comparaes de altura para os sexos dierentes,

    que continuaram a ser ligados pelo conectivo e na comparao de idade! Pense por que assim.

    3.6 Resumo do Captulo

    3.7 Atividades Propostas

    Caro(a) aluno(a), este captulo oi uma excelente oportunidade para exercitarmos a linguagem de

    programao.

    Agora hora de voc praticar um pouco sozinho(a)! A minha orte recomendao que voc aa

    os exerccios sozinho(a), consultando os exemplos anteriores para ajud-lo(a). Somente depois da sua

    tentativa, que voc deve conerir as respostas. Boa sorte!

    1. Escreva um algoritmo que leia e imprima o nome e as duas notas de um aluno.

    2. Escreva um comando que calcule a mdia das duas notas lidas no exerccio 3.1.1.

    3. Escreva um comando que verique se a mdia calculada no exerccio 3.1.2 maior ou igual a

    7.0; se or, imprima uma rase dizendo que o aluno oi aprovado, caso contrrio, imprima uma

    rase dizendo que oi reprovado.

    4. Escreva um algoritmo que leia o nome e as duas notas de um aluno, calcule a mdia das notas

    e imprima uma rase dizendo se ele oi aprovado (mdia maior ou igual a 7.0) ou reprovado.

  • 7/16/2019 Apostina Unisa

    49/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br52

    5. Considere o trecho de algoritmo em PortuC:

    se (B1)

    C1;

    seno se (B2)

    se (B3)

    C2;

    seno

    { C3;

    C4;

    }

    C5;

    Em PortuC, no existe uma varivel do tipo lgico a qual se possa atribuir um valor verda-deiro ou also. No entanto, o PortuC considera o valor 0 (zero) como sendo also e qualqueroutro valor dierente de zero como sendo verdadeiro. Nos exerccios que se seguem, considere

    que os valores de B1, B2 e B3 representam valores verdadeiros (dierentes de zero) ou alsos(iguais a zero) e responda pergunta: quais comandos sero executados.

    a) Se B1= Verdadeiro B2 =Verdadeiro e B3=Falso?

    b) Se B1=Falso B2= Verdadeiro e B3= Falso?

    c) Se B1=Falso B2=Verdadeiro e B3=Verdadeiro?

    d) Quais os valores de B1, B2 e B3 para que somente o comando C5 seja executado?

    6. Dado um conjunto de respostas sim ou no de vrias pessoas e seu sexo (F=eminino,M=masculino), escreva comandos em PortuC para calcular:

    a) o nmero de mulheres que responderam sim;

    b) o nmero de homens que responderam no;

    c) o nmero de mulheres e homens que responderam no.

  • 7/16/2019 Apostina Unisa

    50/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br53

    7. Observe o algoritmo a seguir. Qual o valor de L aps a execuo deste algoritmo?

    inteiro A, B, C;

    real X, Y;

    inteiro L;

    principal()

    { A = 0; /* falso */B = 1; /* verdadeiro */

    C = 0; /* falso */

    X = 1.5;

    Y = 3.2;

    se (C ou (X+Y>5) ou no(A e B))

    L = 0;

    seno

    L = 1;

    }

    8. Escreva trechos de algoritmo em PortuC que ajudem o Instituto Brasileiro de Geograa e Es-

    tatstica (IBGE) a azer o censo populacional de uma certa cidade. Sabendo-se que os seguin-

    tes dados oram pedidos aos cidados: SEXO (H= homem, M= mulher) e RENDA (nmero de

    salrios-mnimos sm), os trechos de algoritmo devem ornecer:

    a) o total de homens;

    b) o total de mulheres;

    c) o total de pessoas da classe C (at 4 sm), da classe B (at 20 sm) e da classe A (acima de 20 sm).

    9. Fornecidos os dados das candidatas a modelo: ALTURA, PESO e IDADE, escreva um trecho de

    algoritmo para vericar se os dados se enquadram nos seguintes limites:

    ALTURA: de 1.70 a 1.85 m

    PESO: de 48.0 a 60.0 kg

    IDADE: de 17 a 21 anos

    Se os dados da candidata corresponderem a esses limites, deve ser impressa uma rase dizendoque ela oi aprovada; caso contrrio, que no oi aprovada.

    10. Modique o exerccio anterior para que uma rase seja impressa aps a vericao de cada

    quesito, dizendo se a candidata oi aprovada ou no em cada um deles e uma rase nal dizen-

    do se oi aprovada ou no como modelo.

  • 7/16/2019 Apostina Unisa

    51/168Unisa | Educao a Distncia | www.unisa.br55

    Neste captulo, caro(a) aluno(a), voc aprender uma metodologia que acilitar o processo de de-

    senvolvimento de solues algortmicas para os problemas que sero propostos para voc resolver. A

    metodologia composta de uma sequncia de passos, cujo principal objetivo ajud-lo(la) a resolver

    problemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como car bem claro logo

    adiante, resolvendo cada parte do problema por vez, consegue-se chegar a solues completas e com-

    plexas a partir de solues simples, que j oram, muitas vezes, encontradas para diversos outros proble-

    mas semelhantes.Voc conhecer os passos da metodologia e vrios exemplos prticos sero ornecidos de maneira

    a amiliariz-lo(la) com o mtodo. importante ressaltar que a metodologia um processo dinmico.

    Voc pode estar num passo mais adiante e identicar uma varivel auxiliar e voltar aos passos anteriores

    e alter-los, por exemplo. Portanto, no se detenha aos detalhes, pelo contrrio, sinta-se livre para criar

    suas solues. O mtodo pretende ajud-lo(la) e no engess-lo(LA)! Vamos em rente!

    METODOLOGIA PARA A CONSTRUODE ALGORITMOS4

    Passo 1: Ler e entender o problema

    importante ler e reler, pelo menos 3 vezes, o problema at que ele seja completamente compreen-

    dido. No adianta querer buscar a soluo de um problema que no esteja sucientemente esclarecido!

    Passo 2: Listar todos os dados de entrada do problema

    Um dado de entrada aquele que ser ornecido pelo usurio, ou seja, o dado que ser lido pelo

    programa.

    Passo 3: Listar todos os dados de sada do problema

    Um dado de sada algo que ser produzido ou calculado pelo programa; tudo aquilo que deve

    ser apenas impresso no deve ser considerado um dado de sada.

    4.1 Os Passos da Metodologia

  • 7/16/2019 Apostina Unisa

    52/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br56

    Passo 4: Listar todas as variveis auxiliares do programa

    Uma varivel auxiliar identicada como aquela que necessria para o clculo de alguma varivel

    de sada e no varivel de entrada. Por exemplo, num problema em que vrios nmeros sero lidos e

    sua mdia deve ser calculada, o nmero uma varivel de entrada e a mdia uma varivel de sada,

    mas como, para calcular a mdia, necessrio somar os nmeros e dividir a soma pela quantidade de

    nmeros lidos, a soma e a quantidade de nmeros so variveis auxiliares do programa.Assim, para identicar as variveis auxiliares, basta analisar cada uma das sadas e vericar se, dadas

    as entradas, h necessidade de mais alguma varivel para acilitar o seu clculo.

    Passo 5: Declarar todas as variveis do programa

    Cada dado de entrada, cada dado de sada e cada varivel auxiliar geram uma varivel. As variveis

    do programa devero ser uma para cada dado de entrada, uma para cada dado de sada e uma para cada

    varivel auxiliar. extremamente importante que o programador escolha nomes de variveis signicativos, que

    possam exprimir a uno da varivel. Por exemplo, uma varivel que receber a idade de uma pessoa

    no deveria se chamar x, nem mesmo i seria bom, o ideal seria idade.

    Passo 6: Inicializar as variveis do programa

    H um conjunto de pequenas regras que pode nos ajudar a encontrar os valores iniciais de cada

    varivel do programa, apesar de que nem todas as variveis precisam ter valores iniciais:

    toda varivel de entrada inicializada com o comando leia;

    todo contador e todo somador devem ser inicializados com 0 ( zero);

    todo produto deve ser inicializado com 1 (um).

    Passo 7: Escrever o cdigo para calcular cada uma das sadas do programa

    Os principais problemas a serem solucionados, na maior parte das vezes, resumem-se no clculo

    das sadas do programa. Portanto, neste passo, cada uma das sadas deve ser analisada individualmentee sua soluo encontrada separadamente.

    Passo 8: Imprimir os resultados do programa

    Aqui, s devem ser impressos os resultados pedidos na especicao do problema.

    Passo 9: Montar o algoritmo unindo os resultados dos passos 5 a 8

    Os passos 5 a 8 tm a soluo do problema. A montagem do algoritmo/programa pode seguir um

    esquema bsico, mas vai depender muito da lgica de cada problema. Portanto, o esquema a seguir

  • 7/16/2019 Apostina Unisa

    53/168

    Algoritmos e Linguagem de Programao

    Unisa | Educao a Distncia | www.unisa.br57

    serve apenas de orientao. Cada problema deve, no entanto, ser analisado logicamente para chegar ao

    seu algoritmo.

    Passo 10: Fazer o teste de mesa do programa a partir de dierentes valores iniciais

    O teste de mesa consiste na execuo de todas as instrues do programa a partir de conjuntos

    de valores iniciais. Os valores iniciais devem ser escolhidos de maneira que as condies de contorno

    do problema sejam vericadas. Por exemplo, num programa que trabalhe com ags, deve ser testada acondio em que o valor do ag seja ornecido como dado inicial; num programa que s leia nmerospositivos, devem ser ornecidos nmeros negativos e zero; entre outras situaes possveis.

    4.2 Soluo de Exerccios utilizando a Metodologia

    4.3 Resumo do Captulo

    A estratgia que utilizaremos nesta seo propor uma lista de exerccios e resolver alguns de-

    les usando a metodologia, deixando outros para que voc, utilizando solues semelhantes, resolva-os

    sozinho(a), ok? Ento, vamos l!

    Neste captulo, caro(a) aluno(a), voc aprendeu uma metodologia que acilitar o processo de de-

    senvolvimento de solues algortmicas para os problemas que sero propostos para voc resolver. A

    metodologia composta de uma sequncia de passos, cujo principal objetivo ajud-lo a resolver pro-

    blemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como car bem claro logo

    adiante, resolvendo cada parte do problema por vez, consegue-se chegar a solues completas e com-

    plexas a partir de solues simples que j oram, muitas vezes, encontradas para diversos outros proble-

    mas semelhantes.

    Voc conhecer os passos da metodologia e vrios exemplos prticos sero ornecidos de maneira

    a amiliariz-lo com o mtodo.

    AtenoAteno

    /* Nome do Programa e o que ele faz */

    principal(){

    imprima(Fim do programa);

    }

  • 7/16/2019 Apostina Unisa

    54/168

    Elisamara de Oliveira

    Unisa | Educao a Distncia | www.unisa.br58

    1. Escreva um algoritmo em PortuC para calcular e imprimir a rea e o permetro de uma sala

    retangular, sendo qu