Elisamara de OliveiraAlgoritmos e Linguagem de Programação Revisada por Clausia Mara Antoneli (janeiro/2013) APRESENTAÇÃO É com satisfação que a Unisa Digital oferece a você, aluno(a), esta apostila de Algoritmos e Linguagem de Programação, parte integrante de um conjunto de materiais de pesquisa voltado ao aprendizado dinâmico e autônomo que a educação a distância exige. O principal objetivo desta apostila é propiciar aos(às) alunos(as) uma apresentação do conteúdo básico da disciplina. A Unisa Digital oferece outras formas de solidificar seu aprendizado, por meio de recursos multidisciplinares, como chats, fó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 fornecem acervo digital e impresso, bem como acesso a redes de informação e documentação. Nesse contexto, os recursos disponíveis e necessários para apoiá-lo(a) no seu estudo são o suplemento que a Unisa Digital oferece, tornando seu aprendizado eficiente e prazeroso, concorrendo para uma formação completa, na qual o conteúdo aprendido influencia sua vida profissional e pessoal. A Unisa Digital é assim para você: Universidade a qualquer hora e em qualquer lugar! Unisa Digital SUMÁRIO INTRODUÇÃO................................................................................................................................................ 5 1 ALGORITMOS............................................................................................................................................ 7 1.1 O que é um Algoritmo?..................................................................................................................................................7 1.2 Conceitos Básicos da Programação de Computadores.....................................................................................9 1.3 Etapas da Programação de Computadores.........................................................................................................12 1.4 Expressão de Algoritmos ...........................................................................................................................................13 1.5 Os Algoritmos serão Expressos em Pseudolinguagem..................................................................................18 1.6 Resumo do Capítulo.....................................................................................................................................................19 1.7 Atividade Proposta........................................................................................................................................................19 2 PSEUDOLINGUAGEM DE PROGRAMAÇÃO: PORTUCÊ.............................................. 21 2.1 Identificadores................................................................................................................................................................21 2.2 Tipos Básicos e Declaração de Variáveis................................................................................................................22 2.3 Comando de Atribuição..............................................................................................................................................23 2.4 Operadores Aritméticos .............................................................................................................................................24 2.5 Operadores Lógicos .....................................................................................................................................................25 2.6 Operadores Relacionais..............................................................................................................................................28 2.7 Comando Condicional.................................................................................................................................................29 2.8 Comando de Repetição..............................................................................................................................................31 2.9 Comandos de Entrada e Saída..................................................................................................................................33 2.10 Separador de Comandos ........................................................................................................................................37 2.11 Comentários..................................................................................................................................................................37 2.12 Bloco de Programa.....................................................................................................................................................38 2.13 Resumo do Capítulo..................................................................................................................................................41 3 CONSTRUÇÃO DE ALGORITMOS EM PORTUCÊ: PRATICANDO OS COMANDOS E FAZENDO CÁLCULOS..................................................................................... 43 3.1 Declaração de Variáveis – Comandos “leia” e “imprima”.................................................................................43 3.2 Comando Condicional “se”.........................................................................................................................................44 3.3 Bloco de Programa........................................................................................................................................................45 3.4 Operações Básicas com Números...........................................................................................................................46 3.5 Operações com Operadores Lógicos e Relacionais..........................................................................................49 3.6 Resumo do Capítulo.....................................................................................................................................................51 3.7 Atividades Propostas....................................................................................................................................................51 4.1 Os Passos da Metodologia.........................................................................................................................................55 4.2 Solução de Exercícios utilizando a Metodologia...............................................................................................57 4.3 Resumo do Capítulo.....................................................................................................................................................57 4.4 Atividades Propostas....................................................................................................................................................58 4 METODOLOGIA PARA A CONSTRUÇÃO DE ALGORITMOS.................................... 55 .....10 Funções Úteis em C.................................................................... Aritméticos..............................8 Atividades Propostas............................................................................................................................................................................... 127 9 CONSIDERAÇÕES FINAIS....................................................................................................................................................................................................................................................79 5.........................................................................................................1 Comando de Repetição – Entrada Indeterminada de Dados (uso de flags).68 5...........3 Comando Condicional em C (if).......................89 5...............................................................................................................................................................................8 Comentários em C .7 Comandos de Leitura e Escrita em C ..................................................... 61 5..............................................................5 Exemplo da Eleição.............................................................................................................................................................................119 8 PRÁTICA EM LABORATÓRIO................71 5.............13 Atividades Propostas..............................................112 6 USANDO COMANDOS DE REPETIÇÃO EM C...........................................................................................................................1 Tipos Básicos e Declaração de Variáveis em C...............................................76 5............84 5....72 5......................4 Comando de Seleção Múltipla em C (switch)................................................................................................... 91 7 OUTROS PROGRAMAS EM C.........................................................9 Bloco de Programa em C .....108 6................................................................................................................................62 5....................127 8.........................................................................................................................................................................12 Resumo do Capítulo.2 Operadores de Atribuição.................................112 6..7 Resumo do Capítulo...............................................................65 5...................79 5....................................................................................100 6...............131 RESPOSTAS COMENTADAS DAS ATIVIDADES PROPOSTAS..............................................96 6..........................................................................104 6........4 Exemplo do Preço Final de Automóveis........................................61 5..............6 Exemplo da Série Numérica...........................................................................................................5 Comando de Repetição em C (while).............94 6..................................................................91 6.................................................................................................133 REFERÊNCIAS...................................81 5......................................................11 Tradução de PortuCê para a Linguagem C...5 A LINGUAGEM DE PROGRAMAÇÃO C..................................................................................................................................................................................................................................................................................................................6 Comando de Repetição em C (for).........3 Exemplo dos Minutos Telefônicos....................1 Estudo Dirigido........................................................................................................................................175 ........................2 Comando de Repetição – Entrada de Dados Determinada.................................................................................................................. Relacionais e Lógicos (Binários) em C .......................89 6...... Dra. mas muito poderoso: tudo se baseia na base 2. Nós nos comunicamos em Português. Elisamara de Oliveira Unisa | Educação a Distância | www. um programa que faz exatamente isso: traduz programas em C para instruções binárias (linguagem de máquina). O objetivo desta disciplina é capacitar você. que é mais próxima da nossa linguagem de comunicação. que é um roteiro com instruções sequenciais para se resolver um problema ou se realizar alguma tarefa. pois tudo será ensinado de forma simples e didática. os ingredientes seriam os dados. instigante e desafiadora! Vamos começar entendendo o que é um algoritmo. que possui apenas 2 algarismos: 0 e 1. ele precisa ser traduzido para linguagem de máquina! Mas isso será feito facilmente pelo compilador C. Esses dois dígitos binários. É como uma receita de bolo. caro(a) aluno(a). Usando essa analogia. ou bits. uma pseudolinguagem.unisa. os passos seriam as instruções do programa e o forno para assar o bolo seria o computador! O universo dos computadores é muito simples. será um belo desafio! Então. que indica os ingredientes e as instruções para se fazer o bolo passo a passo. formam a linguagem de máquina. afie seu raciocínio lógico e prepare-se para entrar num mundo em que a lógica será o carro-chefe! Não tema nada. caro(a) aluno(a). Isso ainda não resolve nosso problema: para que o computador possa executar nosso programa em C. da Unisa. Como você pode ver.INTRODUÇÃO Esta apostila se refere à disciplina Algoritmos e Linguagem de Programação do curso de Engenharia de Produção.. que é a única linguagem que o computador digital entende. na modalidade a distância. a fazer os primeiros programas de computador utilizando uma linguagem de programação. Escrever programas de computador é uma tarefa muito interessante. Mais algumas páginas à frente e você já estará programando seu computador! Profa. muito limitado. Mas nós vamos aprender a escrever as instruções dos nossos programas numa linguagem de programação chamada C. e depois traduzi-los para um programa em linguagem C. certo? Então vamos começar a escrever nossos primeiros algoritmos em PortuCê..br 5 . num algoritmo. que. um algoritmo descreve eventos com duração finita.1 ALGORITMOS Em nosso dia a dia. processo: sequência temporal de ações. a formulação do algoritmo e a definição das estruturas de dados estão intimamente ligadas. Unisa | Educação a Distância | www. através de ações que ocorrem sequencialmente. um evento ocorre. que envolvem um conjunto de objetos cujas características podem ser alteradas.” “No processo de construção de programas.br 7 . utilizando inicialmente alguns conceitos já definidos na literatura técnica da área: Atenção “Programar é construir algoritmos. executamos mecanicamente uma série de ações.” Além dessas importantes definições.unisa. que são seguidas sequencialmente e que provocam o acontecimento de algo. temos um trajeto frequente ao sairmos diariamente de casa em direção ao nosso trabalho ou à nossa universidade. estado: propriedades de um objeto numa dada situação. Em outras palavras. 1.” “Programa = algoritmo + estruturas de dados. podem-se observar os seguintes aspectos: ação: evento que ocorre num período de tempo finito. sempre que seguido. padrão de comportamento: toda vez que é seguido. Isso é um algoritmo. Por exemplo. juntos. nos leva ao nosso destino.1 O que é um Algoritmo? Vamos. acrescentemos que. entender o que são algoritmos. para depois fritá-la. “Pique as batatas”. o número de batatas descascadas varia. há uma condição para que o avental seja colocado. Apesar de muito simples. o avental não é usado toda vez: existe um motivo para colocá-lo. “Traga a panela do armário”. no nosso curso.unisa. Exemplos de algoritmos conhecidos: Qual é o algoritmo que você descreve para vir estudar? Qual é o algoritmo para se fazer uma feijoada? Qual é o algoritmo para se trocar uma lâmpada? Apesar de receitas culinárias e trajetos rotineiramente percorridos encaixarem-se perfeitamente no conceito inicial de algoritmo. que seja capaz de ser executado por um computador. que estão separadas por um ponto e vírgula. “Frite as batatas na panela”.Elisamara de Oliveira Saiba mais Exemplo de um algoritmo Algoritmo para fazer “batatas fritas para o jantar” “Traga a cesta com batatas da despensa”. “traga”. Se “a roupa é clara” então “coloque o avental”. algumas observações importantes podem ser notadas nesse algoritmo: o tempo verbal está na forma imperativa (“faça”. ou seja. há um sequenciamento das ações.br .). a ordem das ações é importante: primeiro descasca-se a batata. “Coloque as batatas fritas numa vasilha com papel absorvente”. “frite” etc. “Coloque óleo na panela”. estamos interessados num tipo de algoritmo especial. Enquanto “nº de batatas é insuficiente para o número de pessoas” faça “descasque as batatas”.. “Esquente o óleo da panela”. “Escorra o excesso de óleo das batatas fritas”. a ação de “descascar uma batata” repete-se até que a condição de parada (ser suficiente para alimentar as pessoas que irão jantar) seja alcançada. é necessário que identifiquemos problemas do mundo real que possam ser traduzidos em ações primitivas finitas e dos quais se possa extrair um padrão de comportamento.. Para tanto. pica-se a batata. 8 Unisa | Educação a Distância | www. Basic. é importante observar que. Exemplos de linguagens de programação (alto nível) são: C. Unisa | Educação a Distância | www. a começar pelo próprio computador! 1. é necessário que você domine uma série de conceitos básicos. Pascal. ou seja. para começar a construir seus algoritmos e fazer seus primeiros programas de computador. simplesmente.com/p/como-cuidar-do-seu-computador. os programadores utilizam linguagens que estão mais próximas da linguagem humana. não é mesmo? Além disso.br 9 . na realidade. C#. Cobol. linguagens de programação. VisualBasic.2 Conceitos Básicos da Programação de Computadores Fonte: http://evotecinformatica. C++. em linguagem de máquina (zeros (0) e uns (1). estamos prontos para definir o que é um algoritmo. o computador executa uma série de instruções que ficam armazenadas em sua memória principal em código binário. Computador: é uma máquina capaz de seguir uma espécie de algoritmo chamado programa.unisa. Linguagem de alto nível: para escrever os programas de computador. que são apresentados a seguir. um curso de Programação de Computadores para alunos(as) que iniciam cursos superiores na área de Engenharia e Informática. que são os dígitos binários ou bits). que está escrito em linguagem de máquina. O curso de Algoritmos e Linguagem de Programação é. expresso em termos de um repertório bem definido e finito de ações primitivas que podem ser executadas. Sei que você está curioso(a) para conhecer um algoritmo.blogspot. Java. Linguagem de máquina: internamente. Analise a definição e veja como é coerente com o que apresentamos.html.Algoritmos e Linguagem de Programação Com base nos exemplos apresentados até aqui. distinguem-se claramente dois aspectos: aspecto estático: que corresponde ao texto. aspecto dinâmico: que corresponde à sua execução (a partir de valores iniciais). que são chamadas linguagens de alto nível ou. entre muitas outras. Delphi. Fortran. num algoritmo. mas. Um algoritmo é a descrição de um padrão de comportamento. Nesse caso. Quanto mais próxima da linguagem de máquina.unisa. sendo. A aprendizagem contínua é fundamental. A Figura 1 mostra a relação entre as linguagens discutidas anteriormente. que estão muito próximas da linguagem de máquina e mais distantes das linguagens de programação. mais “alto nível”. As linguagens de programação fazem uma espécie de ponte entre a linguagem binária. Programadores que tiveram pouca educação formal em disciplinas de Computação tendem a continuar a usar a mesma linguagem de programação. 2000). especialmente em termos de capacidade de abstração. mais de “baixo nível” é a linguagem. chamadas linguagem de baixo nível. pois se encarrega de traduzi-los para linguagem de máquina. em contrapartida.br . Dessa forma. entender e aprender com os manuais e livros técnicos das novas linguagens e os novos paradigmas que venham a surgir. quanto mais próxima das linguagens humanas. ou linguagem que o computador entende. por isso. É necessário que os programadores conheçam os fundamentos das linguagens de programação para que possam ler. Figura 1 – Relação entre linguagens de baixo e de alto nível. mesmo que esta esteja em desuso. como as oferecidas por sistemas operacionais. 10 Unisa | Educação a Distância | www. O compilador é um programa que traduz uma determinada linguagem de programação para linguagem de máquina. existem diversos compiladores específicos para cada uma das linguagens de programação e para cada sistema operacional. Linguagem de programação: “Uma linguagem de programação é uma linguagem utilizada por uma pessoa para expressar um processo através do qual o computador possa resolver um problema. Compilador: permite que os programadores utilizem linguagens de alto nível para escrever os programas de computador. Numa ponta da Figura 1. Pessoas que possuem uma compreensão limitada da linguagem natural tendem a ser mais limitadas para expressar seus pensamentos.Elisamara de Oliveira Linguagem de montagem ou Assembly: há programas de computador que precisam interferir diretamente no hardware da máquina para permitir a execução de funções específicas.” (SEBESTA. conforme ilustra a Figura 2. os programadores utilizam as linguagens de montagem ou linguagens assembly. por exemplo. e a linguagem que nós humanos utilizamos. está a linguagem de máquina e. estão as linguagens humanas. no outro extremo. O compilador de linguagem de montagem ou linguagem assembly é chamado assembler. embora a linguagem de programação (C) seja a mesma (linguagem de alto nível). Conforme ilustra a Figura 2.Algoritmos e Linguagem de Programação Figura 2 – Os compiladores são específicos para cada linguagem e para cada sistema operacional. dadas essas explicações básicas. como unir todas essas informações para começarmos a programar? A Figura 3 vai nos ajudar. um compilador C para o sistema operacional Windows (compilador X) é diferente de um compilador C para o sistema operacional Linux (compilador Y). Figura 3 – Do algoritmo à execução de um programa de computador. que também é diferente de um compilador C para o sistema operacional Mac OS (compilador Z).br 11 . Unisa | Educação a Distância | www. Caro(a) aluno(a). mostrando o ciclo completo da elaboração do algoritmo à execução de um programa de computador.unisa. Cada um dos componentes desse ciclo é explicado a seguir. por exemplo. é muito importante a utilização de técnicas de programação. Alguns compiladores têm editores com ambiente de programação integrados. 4. em texto [o arquivo-fonte possui a extensão relativa à linguagem de programação usada. confecção do algoritmo. Para realizarmos esse ciclo de etapas com sucesso. finalmente. por exemplo. para conseguirmos construir programas de computador.java (Java)]. 2. editar esse programa e usar um compilador C para testar seu funcionamento! 1. . Código executável: programa que pode ser executado no computador (o arquivo executável possui a extensão .cpp (C++). teste do algoritmo.obj para a maioria das linguagens de programação). Compilador: lê o código-fonte do programa e cria outro arquivo. vamos precisar passar por 5 etapas: obter um problema a ser resolvido. . . 3. traduzir o algoritmo para a linguagem de programação C. . é necessário cumprir 5 etapas básicas da programação. .unisa. Código-objeto: arquivo resultante da compilação do código-fonte.c (C).exe). para conseguirmos fazer programas de computador com qualidade e confiáveis. e. A programação estruturada é uma metodologia de projeto e desenvolvimento que pretende: 12 Unisa | Educação a Distância | www. como é o caso do compilador Dev C++. Arquivos de biblioteca: contêm funções já compiladas que podem ser utilizadas no programa. Resumindo todo esse processo.cs (C#). os símbolos do programa (como nomes de variáveis e de funções) e também informações sobre debug (o arquivo-objeto possui a extensão . instruções que descrevem a lógica do programa. como a programação estruturada. com o mesmo programa escrito em linguagem de máquina.pas (Pascal). Linker: programa auxiliar do compilador que cria o programa executável a partir de arquivos-objeto e dos arquivos de biblioteca. Código-fonte: conjunto de comandos escritos na linguagem de programação escolhida (que. escrever um algoritmo em pseudolinguagem para solucionar esse problema. confecção do programa de computador. O código-fonte fica armazenado no arquivo-fonte em formato ASCii.br . neste curso. As 5 etapas da programação de computadores são: 1. identificação de um problema do mundo real. execução do programa no computador. quer dizer. 5. Editor de texto: permite que o código-fonte do programa seja editado em um arquivo-fonte. será a linguagem C). ou seja. Contém informações sobre alocação de memória. caro(a) aluno(a).3 Etapas da Programação de Computadores Como acabamos de dizer.Elisamara de Oliveira Algoritmo: estrutura do programa. br 13 . Essa metodologia. como quadrados. quando utilizada. assim como os comandos condicionais. Além disso.4 Expressão de Algoritmos Os algoritmos podem ser expressos através de diagramas. tornando im- Unisa | Educação a Distância | www. Nos métodos baseados em diagramas. legíveis. tais como: o programador tem que memorizar todas as formas geométricas e conhecer as regras de inter-relacionamento entre elas. documentados. flexíveis. o programador perde um tempo considerável para fazer e refazer desenhos. facilitar a alteração e a manutenção dos programas de computador. caro(a) aluno(a). de repetição etc. vamos aprender a programar da melhor maneira possível: utilizando as regras da programação estruturada! 1. hexágonos. tendo que possuir diversas réguas com os símbolos dos diagramas. para que possamos começar a fazer nossos primeiros algoritmos! Expressão de Algoritmos Através de Diagramas A utilização de diagramas para a expressão de algoritmos foi bastante utilizada até a década de 1980. O principal objetivo da metodologia de programação estruturada é reduzir a complexidade dos problemas. Sendo assim. permitir a verificação.unisa. vamos optar por uma delas. induz o programador a produzir programas: confiáveis. retângulos. uma série de regras para a disposição dessas formas e/ou setas para representar o sequenciamento das instruções fazem parte desses métodos. Vamos examinar cada uma dessas três opções e. esses métodos apresentam uma série de inconveniências. de fácil manutenção. de pseudolinguagens ou da própria linguagem de programação.. é utilizada para representar as instruções de leitura e impressão de dados. uma grande variedade de formas geométricas. pentágonos etc. Apesar de terem sido utilizados largamente pelas primeiras gerações de programadores. no final deste capítulo. os desenhos começam a ocupar muitas páginas. Diagramas de Chapin e fluxogramas foram os principais métodos utilizados então.Algoritmos e Linguagem de Programação facilitar a escrita. para algoritmos muito grandes. facilitar o entendimento. a memorização de regras de expressão desvia a atenção do programador. que é a expressão da lógica algorítmica na própria linguagem de programação! Além disso.br . Veja a Figura 4 e tente descobrir o que o programa faz. Além de todos os inconvenientes citados. 14 Unisa | Educação a Distância | www. que não tem apenas de se concentrar na lógica do problema. sem muito esforço. A Figura 5 mostra um exemplo de um algoritmo expresso através de um fluxograma. esses métodos não são nem um pouco intuitivos. os métodos baseados em diagramas se distanciam muito do alvo da programação. se for possível: Figura 4 – Algoritmo expresso através de um diagrama de Chapin. da Figura 4). que de longe esgotam os seus problemas. como seria desejável. Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza e de que tipo básico elas são? (Dica: esse algoritmo faz a mesma coisa que o expresso pelo diagrama de Chapin. Observe a existência de diferentes formas geométricas para as diferentes instruções e o uso de setas para representar o fluxo dos dados.Elisamara de Oliveira praticável a visualização de toda a solução. mas tem as preocupações adicionais de elaborar desenhos e consultar regras e regras.unisa. claro. Uma linguagem de programação permite. além da expressão do raciocínio algorítmico. linguagens para desenvolvimento de software básico. Existem diversas linguagens de programação. mas isso é feito quando o programador já adquiriu bastante experiência de programação. principalmente aos que falam português. com certeza. quando o programador já consegue programar diretamente da linguagem de programação. a meta do programador. como é o nosso caso. a sua execução no computador (por causa do compilador. Os programadores iniciantes podem ter grandes dificuldades para aprender a programar se forem diretamente às instruções da linguagem de programação. Embora as linguagens de programação sejam chamadas linguagens de alto nível. conforme já aprendemos). Cada uma pode ser mais adequada à resolução de problemas específicos e recebe alguns rótulos por isso.Algoritmos e Linguagem de Programação Figura 5 – Algoritmo expresso através de um fluxograma. como linguagens para aplicações científicas. Expressão de Algoritmos Através de Linguagem de Programação Expressar um algoritmo através de uma linguagem de programação é o objetivo. suas instruções vêm em inglês. O inglês é uma das diversas linguagens humanas.br 15 . linguagens para utilização intensiva de recursos Unisa | Educação a Distância | www. mas pode oferecer certo desconforto aos estudantes. quer dizer.unisa. devido à sua proximidade com a linguagem humana. Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza e de que tipo básico elas são? (Dica: esse programa faz a mesma coisa que o expresso pelo diagrama de Chapin e pelo fluxograma. mostrados nas Figuras 4 e 5). Observe a estrutura do programa: começa com PROGRAM. 16 Unisa | Educação a Distância | www. Agora. observe o exemplo de um programa escrito na linguagem de programação C. Figura 7 – Algoritmo expresso na linguagem de programação C. na qual as variáveis são declaradas e. ou seja. para manipulação de bancos de dados etc. depois tem a seção VAR.br . já é um programa de computador. e linguagens para o ensino de programação! Veja a Figura 6. depois. vêm as instruções contidas entre o BEGIN (início) e o END (fim).Elisamara de Oliveira gráficos.unisa. Figura 6 – Algoritmo expresso na linguagem de programação Pascal. A Figura 6 mostra um algoritmo expresso na linguagem de programação Pascal. É um código escrito em Pascal. unisa. por um lado. por outro. o tipo básico é int. Embora seja uma pseudolinguagem.br 17 . Portanto. uma vez estando pronto o algoritmo na pseudolinguagem. também é um programa de computador. São muitas as vantagens de se utilizar uma pseudolinguagem para escrever algoritmos: é uma linguagem independente de máquina. Se sua resposta foi o código C. a sua implementação no computador (etapas 4 e 5 da programação: confecção e execução do programa) fica muito facilitada. Observe a estrutura do programa: começa com um comentário. mas o programa não pode ser executado no computador. depois a declaração das variáveis e. na qual as instruções do programa estão contidas entre o { (início) e o } (fim). pelo fluxograma e pelo programa Pascal. O programa traz um comentário dizendo explicitamente o que ele faz. digo-lhe que o Pascal tem o “rótulo” de linguagem mais adequado ao ensino de programação. garanto que você conseguiu responder à primeira pergunta. Há duas variáveis ali declaradas: valor e menor.Algoritmos e Linguagem de Programação A Figura 7 mostra um algoritmo expresso na linguagem de programação C. muito fácil para você! Expressão de Algoritmos Através de Pseudolinguagem Uma pseudolinguagem é uma notação para expressão de algoritmos para ser utilizada nas 3 primeiras etapas da programação definidas na seção 1. possui estrutura. saiba que é uma linguagem que foi criada para ser utilizada por programadores experientes. não se preocupe! O curso está apenas começando e há muito que se aprender de lógica de programação! Garanto que no final do curso esse programa vai parecer muito. A principal diferença entre a pseudolinguagem e a linguagem de programação é que a primeira não possui um compilador. vem a seção main. confecção e teste do algoritmo. se você teve dificuldade de entender ambos os códigos.” no programa. Com relação às variáveis que o programa utiliza e seu tipo básico. Mas. o programador tem que conhecer a sintaxe. ou seja. 5 e 6). se sua resposta foi o código Pascal. pois toda a lógica já foi desenvolvida e testada e somente uma tradução para a linguagem de programação-alvo se faz necessária. Unisa | Educação a Distância | www. a semântica e a estrutura da pseudolinguagem. mostrados nas Figuras 4. mas tem total liberdade para criar novos comandos ou usar instruções em alto nível (ou em forma de frases).3. ele vai se acostumando com a rigidez da sintaxe das linguagens de programação. Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza e de que tipo básico elas são? (Dica: esse programa faz a mesma coisa que o expresso pelo diagrama de Chapin. em seguida. tem a liberdade de expressar seu raciocínio sem esbarrar em limitações de contexto. sintaxe e semântica semelhantes às de uma linguagem de programação. menor. o programador pensa somente no problema a ser resolvido. depois tem a inclusão de uma biblioteca de funções. identificação de um problema do mundo real. mas. quais sejam. um pouquinho de imaginação e int = inteiro! Que tal você comparar o código C com o código Pascal? Semelhanças? Qual dos dois lhe pareceu mais fácil de entender? Bem. sem se preocupar com possíveis restrições do compilador ou do hardware (computador). observe a declaração “int valor. É apresentada na forma de português estruturado. Isso significa que é possível expressar o raciocínio algorítmico utilizando-se uma pseudolinguagem. Em função disso. Figura 8 – Algoritmo expresso na pseudolinguagem PortuCê. e tem estrutura. usaremos pseudolinguagem para escrever nossos primeiros algoritmos! As justificativas dessa nossa escolha são muitas e foram já fundamentadas. o C# e até o Android.unisa. pelo fluxograma. As vantagens de se utilizar o PortuCê são muitas. sintaxe e semântica muito semelhantes às da linguagem de programação C. 5. ganhou uma popularidade inquestionável na década de 1990 que se estende aos dias atuais. Pense sobre elas. O PortuCê é quase a tradução de um programa C para o português. pela linguagem Pascal e pela linguagem C. A Figura 8 mostra um algoritmo expresso na pseudolinguagem PortuCê. antes restrita à comunidade científica. Diga-me: qual deles é mais fácil de entender? Qual dessas formas de expressão de algoritmos você escolheria? 1. como o Java. em que são apresentadas as instruções contidas entre o { (início) e } (fim) do algoritmo. que já existiu. a linguagem C.Elisamara de Oliveira Veja o exemplo de um algoritmo escrito na pseudolinguagem PortuCê. mostrados nas Figuras 4. com certeza. pois o PortuCê será nosso maior aliado no aprendizado de algoritmos! Um exercício interessante para você fazer agora seria visitar os exemplos deste algoritmo escritos no diagrama de Chapin e no fluxograma e compará-los com o PortuCê. 6 e 7). Essa semelhança é proposital. A pseudolinguagem PortuCê utiliza o português. 18 Unisa | Educação a Distância | www. Observe a grande semelhança entre eles. Esse algoritmo em PortuCê corresponde ao programa em C mostrado na Figura 7. Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza e de que tipo básico elas são? (Dica: esse algoritmo faz a mesma coisa que o expresso pelo diagrama de Chapin. pois é a base de novas linguagens. A resistência. Apesar de o Pascal ter se consagrado como uma linguagem adequada para o ensino da programação aos estudantes que a iniciam. como primeira linguagem de programação.br . ou seja.5 Os Algoritmos serão Expressos em Pseudolinguagem Em função de tudo o que foi dito e após conhecermos as 3 formas de expressão de algoritmos. Observe a estrutura do algoritmo: começa com um comentário dizendo o que o algoritmo faz. tem a declaração das variáveis e depois vem a seção principal ( ). a linguagem C passou a ser alvo do interesse dos estudantes. numa forma estruturada. 1989). Dennis Ritchie e Brian Kernighan. 21. a adoção da linguagem seria realmente questionável. 17. não requer a memorização das abomináveis formas geométricas e setas e mais setas dos diagramas. em parte. o C como base dos novos e modernos paradigmas de programação. possa ser ensinado sem oferecer obstáculos à aprendizagem.unisa. 1. 3. Além disso. as linguagens de programação evoluíram bastante e as mais utilizadas hoje. meu(minha) estudante. 5. 21. ao fato de seus criadores. e da metodologia de ensino proposta pela professora viabiliza a adoção da linguagem de programação C como primeira linguagem. mais duas lições e você já estará fazendo seus primeiros programas de computador! 1. 2.Algoritmos e Linguagem de Programação em utilizá-la como primeira linguagem de programação pelos professores se deveu. 13.6 Resumo do Capítulo Caro(a) aluno(a). 34 . 8. cada vez mais..7 Atividade Proposta 1. a adoção do PortuCê. 5. a adoção de um método adequado e coerente para o ensino da programação de computadores pode atuar como um facilitador do processo de aprendizagem. RITCHIE. como o Java e o C#. nossa pseudolinguagem. Isso vai ao encontro das expectativas dos estudantes e coloca o ensino da programação na direção da atual tendência da programação de computadores... Unisa | Educação a Distância | www. que vem utilizando. 25 .br 19 . permitindo que uma linguagem mais complexa. terem afirmado que “C retém a filosofia básica de que os programadores sabem o que estão fazendo” (KERNIGHAN. 1. Bem. Tente deduzir qual o padrão de comportamento utilizado para gerar as sequências: 1. o PortuCê.. 1. o que o torna muito familiar ao programador. Fique tranquilo. além de oferecer o conforto de utilizar nossa língua pátria. exatamente pelo fato de serem inexperientes. 9. No entanto. Assim. como o C. têm como base a linguagem C. 13. se considerarmos que programadores iniciantes não têm condições de saber com segurança o que estão fazendo. 2 PSEUDOLINGUAGEM DE PROGRAMAÇÃO: PORTUCÊ Caro(a) aluno(a), suponha que você ganhou de presente uma viagem para os Estados Unidos. O que você deveria fazer antes de ir para lá? Estudar inglês! Já que os americanos falam essa língua, claro. Então, neste nosso curso, você está ganhando a chance única de aprender a programar. Este capítulo o convida a aprender PortuCê, que é a língua que os algoritmos (que são as bases dos programas de computador) falam! O PortuCê é, basicamente, uma tradução da linguagem C para Português. Assim, aprendendo bem o PortuCê, você já estará se preparando para aprender a própria linguagem C, de forma simples e fácil! 2.1 Identificadores Todo programa de computador manipula dados, que são armazenados em variáveis. Uma variável precisa ter um nome que a identifique de forma única no programa: é o identificador. Atenção • Um identificador em PortuCê é formado por caracteres alfanuméricos; • O primeiro caractere tem que ser uma letra; os outros caracteres podem ser: • letras: A-Z, a-z; • dígitos: 0-9; • sublinhado: _ . • Não pode haver dois identificadores iguais. • Letras minúsculas e letras maiúsculas são diferentes. • Os identificadores não podem ser acentuados. • Não pode haver espaço em branco num identificador. • O caractere “ç” não pode ser usado num identificador. • Um identificador não pode ter o mesmo nome das palavras reservadas do PortuCê (como: principal, se, senão, inteiro, real etc.). Exemplos de identificadores válidos: NOME, raiz1, letra4, Total_dos_Salarios, Nome_de_Familia. Unisa | Educação a Distância | www.unisa.br 21 Elisamara de Oliveira Exemplos de identificadores INVÁLIDOS: 4pontos CUSTO FINAL PreçoTotal Pessoa+Alta Preco-caro Total_dos_salários inteiro (começa com número) (tem espaço em branco) (caractere “ç” não pode ser usado) (caractere “+” não pode ser usado) (caractere “-” não permitido) (palavra acentuada) (palavra reservada do PortuCê) 2.2 Tipos Básicos e Declaração de Variáveis Os dados manipulados por um programa são armazenados em variáveis. As variáveis precisam ter um nome (identificador), um tipo associado, e precisam ser declaradas antes que possam ser utilizadas. Saiba mais • Há três tipos básicos que podem ser associados às variáveis: • inteiro; • real; • caractere. • Para declarar uma variável, escreve-se o nome de seu tipo, salta-se um espaço em branco, em seguida escreve-se o nome do seu identificador e “;” para finalizar a declaração. • Se mais de uma variável for do mesmo tipo básico, elas podem ser declaradas juntas, apenas separadas por vírgulas. • Toda variável precisa ser declarada antes de ser utilizada. • Não pode haver duas variáveis com mesmo nome, mesmo que tenham tipos básicos diferentes, a menos que algum caractere maiúsculo ou minúsculo as diferencie. Exemplos de declaração de variáveis válida: caractere NOME[20], letra; inteiro soma; real raiz1, Total_dos_Salarios; caractere Nome_de_familia[30]; Exemplos de declaração de variáveis INVÁLIDA: caractere NOME[20]; letra4; (o separador de identificadores deve ser a vírgula) inteiro: SOMA; (não pode haver o sinal de dois-pontos após o nome do tipo) raiz1, Total_dos_Salarios real; (o tipo básico deve vir antes dos identificadores) caractere Nome_de_Familia[30]; (o nome do tipo básico está errado) real SOMA; (a variável SOMA já foi declarada: um identificador não pode ser duplicado) Unisa | Educação a Distância | www.unisa.br 22 Algoritmos e Linguagem de Programação 2.3 Comando de Atribuição O conteúdo das variáveis do programa pode ser determinado através de dois tipos de comandos: comando de atribuição e comando de leitura. O comando de atribuição permite que um determinado valor seja armazenado numa variável. Atenção • O símbolo do comando de atribuição é = . • Não se deve atribuir a uma variável um valor que NÃO seja compatível com o tipo básico dessa variável, ou seja, números inteiros devem ser atribuídos a variáveis do tipo inteiro; números reais devem ser atribuídos a variáveis do tipo real; frases e letras devem ser atribuídas a variáveis do tipo caractere. • Caso não haja compatibilidade entre o dado e o tipo da variável, podem acontecer efeitos indesejados. Então, muito cuidado, pois nesse tipo de atribuição ocorre a CONVERSÃO AUTOMÁTICA DE TIPOS e o que chega na variável de destino pode ser um desastre! • Toda variável deve ter um valor a ela atribuído antes de ser usada no programa; • Em variáveis reais, SÓ EXISTE PONTO DECIMAL; não se pode usar vírgula decimal. Exemplos de atribuições válidas: letra = ‘L’; soma = 0; Total_dos_Salarios = 1275.50; NOME = “Luiza”; Exemplos de atribuições INVÁLIDAS: NOME = Maria; (a cadeia de caracteres tem que estar entre aspas) (o símbolo que delimita a cadeia de caracteres não pode ser apóstrofo, devem-se usar aspas) (o valor a ser atribuído a uma variável numérica não pode estar entre apóstrofos nem entre aspas) (não existe vírgula decimal, o certo é usar ponto decimal) (numa variável do tipo inteiro,como é o caso da variável soma, não pode haver parte decimal; esse caso está sujeito à conversão automática) (o símbolo do comando de atribuição é = e não :=) NOME = ‘Maria’; Total_dos_Salarios = ‘1275.50’; Total_dos_Salarios = 1275,50; soma = 10.0; soma := 0; Unisa | Educação a Distância | www.unisa.br 23 unisa. impostoderenda = salario * (0. seno. raiz quadrada. 24 Unisa | Educação a Distância | www. • / (divisão real).br . valoremdolares = salario / 1.20).descontoinss. • Alguns operadores aritméticos mais avançados são: • % (resto da divisão inteira). capaz de armazenar o valor resultante.).85. raiz = sqrt(numero). contador = contador +1. cosseno etc. quociente = 10 / 3. • abs( ) (valor absoluto).4 Operadores Aritméticos Os operadores aritméticos permitem que expressões da Matemática sejam atribuídas às variáveis. Os operadores aritméticos implementam as operações básicas (adição. Saiba mais • Os operadores aritméticos básicos são: • + (adição). senão poderá ocorrer uma conversão automática com resultados muitas vezes indesejados ou mesmo imprevisíveis. • / (quociente da divisão inteira). salario = ((totaldehoras*32.50)+102. --contador.00) . Exemplos de expressões aritméticas válidas: resto = 10 % 3. • ++ (adiciona 1). ++contador.(subtração).Elisamara de Oliveira 2. nome = nome + “da silva”. divisão e multiplicação) e algumas operações mais avançadas da Matemática (como logaritmo. • sqrt( ) (raiz quadrada).(subtrai 1). • * (multiplicação). subtração. • -. • . A variável que vai receber o resultado de uma operação aritmética tem que ser de um tipo numérico compatível. OU e NÃO. • ! (negação). portanto não podem ser utilizados juntos) (em variáveis do tipo caractere só pode ser feita adição ou subtração de caracteres) (o operador * é diádico. as variáveis lógicas são utilizadas para descrever o funcionamento de um sistema. contador = *1. 2.85. ou seja.Algoritmos e Linguagem de Programação Exemplos de expressões aritméticas INVÁLIDAS: resto = 10. • ou (disjunção). envolvem sempre dois operadores.5 Operadores Lógicos Os operadores lógicos permitem que os três principais operadores da Álgebra de Boole possam ser utilizados num programa: E. Caro(a) aluno(a). aqui cabe uma explicação um pouco mais detalhada para melhorar o entendimento dos operadores lógicos E.50. tem que envolver dois operandos) valoremdolares = salario / 1. O estado dos operandos e o resultado de uma operação lógica são sempre FALSOS (avaliados como zero) ou VERDADEIROS (avaliados como diferentes de zero). nome = nome * 3. • O operador binário “ou” envolve sempre dois operandos e o resultado é FALSO somente quando ambos os operandos forem FALSOS.unisa. na prática.br 25 . salario = totaldehoras *+ 32. (o operador % só pode envolver números inteiros) (não existe vírgula decimal. como um circuito formado por uma bateria e uma lâmpada: Unisa | Educação a Distância | www. basta que um operando seja FALSO para que o resultado seja FALSO. basta que um operando seja VERDADEIRO para que o resultado seja VERDADEIRO. OU e ! (não): uma variável lógica é aquela que pode assumir apenas os valores VERDADEIRO ou FALSO. • O operador unário “!” muda o estado do operando de FALSO para VERDADEIRO ou de VERDADEIRO para FALSO. o separador é sempre o ponto decimal) (os operadores * e + são diádicos. ou seja. • O operador binário “e” envolve sempre dois operandos e o resultado é VERDADEIRO somente quando ambos os operandos forem VERDADEIROS. Saiba mais • Os operadores lógicos são: • e (conjunção).0 % 3. Se a chave está aberta (valor 0 ou valor FALSO). o que pode permitir que a lâmpada se acenda. e somente se. como o mostrado a seguir (na função “E”. o que caracteriza um circuito com chaves em sequência. todas as variáveis lógicas de entrada tiverem valor 1=VERDADEIRO. Em outras palavras.unisa.br . a lâmpada do circuito só acende se ambas as chaves estiverem fechadas. a corrente não pode passar. uma função “E” resulta em 1=VERDADEIRO se. 26 Unisa | Educação a Distância | www. somente se ambas as entradas forem verdadeiras a expressão é avaliada como verdadeira). Se a chave está fechada (valor 1 ou valor VERDADEIRO). a corrente pode passar. o que pode impedir que a lâmpada se acenda.Elisamara de Oliveira a representação dos níveis lógicos (1=verdadeiro e 0=falso) pode ser melhor entendida através de chaves que representam um circuito. ela se fecha e acende a luz. Em outras palavras. e.0 e faltas <= 18) ou foiDispensado == 1) se !( numero % 2 == 0) Unisa | Educação a Distância | www. No caso do circuito. funciona assim: se a chave está aberta. Ela converte o estado ou valor de uma variável lógica em seu inverso lógico: de VERDADEIRO para FALSO e de FALSO para VERDADEIRO. a lâmpada acende se uma das chaves estiver fechada ou quando as duas estiverem fechadas (forem verdadeiras). o que caracteriza um circuito com chaves em paralelo. uma das variáveis lógicas de entrada tiver valor 1=VERDADEIRO.Algoritmos e Linguagem de Programação uma função “OU” resulta em 1=VERDADEIRO se. Exemplos de expressões lógicas válidas: se (altura > 1. como o mostrado a seguir (na função “OU”. uma função “!” (não) é uma operação de inversão.br 27 . ela se abre e apaga a luz. basta que uma entrada seja verdadeira para a expressão ser avaliada como verdadeira).unisa.80 e idade < 21 e escolaridade >= 2) se (idade >= 13 e idade <=20) se ((media >= 7. pelo menos. se está fechada. • >= (maior ou igual a).Elisamara de Oliveira Exemplos de expressões lógicas INVÁLIDAS: se (altura > 1.6 Operadores Relacionais Os operadores relacionais permitem a comparação entre conteúdos de variáveis ou de valores e resultam sempre num resultado FALSO (avaliado como zero) ou VERDADEIRO (avaliado como diferente de zero).unisa. • == (igual a). • != (diferente de).50) Exemplos de expressões relacionais INVÁLIDAS: se (resposta ! = ‘S’) (o símbolo do operador “diferente” está errado: não pode haver espaço em branco entre o “!” e o “=“) (o símbolo do operador “menor que” está errado: não pode haver espaço em branco entre o “<“ e o “=“) = 1.80 e ou idade < 21) (os operadores “e” e “ou” são binários. Saiba mais • Os operadores relacionais são: • > (maior que). envolvem sempre 2 operandos. Importante: o sinal “=” corresponde ao comando de atribuição e o sinal “==” significa comparação! Exemplos de expressões relacionais válidas: se se se se (resposta == (resposta == (resposta != (sexo == ‘F’ ‘S’) ‘S’ ou resposta == ‘s’) ‘S’ e resposta != ‘s’) e altura <= 1. • < (menor que). portanto não podem ser utilizados juntos) (a variável idade deveria ser repetida para obter o resultado lógico da comparação) se (idade >=13 e <= 20) 2.50) se (altura < 28 Unisa | Educação a Distância | www.br . • <= (menor ou igual a). mas está sendo feita uma atribuição e não uma comparação. quando a <condição> é avaliada como FALSA. não é comando. Unisa | Educação a Distância | www. Portanto. apenas faz parte do comando “se”. se é avaliada como falsa. senão eu vou de bicicleta”. o <bloco de comandos 1> é executado e o comando condicional é finalizado. Nesse caso. o <bloco de comandos 2> é executado e o comando condicional é finalizado. • A cláusula “senão” pode não existir num comando “se”. • “senão” é cláusula do comando “se”.7 Comando Condicional O comando condicional permite que se tomem 2 caminhos diferentes e mutuamente exclusivos a partir da avaliação de uma condição. que é do comando de atribuição. • se a <condição> for FALSA. e não “==” que é a igualdade. • se a <condição> for VERDADEIRA. um caminho é seguido. ou seja. Quando existir apenas um comando.Algoritmos e Linguagem de Programação se (resposta = ‘S’) (o problema aqui é o uso do símbolo “=”. nesse exemplo.unisa. • Os delimitadores de início { e de fim } são obrigatórios quando existe mais de um comando no <bloco de comandos 1> ou mais de um comando no <bloco de comandos 2>. (quando não existe a cláusula “senão”). na verdade. nunca ambos! A associação do comando condicional com fatos rotineiros é imediata: “se estiver chovendo eu vou de carro. Se a condição é avaliada como verdadeira.br 29 . os delimitadores ficam opcionais. nenhum comando é executado e o comando “se” é finalizado. o comando não está errado. outro caminho é escolhido. muito cuidado!) 2. a pessoa avalia a condição do tempo antes de decidir se sairá de carro ou de bicicleta e não há possibilidade de ela sair com ambos os meios de transporte! Atenção • A sintaxe do comando condicional é: se (<condição>) { <bloco de comandos 1> } senão { <bloco de comandos 2> } • A semântica (como funciona) do comando condicional é: • a <condição> é avaliada como VERDADEIRA (valor diferente de zero) ou FALSA (valor igual a zero). unisa. ++contadoraprovados. } senão { aprovado = 0.Elisamara de Oliveira Exemplos de comandos condicionais VÁLIDOS: se (media >= 7. } se (media >= 7. } Exemplos de comandos condicionais INVÁLIDOS: se media >= 7.0) aprovado = 1.0 e faltas <= 9) { aprovado = 1. } se (media >= 7. ++contadoraprovados. ++contadoraprovados.0) { aprovado = 1.0) { aprovado = 1.br . ++contadoraprovados. } senão aprovado = 0. ++contadorreprovados. se (media >= 7. se (media >= 7.0) aprovado = 1.0 aprovado = 1. senão aprovado = 0.0) { aprovado = 1. (faltou colocar parênteses na condição) (faltou colocar o delimitador de fim { no final do comando ) 30 Unisa | Educação a Distância | www. se (media >= 7. se (media >= 7.0) { aprovado = 1. Algoritmos e Linguagem de Programação se (media >= 7.br 31 . Enquanto a condição for avaliada como verdadeira (ou diferente de zero). continue subindo a rua e verificando se é a casa procurada”. ++contadorreprovados. o comando ou bloco de comandos é executado repetidamente. a pessoa avalia a condição. por exemplo. } senão aprovado = 0.0) { aprovado = 1. supondo que a numeração esteja em ordem crescente. A associação do comando de repetição com fatos rotineiros é possível: “enquanto o número da casa for menor que o procurado. após o comando aprovado = 0) se (media >= 7. ++contadoraprovados. (faltou .0 e faltas <= 9) { aprovado = 1. ++contadoraprovados. que é a verificação do número desejado entre diversas casas de uma rua. } senão aprovado = 0 (novamente faltou . Essa avaliação continua até que a casa procurada seja encontrada ou que se encontre uma casa cujo número seja superior ao procurado. } (faltou o delimitador { após o “senão”) se (media >= 7. nesse exemplo. O número de vezes é determinado por uma condição que é constantemente avaliada. quando a condição fica falsa.unisa. Unisa | Educação a Distância | www.8 Comando de Repetição O comando de repetição permite que um comando ou um bloco de comandos seja executado diversas vezes. o comando de repetição para.0) aprovado = 1. depois do comando aprovado = 1) se (media >= 7. senão aprovado = 0 (faltaram os delimitadores { } após a condição do comando se caso verdadeiro (antes do senão)) 2. ++contadoraprovados.0) aprovado = 1 senão aprovado = 0. • Entre os comandos do <bloco de comandos> é ESSENCIAL que exista um comando que altere a <condição> que é constantemente avaliada. ++numero. } (faltaram parênteses na condição) numero = 1. pois. senão ++contaimpar. Quando existir apenas um comando. (faltou colocar o delimitador fim } após o último comando) Unisa | Educação a Distância | www. • se a condição for FALSA. Exemplos de comandos de repetição INVÁLIDOS: enquanto contador <= 10 ++contador.Elisamara de Oliveira Atenção • A sintaxe do comando de repetição é: enquanto (condição) { <bloco de comandos> } • A semântica (como funciona) do comando de repetição é: • a condição é avaliada como VERDADEIRA (diferente de zero) ou FALSA (igual a zero). o <bloco de comandos> é executado e. numero = 1.br 32 . os delimitadores ficam opcionais e o “. caso contrário. Exemplos de comandos de repetição válidos: enquanto (contador < 3) ++contador. enquanto (numero <= 50) { se (numero % 2 == 0) ++contapar.” funcionará como delimitador de fim. ao chegar ao delimitador de fim } ou final do comando. indicando o final do comando “enquanto”. enquanto (numero <= 50) { se (numero % 2 == 0) ++contapar. ++numero. automaticamente se retorna à avaliação da condição. • se a condição for VERDADEIRA. senão ++contaimpar. o comando “enquanto” NUNCA TERMINARÁ! • Os delimitadores { e } são obrigatórios quando existe mais de um comando no <bloco de comandos>.unisa. o comando de repetição é finalizado. Algoritmos e Linguagem de Programação numero = 1. enquanto (numero <= 50). após a condição. É dessa forma que se consegue estabelecer um diálogo com o usuário. (como não existem os delimitadores de início e fim { }. senão ++contaimpar. } (como foi colocado . enquanto (numero <= 50) se (numero % 2 == 0) ++contapar. O comando de saída permite que informações e valores de variáveis possam ser enviados ao usuário pela tela do monitor. ++numero. Se o programa deseja saber o nome do usuário. senão ++contaimpar.unisa. por exemplo.9 Comandos de Entrada e Saída O comando de entrada permite que o usuário possa fornecer valores ao programa. somente o comando “se” faz parte do comando “enquanto” e. { se (numero % 2 == 0) ++contapar. como o comando “se” não altera a variável numero. o comando “enquanto” nunca vai parar!) numero = 1. ++numero. usa-se o comando de saída para fazer a pergunta “qual é o seu nome?” e usa-se o comando de entrada para obter a resposta e armazená-la numa variável. a variável numero não será alterada e o comando “enquanto” nunca vai parar!) 2. através do teclado. o comando “enquanto” foi finalizado.br 33 . que serão armazenados nas variáveis. Unisa | Educação a Distância | www. caractere ch. valor = 2002. ch). A tabela a seguir mostra um exemplo de declaração de variáveis de tipos básicos e a forma correta de leitura. depois que ele teclar <ENTER>. ch = ‘5’. &numero). Observe. [&] variável). &valor). • A semântica (como funciona) do comando de entrada é: • a variável tem que ter sido previamente declarada. para variáveis do tipo caractere (cadeia ou string). para variáveis do tipo real (float). na tabela. tudo o que ele tiver digitado será armazenado na variável automaticamente. nome). ch = ‘#’.unisa.867. a leitura e a atribuição de valores a um caractere único (%c) e a uma cadeia de caracteres (%s). para variáveis do tipo caractere (único) (character). ou seja.50. nome = “Maria”. Um único caractere vem entre apóstrofos (‘ ’) e uma cadeia de caracteres entre aspas (“ “)! 34 Unisa | Educação a Distância | www.br . valor = -5. nome = “fim”. real valor. leia(“%f”. • Recomenda-se utilizar o comando “leia” para ler uma só <variável> de cada vez. em que: “%letra” representa os especificadores de formato e depende do tipo associado à variável: • “%d” ou “%i” • “%f” • “%c” • “%s” para variáveis do tipo inteiro (integer). numero = 2002. para variáveis declaradas como inteiras ou reais. leia(“%s”. Declaração inteiro numero. ch = ‘s’. caractere nome[20].Elisamara de Oliveira Atenção • A sintaxe do comando de entrada é: leia(“%letra”. Leitura leia(“%i”. Exemplos de conteúdos numero = -5. a diferença entre a declaração. • o usuário vai utilizar o teclado para fornecer o dado e. • O símbolo & deve ser utilizado apenas para os tipos numéricos. leia(“%c”. a variável do tipo correspondente deve constar da lista de variáveis. %c. nesse caso. Media). • Entre aspas. leia (“%c”. idade). Exemplos de comandos de entrada e saída INVÁLIDOS: imprima (“Qual é o seu nome? ).nome. %d ou %f. lista de variáveis] ). imprima (“Qual é a sua altura? “). o seu conteúdo é copiado para a tela. • a ordem em que as palavras da frase e as variáveis aparecem no comando “imprima” é mantida quando é impressa na tela. imprima (“Qual é a sua idade? “). • A semântica (como funciona) do comando de saída é: • pode ser impressa qualquer frase e qualquer variável dentro de um comando “imprima”. (faltaram aspas após a interrogação para delimitar a frase a ser impressa) Unisa | Educação a Distância | www. podem ser escritas frases formadas por palavras intercaladas pelos especificadores de formato %s. • A lista de variáveis é opcional. Exemplos de comandos de entrada e saída válidos: imprima (“Qual é o seu nome? “).nome).br 35 .&idade). leia (“%f”. leia (“%i”. Para cada especificador utilizado. deve haver uma vírgula separando a frase da lista de variáveis e vírgulas separando as variáveis da lista. imprima (“Qual é o seu sexo? (F/M) “). leia(“%s”. deve existir somente quando um especificador de formato é colocado na frase entre aspas e.&altura). desde que a frase esteja entre aspas e as variáveis estejam devidamente listadas após a vírgula que separa a frase da lista de variáveis. • a frase entre aspas é copiada integralmente para a tela e os especificadores de formato são substituídos pelas variáveis da lista de variáveis. descritos no comando “leia”. %i.unisa.sexo). imprima (“O seu nome é: %s e você tem %i anos “.Algoritmos e Linguagem de Programação Atenção • A sintaxe do comando de saída é: imprima(“ frase e %letra ” [. imprima (“Você foi aprovado no curso com média= %f”. • quando existe uma variável. (dentro da frase. (faltou o especificador de formato da variável Media (%f) após o = na frase entre aspas) imprima (“Qual é o seu nome? “). (faltou o & antes do identificador idade. deve vir um formato para cada variável.idade). Exemplo: imprima (“Vc se chama %s.br .variável1. variável1. nome.variável3). variável1. compatível com o seu tipo básico). variável2. imprima (“frase ” . imprima (“frase %s %i %f ”. pois o tipo é numérico: %i) imprima (“A sua idade é %i “ idade). media).Elisamara de Oliveira imprima (“Qual é a sua idade? “). (entre a frase e a variável e entre as variáveis deve haver uma vírgula separando-as). idade.unisa. variável3). leia (“%s”. (faltou uma vírgula entre a frase entre aspas e a variável idade) imprima (“Você foi aprovado no curso com média= “. imprima (frase . variável2. (não pode haver & na leituras de variáveis do tipo caractere (%c e %s) ) Saiba mais Explicação adicional – Passo a passo do comando de impressão: imprima (frase variável1 variável2 variável3). tem %i anos e %f m de altura ”.&nome). leia (“%i”. variável3). altura). (a frase deve vir entre aspas). 36 Unisa | Educação a Distância | www.variável2. depois da condição finaliza o comando “se”) enquanto (contador < 5) .11 Comentários Os comentários não pertencem às instruções dos algoritmos. Exemplos de erro na separação de comandos: se (resposta != ‘s’).Algoritmos e Linguagem de Programação 2. { <comandos> } (o .15. Atenção • O separador de comandos é: .10 Separador de Comandos Todos os comandos do PortuCê são separados por ponto e vírgula. Saiba mais • Os comentários podem vir delimitados entre /* */ Ou podem ser comentários de linha // Exemplos de comentários: /* Este trecho calcula a media de notas */ desc = preco*0. // calcula desconto de 15% Unisa | Educação a Distância | www.unisa. { <comandos> } (o . depois da condição do comando “enquanto” coloca o programa em loop infinito!) 2. mas são úteis para que o programador explique o que está sendo feito.br 37 . unisa. principal ( ) { imprima (“Qual eh o seu nome? “). senão se (sexo == ‘m’ ou sexo == ‘M’) imprima (“%s voce eh do sexo masculino. • O <bloco de comandos> pode conter todos os comandos válidos em PortuCê. sexo.nome).br . Saiba mais O Bloco de Programa em PortuCê tem a forma: /* comentários */ <declaração de variáveis>. O bloco de programa em PortuCê pode ser visto a seguir.12 Bloco de Programa Bloco de programa é o nome que se dá à estrutura de um programa escrito numa determinada linguagem. embora comentários sejam opcionais. senão imprima (“Voce digitou um sexo invalido “). devem ser declaradas todas as variáveis que serão utilizadas no <bloco de comandos>. principal() { <bloco de comandos>.”). se (sexo == ‘f’ ou sexo == ‘F’) imprima (“%s voce eh do sexo feminino. Exemplos de programas escritos em PortuCê válidos: /* sexo. leia (“%c”.c: le o nome e o sexo de uma pessoa e imprime uma frase dizendo se é masculino. Nenhum comando pode ser usado fora dessa seção.sexo). • Após a declaração das variáveis. que delimita a seção em que os comandos podem ser utilizados.nome).nome). } 38 Unisa | Educação a Distância | www. • É importante notar que letras maiúsculas e minúsculas alteram os identificadores e as palavras reservadas do PortuCê. imprima (“Qual eh o seu sexo? (f/m) “). e estes devem estar contidos entre os delimitadores { e }. } • É desejável que todo algoritmo escrito em PortuCê comecer com um comentário dizendo o que o programa faz. leia(“%s”. • Em seguida. separados por ponto e vírgula.Elisamara de Oliveira 2. “. imprima(“Fim do programa. “. deve-se escrever a palavra principal( ). feminino ou invalido */ caractere nome[20]. br 39 .”). senão imprima (“O numero %i eh impar “.&anoatual). leia(“%f”.0) imprima (“Voce foi aprovado! “).”). se (nota >= 6. } /* parimpar. } /* idade. idade). idade = anoatual – anonasc. principal() { imprima (“Qual eh o ano atual? “).¬a). 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. imprima(“Fim do programa.unisa. principal() { imprima (“Digite sua nota final: “). } Unisa | Educação a Distância | www.&anonasc). leia(“%i”.&n). anonasc. leia (“%i”. n).c: le um numero e verifica se ele eh par ou impar */ inteiro n. n).Algoritmos e Linguagem de Programação /* nota. imprima (“Voce fez ou fara %i anos “.”).c: le a nota de um aluno e verifica se ele foi aprovado ou reprovado */ real nota. imprima(“Fim do programa. se (n % 2 == 0) imprima (“O numero %i eh par “. imprima(“ Fim do programa. senão imprima (“Voce foi reprovado. imprima (“Qual eh o seu ano de nascimento? “). leia(“%i”. principal() { imprima (“Digite um numero inteiro: “). “). senão imprima (“Voce foi reprovado.”).5.¬a). leia(“%f”.unisa.caractere). “. se (sexo == ‘F’) imprima (“%s voce eh do sexo feminino.5. “). se (nota >= 6. } (a variável caractere tem o mesmo nome da palavra reservada caractere) real nota. principal ( ) { imprima (“Qual eh o seu nome? “). nota = 7.br . imprima (“Qual eh o seu sexo? (F/M) “). } (há um comando de atribuição nota=7. principal() { imprima (“Digite sua nota final: “). imprima(“ Fim do programa.0) imprima (“Voce foi aprovado! “). “). caractere[20]. } (faltou a palavra principal( ) para dar início à seção de comandos) real nota..sexo). senão imprima (“Voce foi reprovado. na seção de declaração de variáveis: não pode!) 40 Unisa | Educação a Distância | www. senão imprima (“%s você eh do sexo masculino. leia(“%f”.Elisamara de Oliveira Exemplos de programas escritos em PortuCê INVÁLIDOS: caractere sexo.0) imprima (“Voce foi aprovado! “).”).caractere). “. imprima(“Fim do programa.caractere). leia (“%c”. se (nota >= 6.¬a).. { imprima (“Digite sua nota final: “).. leia(“%s”.. de forma simples e fácil! Unisa | Educação a Distância | www. idade = anoatual – anonasc. você já estará se preparando para aprender a própria linguagem C. imprima (“Qual eh o seu ano de nascimento? “).br 41 . imprima (“Voce fez ou fara %i anos “. basicamente. senão imprima (“O numero %i eh impar “. imprima(“Fim do programa. uma tradução da linguagem C para Português. n). se (n % 2 == 0) imprima (“O numero %i eh par “. aprendendo bem o PortuCê.&n). leia (“%i”. } (não foi declarada a variável n ou foi declarada errada (N maiúsculo é diferente de n minúsculo)) 2.”). idade).&anonasc). n).Algoritmos e Linguagem de Programação inteiro anoatual.unisa. anonasc.&anoatual). leia(“%i”. principal() imprima (“Qual eh o ano atual? “). Assim. } (faltou o delimitador { para iniciar a seção de comandos do programa) inteiro N. principal() { imprima (“Digite um numero inteiro: “). este capítulo foi um convite a aprender PortuCê.”).13 Resumo do Capítulo Caro(a) aluno(a). imprima(“ Fim do programa. leia(“%i”. idade. que é a língua que os algoritmos (que são as bases dos programas de computador) falam! O PortuCê é. 62.. Escreva comandos para pedir. não é mesmo? 5. Declare as variáveis utilizadas nos exercícios de 1 a 4. Unisa | Educação a Distância | www.75. Escreva um comando que leia um número inteiro.br 43 . a forma tradicional de se apresentar uma altura é com 2 dígitos apenas.1 Declaração de Variáveis – Comandos “leia” e “imprima” 1.2f O que isso significa? Que nós queremos apresentar a altura com apenas 2 dígitos na parte decimal! Afinal. Escreva comandos para pedir e ler um número inteiro. 2.88 etc. como 1. 1. ler e imprimir um número inteiro. Repita o exercício 3 para um número real. 1.unisa. Saiba mais Ao invés de usar %f para apresentar a altura.3 CONSTRUÇÃO DE ALGORITMOS EM PORTUCÊ: PRATICANDO OS COMANDOS E FAZENDO CÁLCULOS 3. 4. usamos %. 3. 2 Comando Condicional “se” 7. Escreva comandos para pedir. 8. Escreva um comando para verificar se a idade lida no exercício 6 corresponde a um adolescente (entre 13 e 17 anos). Escreva um comando para verificar se a idade lida no exercício 6 corresponde a um adulto (maior que 17 anos). Se for. 10. imprima uma frase dizendo que é uma criança.br . Se for verdadeiro. Escreva um comando para verificar se a idade lida no exercício 6 corresponde a uma criança (menor que 13 anos). ler e imprimir o nome e a idade de uma pessoa. 9. 44 Unisa | Educação a Distância | www. Escreva um único comando capaz de classificar uma pessoa pela faixa etária e ainda verificar se a idade é válida. Se for. imprimir uma frase dizendo que é um adulto.Elisamara de Oliveira 6. imprima uma frase dizendo que é um adolescente. 3.unisa. Escreva um algoritmo que leia o nome e a idade de uma pessoa e imprima uma frase dizendo se a pessoa é uma criança.unisa.Algoritmos e Linguagem de Programação 3. construa o Bloco de Programa em PortuCê. um adulto ou se a idade é inválida. 12. ou seja.3 Bloco de Programa 11.br 45 . Transforme o exercício 6 num algoritmo. Unisa | Educação a Distância | www. um adolescente. Com certeza. Observe que soma é a variável na qual o resultado da adição de n1 com n2 será armazenado. O resultado da divisão é um número real. Mas se quisermos calcular n1 elevado a 1000 ou n1 elevado a um número qualquer. uma mensagem é impressa para comunicar ao usuário o motivo pelo qual o cálculo não foi efetuado. Escreva comandos para subtrair e multiplicar dois números: n1 e n2.” é válido do ponto de vista sintático. é muito mais fácil do que você pensava. Escreva um comando para calcular o quadrado de um número inteiro n1 e também n1 elevado a 3. não é? São pequenos truques da programação. pois não existe divisão por zero! O comando “divisao = n1 / n2.unisa. 15. 46 Unisa | Educação a Distância | www. Antes de dividir um número n1 (numerador) por um número n2 (denominador) é necessário que verifiquemos se o denominador é diferente de zero. Escreva um comando para dividir dois números: n1 por n2. mas em programação temos que pensar nos erros que porventura possam ocorrer quando da execução dos comandos. caso contrário. Para evitarmos a divisão eventual por zero. Somente se n2 for diferente de zero é que a divisão será calculada. teremos que escrever um pequeno trecho de algoritmo. usamos o comando “se”. São usados apenas o comando de atribuição “=“ e o operador “+”. 14.Elisamara de Oliveira 3. 16. Escreva um comando para somar dois números: n1 e n2.br . O raciocínio para subtrair e multiplicar dois números é o mesmo usado na adição.4 Operações Básicas com Números 13. Depois eu mostro como fazer. haverá uma conversão automática de tipos. Observe que sqrt( ) é um operador aritmético cuja sintaxe é diferente dos outros vistos nos exercícios anteriores. Esse tipo de operador. também é necessário que o denominador seja diferente de zero. com o truncamento da parte fracionária do resultado. Nesse caso. Escreva comandos para fornecer o quociente e o resto da divisão inteira de n1 por n2. por exemplo.br 47 . quais seriam os valores de quociente e resto? (7 dividido por 3 dá 2 (quociente) e sobra 1 (resto).unisa. não existe um operador específico para o quociente da divisão inteira. Novamente. não é?) Saiba mais Qual a diferença entre divisão real e divisão inteira? 3. para evitarmos um erro tentando calcular a raiz de um número negativo. na verdade. usamos o comando “se”.5 este é o resultado da divisão real 7 / 2 = 3 (quociente da divisão inteira) 7 % 2 = 1 (resto da divisão inteira) Unisa | Educação a Distância | www. como n1 e n2 são inteiros. o que nos fornece o quociente da divisão inteira. Escreva um comando para calcular a raiz quadrada de um número n1. usa-se o “/” (que é da divisão real). 18. é uma função que recebe n1 como parâmetro e devolve a sua raiz quadrada calculada.Algoritmos e Linguagem de Programação 17. mas. Isso é um trunfo do PortuCê: nunca se esqueça disso! Se n1 for 7 e n2 for 3. é importante você notar que ambos os números (n1 e n2) têm que ser inteiros para que os operadores “/” (quociente da divisão) e “%” (resto da divisão inteira) possam ser utilizados! Como você pode notar. No caso da divisão inteira de n1 (numerador) por um número n2 (denominador). Existem muitas outras funções e elas serão apresentadas na medida em que se fizer necessária a sua utilização. se pago à vista. Então. com a conversão automática de tipos. Portanto. certo? 2 é a dezena de 29 e coincide com o quociente da divisão inteira. por exemplo. pois 10/100 pode ser zero. Suponha que um produto custe um determinado preço. o cliente ganha 5% de desconto. Escreva comandos para calcular o valor do desconto e o valor final do produto.Elisamara de Oliveira 19. Bem. use sempre 0. deseja-se obter o dígito 2 (dezena) separado do dígito 9 (unidade). esta é uma boa pergunta para o fórum! 48 Unisa | Educação a Distância | www. Na verdade. 29. A variável “porc” deve ser do tipo real. “%” é o resto da divisão inteira. Escreva comandos para separar os dígitos de um número inteiro menor que 100 em dezena e unidade. 9 é a unidade de 29 e coincide com o resto da divisão inteira por 10! No caso de n1 ser igual a 3. Em primeiro lugar.10. este é um problema muito comum na programação e muito fácil de ser resolvido também! Basta usar os operadores “/” e “%” com números inteiros. 0 é a dezena (“/”) e 3 é a unidade (“%”).10 no cálculo de 10%. Vamos entender. no caso de um número de um só dígito. o que se quer: dado um número menor que 100. Escreva um comando para calcular 10% de um número. 3. 20. por exemplo.br .unisa. mas. ficaria assim: 3 dividido por 10 dá 0 e sobra 3. Vamos fazer um pequeno teste: 29 dividido por 10 dá 2 e sobra 9. Nesse caso. o cálculo da porcentagem tem que ser feito pela operação equivalente: 10% = 10/100 = 0. Um bom teste aqui seria você responder: como poderíamos separar os 3 dígitos de números entre 100 e 999? Se não conseguir resolver. vamos esclarecer que NÃO EXISTE O OPERADOR “porcentagem”. Não recomendo o uso de 10/100. o resultado seria 0 (dezena) e 3 (unidade). 21. primeiramente. se deseja obter os 2 primeiros dígitos. 3. 6. Funciona! Outro teste: n1 igual a 10231. Como queremos apenas o quociente da divisão inteira. mas pense: quando se divide um número por 1000. representaria 2000). Observe que 0 pode ser considerado um número positivo e todo número menor que 0 é negativo.. Mas e se o aluno entrou em 2000 ou 2009? O resultado teria que ser ano de entrada = 0. 9. 00211 dividido por 1000 dá ZERO (que é o quociente) e sobra 211. Vamos fazer. não? 3.5 Operações com Operadores Lógicos e Relacionais 23. 2. no caso. o resultado será “anoentrada = 0” (que. Pode parecer estranho. Vamos entender o que se quer: dado um número de 5 dígitos. E como o cálculo é simples. e um número ímpar é aquele que. 5. 99 (que indicaria que o aluno entrou em 1999 na universidade). os testes. dividido por 2. os 2 primeiros indicam o ano em que o aluno entrou na universidade. certo? 10 é o quociente.. tem resto diferente de zero: 1. no caso. 4. dividido por 2.. tem resto zero: 0. Um número par é aquele que. o que resulta em “anoentrada= 10” (que seria 2010)! Funciona mesmo! Faça outros testes e verifique que dá certo. os alunos têm um número de 5 dígitos que os identificam. 7.unisa. 8. agora. 24. Unisa | Educação a Distância | www. Escreva um comando para verificar se um número é par ou ímpar.br 49 . por exemplo. 10231 dividido por 1000 dá 10 e sobra 231.Algoritmos e Linguagem de Programação 22. 10. numa certa universidade. o menor resto é zero e o maior resto pode ser 999. Escreva um comando para verificar se um número é positivo ou negativo.. Desses 5 dígitos. Escreva comandos para separar os 2 primeiros dígitos de um número inteiro de 5 dígitos que representa a identificação do aluno. Vejamos: n1 é 00211.. 99211. Suponha que. ter menos de 21 anos e ter. O mesmo acontece com a idade. “1=primeiro grau”. o número está dentro dos limites. Escreva um comando para verificar se um candidato pode ser ou não aprovado para o time de basquete. Escreva um comando para verificar se um número é maior que 100. em que os “anos” foram (e devem) ser omitidos. o primeiro grau completo. que usamos uma expressão do tipo “10 ≤ n1 ≤ 100”! 27.br . As exigências são: ter 1. ao se fazer a comparação da altura. Não é como na Matemática. são necessárias duas comparações: uma para o limite inferior e outra para o limite superior. e essas comparações têm que estar ligadas pelo conectivo lógico “e”. 50 Unisa | Educação a Distância | www. Observe que. quer dizer. Para se verificar se um número está entre dois limites. Escreva um comando para verificar se um número está entre 10 e 100. “3=superior”. somente quando as duas comparações forem verdadeiras.85 m”. 26. O grau de instrução é definido como: “0= sem instrução”. pelo menos. estaria errada uma comparação do tipo “altura >= 1. “2=segundo grau”.unisa.85 m de altura ou mais. Suponha que certo clube esportivo quer selecionar atletas para o time de basquete. não se faz referência à unidade de medida “metros”.Elisamara de Oliveira 25. quer dizer. As exigências passaram a ser: ter 1. consultando os exemplos anteriores para ajudá-lo(a).2 é maior ou igual a 7. Unisa | Educação a Distância | www. Escreva um comando que calcule a média das duas notas lidas no exercício 3. Escreva um comando para verificar se um candidato ou candidata pode ser ou não aprovado(a) para o time de basquete. formar um time masculino (sexo == ‘m’) e outro feminino (sexo == ‘f’) e tenha mudado um pouco seus critérios.Algoritmos e Linguagem de Programação 28. Escreva um comando que verifique se a média calculada no exercício 3. imprima uma frase dizendo que o aluno foi aprovado.75 ou mais para as mulheres e ter menos de 21 anos.7 Atividades Propostas Agora é hora de você praticar um pouco sozinho(a)! A minha forte recomendação é que você faça os exercícios sozinho(a). que continuaram a ser ligados pelo conectivo “e” na comparação de idade! Pense por que é assim. 3.1.6 Resumo do Capítulo Caro(a) aluno(a). caso contrário.1. este capítulo foi uma excelente oportunidade para exercitarmos a linguagem de programação. Somente depois da sua tentativa. Boa sorte! 1. 3.br 51 . Suponha que o clube esportivo deseje.1.85m de altura ou mais para os homens e 1. se for. Observe que surgiu o conectivo “ou” ligando as comparações de altura para os sexos diferentes.0. agora. Escreva um algoritmo que leia o nome e as duas notas de um aluno. calcule a média das notas e imprima uma frase dizendo se ele foi aprovado (média maior ou igual a 7. 4. é que você deve conferir as respostas. 3. 2.0) ou reprovado. Escreva um algoritmo que leia e imprima o nome e as duas notas de um aluno.unisa. imprima uma frase dizendo que foi reprovado. Elisamara de Oliveira 5. Considere o trecho de algoritmo em PortuCê: se (B1) C1; senão se (B2) se (B3) C2; senão { C3; C4; } C5; Em PortuCê, não existe uma variável do tipo “lógico” a qual se possa atribuir um valor “verdadeiro” ou “falso”. No entanto, o PortuCê considera o valor 0 (zero) como sendo falso e qualquer outro valor diferente de zero como sendo verdadeiro. Nos exercícios que se seguem, considere que os valores de B1, B2 e B3 representam valores “verdadeiros” (diferentes de zero) ou “falsos” (iguais a zero) e responda à pergunta: “quais comandos serão 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 “não” de várias pessoas e seu sexo (F=feminino, M=masculino), escreva comandos em PortuCê para calcular: a) o número de mulheres que responderam sim; b) o número de homens que responderam não; c) o número de mulheres e homens que responderam não. 52 Unisa | Educação a Distância | www.unisa.br Algoritmos e Linguagem de Programação 7. Observe o algoritmo a seguir. Qual o valor de L após a execução 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 não(A e B)) L = 0; senão L = 1; } 8. Escreva trechos de algoritmo em PortuCê que ajudem o Instituto Brasileiro de Geografia e Estatística (IBGE) a fazer o censo populacional de uma certa cidade. Sabendo-se que os seguintes dados foram pedidos aos cidadãos: SEXO (‘H’= homem, ‘M’= mulher) e RENDA (número de salários-mínimos – sm), os trechos de algoritmo devem fornecer: 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 verificar 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 frase dizendo que ela foi aprovada; caso contrário, que não foi aprovada. 10. Modifique o exercício anterior para que uma frase seja impressa após a verificação de cada quesito, dizendo se a candidata foi aprovada ou não em cada um deles e uma frase final dizendo se foi aprovada ou não como modelo. Unisa | Educação a Distância | www.unisa.br 53 4 METODOLOGIA PARA A CONSTRUÇÃO DE ALGORITMOS Neste capítulo, caro(a) aluno(a), você aprenderá uma metodologia que facilitará o processo de desenvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. A metodologia é composta de uma sequência de passos, cujo principal objetivo é ajudá-lo(la) a resolver problemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como ficará bem claro logo adiante, resolvendo cada parte do problema por vez, consegue-se chegar a soluções completas e complexas a partir de soluções simples, que já foram, muitas vezes, encontradas para diversos outros problemas semelhantes. Você conhecerá os passos da metodologia e vários exemplos práticos serão fornecidos de maneira a familiarizá-lo(la) com o método. É importante ressaltar que a metodologia é um processo dinâmico. Você pode estar num passo mais adiante e identificar uma variável auxiliar e voltar aos passos anteriores e alterá-los, por exemplo. Portanto, não se detenha aos detalhes, pelo contrário, sinta-se livre para criar suas soluções. O método pretende ajudá-lo(la) e não engessá-lo(LA)! Vamos em frente! 4.1 Os Passos da Metodologia Passo 1: Ler e entender o problema É importante ler e reler, pelo menos 3 vezes, o problema até que ele seja completamente compreendido. Não adianta querer buscar a solução de um problema que não esteja suficientemente esclarecido! Passo 2: Listar todos os dados de entrada do problema Um dado de entrada é aquele que será fornecido pelo usuário, ou seja, o dado que será lido pelo programa. Passo 3: Listar todos os dados de saída do problema Um dado de saída é algo que será produzido ou calculado pelo programa; tudo aquilo que deve ser apenas impresso não deve ser considerado um dado de saída. Unisa | Educação a Distância | www.unisa.br 55 Passo 5: Declarar todas as variáveis do programa Cada dado de entrada. As variáveis do programa deverão ser uma para cada dado de entrada. para calcular a média. que possam exprimir a função da variável. cada uma das saídas deve ser analisada individualmente e sua solução encontrada separadamente. uma variável que receberá a idade de uma pessoa não deveria se chamar “x”. Por exemplo.unisa. É extremamente importante que o programador escolha nomes de variáveis significativos. basta analisar cada uma das saídas e verificar se. nem mesmo “i” seria bom.Elisamara de Oliveira Passo 4: Listar todas as variáveis auxiliares do programa Uma variável auxiliar é identificada como aquela que é necessária para o cálculo de alguma variável de saída e não é variável de entrada. apesar de que nem todas as variáveis precisam ter valores iniciais: toda variável de entrada é inicializada com o comando “leia”. para identificar as variáveis auxiliares. num problema em que vários números serão lidos e sua média deve ser calculada. a soma e a quantidade de números são variáveis auxiliares do programa. dadas as entradas. A montagem do algoritmo/programa pode seguir um esquema básico. todo produto deve ser inicializado com 1 (um). uma para cada dado de saída e uma para cada variável auxiliar. Passo 7: Escrever o código para calcular cada uma das saídas do programa Os principais problemas a serem solucionados. neste passo. Portanto. há necessidade de mais alguma variável para facilitar o seu cálculo.br . o esquema a seguir 56 Unisa | Educação a Distância | www. só devem ser impressos os resultados pedidos na especificação do problema. Passo 9: Montar o algoritmo unindo os resultados dos passos 5 a 8 Os passos 5 a 8 têm a solução do problema. é necessário somar os números e dividir a soma pela quantidade de números lidos. mas como. o ideal seria “idade”. todo contador e todo somador devem ser inicializados com 0 ( zero). Portanto. o número é uma variável de entrada e a média é uma variável de saída. resumem-se no cálculo das saídas do programa. Assim. cada dado de saída e cada variável auxiliar “geram” uma variável. Passo 8: Imprimir os resultados do programa Aqui. Por exemplo. na maior parte das vezes. Passo 6: Inicializar as variáveis do programa Há um conjunto de pequenas regras que pode nos ajudar a encontrar os valores iniciais de cada variável do programa. mas vai depender muito da lógica de cada problema. a sua complexidade. diminuindo. entre outras situações possíveis. deixando outros para que você. Cada problema deve. assim. caro(a) aluno(a). muitas vezes. resolvendo cada parte do problema por vez. encontradas para diversos outros problemas semelhantes. vamos lá! 4. ser analisado logicamente para chegar ao seu algoritmo. num programa que só leia números positivos. consegue-se chegar a soluções completas e complexas a partir de soluções simples que já foram.Algoritmos e Linguagem de Programação serve apenas de orientação. Atenção /* Nome do Programa e o que ele faz */ <passo 5 – declarar todas as variáveis do programa> principal() { <passo 6 – inicializar as variáveis do programa > <passo 7 – calcular cada uma das saídas do programa> <passo 8 – imprimir os resultados do programa> imprima(“Fim do programa”). Você conhecerá os passos da metodologia e vários exemplos práticos serão fornecidos de maneira a familiarizá-lo com o método. Por exemplo. cujo principal objetivo é ajudá-lo a resolver problemas dividindo-os por partes. } Passo 10: Fazer o “teste de mesa” do programa a partir de diferentes valores iniciais O “teste de mesa” consiste na execução de todas as instruções do programa a partir de conjuntos de valores iniciais. no entanto. você aprendeu uma metodologia que facilitará o processo de desenvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. devem ser fornecidos números negativos e zero.unisa. utilizando soluções semelhantes. 4. Unisa | Educação a Distância | www. resolva-os sozinho(a). A metodologia é composta de uma sequência de passos.3 Resumo do Capítulo Neste capítulo. deve ser testada a condição em que o valor do flag seja fornecido como dado inicial.br 57 . Como ficará bem claro logo adiante. Os valores iniciais devem ser escolhidos de maneira que as “condições de contorno” do problema sejam verificadas.2 Solução de Exercícios utilizando a Metodologia A estratégia que utilizaremos nesta seção é propor uma lista de exercícios e resolver alguns deles usando a metodologia. num programa que trabalhe com flags. ok? Então. : A = 3. 2. o alcance de um projétil.Elisamara de Oliveira 4.8 m/s2. o valor do desconto e o preço final com o desconto. lendo os valores de entrada s. Escreva um algoritmo em PortuCê que calcule e imprima o valor em reais correspondente aos dólares que um turista possui no cofre do hotel. Escreva um algoritmo em PortuCê para calcular e imprimir a área de uma esfera. dados a velocidade inicial v0 e o ângulo θ entre o cano do canhão e o solo. O raio da esfera será fornecido pelo usuário. 7.14*R2. Escreva um algoritmo em PortuCê para calcular o valor do desconto. e a. Escreva um algoritmo em PortuCê que leia um número e informe se ele é par ou ímpar.br .4 Atividades Propostas 1. 58 Unisa | Educação a Distância | www. Escreva um algoritmo em PortuCê que calcule e imprima a quantidade de tijolos iguais necessária para construir uma determinada parede. O programa deve solicitar os seguintes dados: quantidade de dólares guardada no cofre e cotação do dólar naquele dia. Escreva um algoritmo em PortuCê para calcular e imprimir a área e o perímetro de uma sala retangular.unisa. que é o semiperímetro. 4. Escreva um algoritmo em PortuCê que calcule S. que são os lados do triângulo: 9. b e c. São dados de entrada do programa: dimensões do tijolo (comprimento e largura) e dimensões da parede a ser construída (comprimento e largura). 5. A fórmula a ser utilizada é: 8. 3. Apresentar o preço do produto. sendo que o preço do produto é fornecido pelo usuário e o desconto é de 5%. sendo que os comprimentos das paredes (comprimento e largura) são fornecidos pelo usuário. Escreva um algoritmo em PortuCê que calcule a área A de um triângulo pela fórmula de Herão. Obs. O valor de g corresponde à gravidade que é de 9. Escreva um algoritmo em PortuCê que leia 2 números e diga qual deles é o maior. 6. O programa deve trocar os valores entre as variáveis (ou seja. o reajuste deve ser de 10%. 16. hora e minuto de saída. Caso a temperatura esteja entre 100 e 200 °C. rejeitar valores inválidos) e capacidade do tanque em litros.00. Caso a temperatura esteja abaixo de 100 °C. 13. ao término do programa. Caso a temperatura esteja acima de 200 °C e inferior a 500 °C. apresente a mensagem: “Você está gastando muito”. Caso contrário. apresentar a mensagem de que a temperatura está muito alta. sabendo-se o preço original do produto e o preço que foi cobrado por ele depois do desconto serão fornecidos pelo usuário. Escreva um algoritmo em PortuCê que receba dois valores inteiros nas variáveis A e B. O usuário fornecerá os seguintes dados: tipo de carro (as opções como tipo de carro são a letra “G” – gasolina ou a letra “A” – álcool. Se o salário for maior ou igual a 500. 12. Escreva um algoritmo em PortuCê para calcular e imprimir qual foi a porcentagem de desconto dada em um determinado produto. caso o valor seja maior que R$ 50. Escreva um algoritmo em PortuCê que leia o valor de uma conta de luz e. exiba a mensagem: “Seu gasto foi normal. Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor que R$ 500. Escreva um algoritmo em PortuCê que receba a leitura do termômetro. apresentar a mensagem de que a temperatura está baixa. Sabe-se que esse estacionamento cobra R$ 10. apresentar a mensagem de que a temperatura está muito baixa.unisa. Escreva um algoritmo em PortuCê para calcular e imprimir o valor a ser pago pelo período de estacionamento do automóvel. Apresentar as duas variáveis no final. Unisa | Educação a Distância | www.Algoritmos e Linguagem de Programação 10.60 e o preço do álcool é R$ 1.00. parabéns”. o reajuste deve ser de 5%. calcule e imprima o valor do novo salário de um funcionário. 14.00.00 por hora ou fração.br 59 . 15. mas menor ou igual a R$ 1000.00. Escreva um algoritmo em PortuCê que determine quanto será gasto para encher o tanque de um carro. 11. Escreva um algoritmo em PortuCê que leia o valor do salário atual. sabendo-se que o preço da gasolina é R$ 2. apresentar a mensagem de que a temperatura está normal. Caso contrário. a variável A deve ter o valor inicial de B e vice-versa).80. Caso o salário seja maior que R$ 1000. O usuário entra com os seguintes dados: hora e minuto de entrada. a menos que algum caractere maiúsculo ou minúsculo as diferencie. • O primeiro caractere tem que ser _ ou uma letra. char e void) e quatro modificadores de tipos (long.1 como atividades extraclasse. neste curso.br 61 . mas com maior capacidade de armazenamento. • Para se declarar uma variável. usaremos apenas 3 tipos básicos: • int. • Se mais de uma variável for do mesmo tipo básico. • char. • Não pode haver duas variáveis com mesmo nome. Isso o(a) capacitará a realizar as primeiras aulas práticas em laboratório. o que amplia muito os tipos de variáveis. começar a programar em C será muito fácil. double. • Letras minúsculas e letras maiúsculas são diferentes. escreve-se o nome de seu tipo. mesmo que tenham tipos básicos diferentes. • Na linguagem C. signed e unsigned).unisa. O interessante em se utilizar o PortuCê como pseudolinguagem é que ele segue quase totalmente as mesmas regras da linguagem C. • O tipo de dados “double (%Lf )” corresponde ao float. em seguida o nome do seu identificador e ponto e vírgula para finalizar a declaração. • Não pode haver dois identificadores iguais. • Os identificadores não podem ser acentuados. • Não pode haver espaço em branco num identificador. você verá! 5. os outros caracteres podem ser: • letras: A-Z. Recomenda-se que você prepare em seu computador um ambiente adequado à programação em C e comece a trabalhar sozinho(a). • O caractere “ç” não pode ser usado num identificador. Unisa | Educação a Distância | www. Assim. char). • dígitos: 0-9. • Pode-se inicializar uma variável na sua declaração atribuindo-se a ela um valor inicial compatível com seu tipo. • sublinhado: _ . a-z. poderá começar a traduzir seus primeiros algoritmos para a linguagem de programação C. caro(a) aluno(a).1 Tipos Básicos e Declaração de Variáveis em C Saiba mais • Um identificador em C é formado por caracteres alfanuméricos. fazendo os programas da lista 4. mas. elas podem ser declaradas juntas. else. short. if. salta-se um espaço em branco. você. int. • Um identificador não pode ter o mesmo nome das palavras reservadas do C (como main. float. apenas separadas por vírgulas. há 5 tipos básicos (int.5 A LINGUAGEM DE PROGRAMAÇÃO C Neste capítulo. • float. • Toda variável precisa ser declarada antes de ser utilizada. br .(subtração). int idade. char nome_de_familia[30]=“Menezes”. 62 Unisa | Educação a Distância | www. • abs( ) (valor absoluto). • ++ ( adiciona 1). n2. • <= (menor ou igual a). • -. Aritméticos.unisa. letra. • >= (maior ou igual a). • != (diferente de). • || (operador ou – disjunção). Total_dos_Salarios. • Alguns operadores aritméticos mais avançados são: • % (resto da divisão inteira). • sqrt( ) (raiz quadrada). 5. • Os operadores lógicos são: • && (operador e – conjunção). zero=’0’. • / (quociente da divisão real). • Há os operadores de atribuição compostos: • += • -= • *= • /= • Os operadores aritméticos básicos são: • + (adição).2 Operadores de Atribuição. • . float soma=0. • * (multiplicação). float raiz1. • == (igual a). • < (menor que). • / (quociente da divisão inteira).(subtrai 1). • ! (operador não – negação). • Os operadores relacionais são: • > (maior que). cont=0. int n1. Relacionais e Lógicos (Binários) em C Atenção • O operador de atribuição é: = .Elisamara de Oliveira Exemplo de declaração de variáveis válida: char nome[20]. ou seja. Avalia como 1 (verdadeiro) se pelo menos uma expressão for verdadeira. avalia como 0 (falso). o resultado será: • falso se o valor for 0. caso contrário.0 && faltas <= 18) !(numero % 2 == 0) (resposta == ’S’) (resposta == ‘S’ || resposta == (resposta != ‘S’ && resposta != (sexo == ‘F’ && altura <= 1. mas em C pode-se fazer atribuição num comando if!) Unisa | Educação a Distância | www. Saiba mais Na linguagem C.50) (cont=0 && soma !=0) escolaridade >= 2) || foidispensado == 1) ’s’) ‘s’) (muito cuidado com este tipo de expressão: cont=0 é uma atribuição e não uma comparação. caso contrário. Expressões conectadas por operadores lógicos são avaliadas da esquerda para a direita. • verdadeiro para qualquer outro valor (1 ou qualquer número positivo ou negativo ou qualquer expressão válida da linguagem). Avalia como 1 (verdadeiro) se a expressão for falsa e 0 (falso) se a expressão for verdadeira. avalia como 0 (falso).br 63 . troca verdadeiro por falso e vice-versa. tão logo a veracidade ou falsidade do resultado for reconhecida.unisa. Exemplos: (5 > 2) && (3 != 2) (3 >= 2) || (4 == 2) (3 <= 2) || (4==2) ! (4==2) ! (4>3) /* avalia como 1 (verdadeiro) */ /* avalia como 1 (verdadeiro) */ /* avalia como 0 (falso) */ /* avalia como 1 (verdadeiro) */ /* avalia como 0 (falso) */ Exemplos de expressões lógicas e relacionais válidas: if if if if if if if if if (altura > 1.Algoritmos e Linguagem de Programação Funcionamento dos operadores lógicos em C Operador lógico && (e) || (ou) ! (não) Ação Avalia como 1 (verdadeiro) se ambas as expressões forem verdadeiras.80 && idade < 21 && (idade >= 13 && idade <=20) ((media >= 7. em qualquer expressão que se espere um valor lógico. // a função sqrt() está na biblioteca <math.55. // equivale a contador = contador + 2. salario = ((totaldehoras*32.00) .20. impostoderenda = salario * 0. valoremdolares = salario / 2. // equivale a Soma = Soma + Valor. quociente = 10 / 3. --valor. Soma += Valor.unisa.Elisamara de Oliveira Exemplos de expressões lógicas e relacionais INVÁLIDAS: if (altura > 1.descontoinss. // concatenação de strings contador = contador +1. // equivale a valor = valor – 5.h> 64 Unisa | Educação a Distância | www. x1 = -b + sqrt(teta) / (2*A). ++contador. ok = (achou=1) && (resposta=’s’). envolvem sempre 2 operandos.50)+102. contador += 2.”da silva”).80 && || idade < 21) (os operadores “&&” e “||” são binários. portanto não podem ser utilizados juntos) if (idade >=13 && <= 20) (o operando idade deveria ser repetido para se obter o resultado lógico da comparação) if (resposta ! = ‘S’) (o símbolo do operador “diferente” está errado: não pode haver espaço em branco entre o “!” e o “=“) if (altura < = 1.50) (o símbolo do operador “menor que” está errado: não pode haver espaço em branco entre o “<“ e o “=“) resposta == ’S’ (faltaram parênteses delimitando a expressão) Exemplos de expressões aritméticas válidas: resto = 10 % 3.br . strcat (nome. valor -= 5. As funções estão na biblioteca <string. • Os delimitadores de { e } são obrigatórios quando existe mais de um comando no <bloco de comandos 1> ou mais de um comando no <bloco de comandos 2>. o separador é sempre o ponto) valoremdolares = salario / 2. Nesse caso (não existe a cláusula “else”). • A cláusula “else” pode não existir num comando “if”. (o operador % só pode envolver números inteiros) (os operadores * e + são diádicos. • se a <condição> for VERDADEIRA.br 65 . o <bloco de comandos 2> é executado e o comando condicional é finalizado. nenhum comando é executado e o comando “if” é finalizado. salario = totaldehoras *+ 32. apenas faz parte do comando “if”. os delimitadores ficam opcionais.unisa. Nome = Nome + “da Silva”.50.3 Comando Condicional em C (if) Atenção • A sintaxe do comando condicional é: if (condição) { <bloco de comandos 1> } else { <bloco de comandos 2> } • A semântica (como funciona) do comando condicional “if” é: • a <condição> é avaliada como VERDADEIRA (valor diferente de zero) ou FALSA (valor igual a zero). portanto não podem ser utilizados juntos) (não existe vírgula decimal.55. 5. quando a <condição> é avaliada como FALSA. Unisa | Educação a Distância | www.h>) (o operador * é diádico.Algoritmos e Linguagem de Programação Exemplos de expressões aritméticas INVÁLIDAS: resto = 10. • se a <condição> for FALSA. não é comando. (em variáveis do tipo string a manipulação é feita através de funções. envolvem sempre dois operadores. Quando existir apenas um comando. o <bloco de comandos 1> é executado e o comando condicional é finalizado. • “else” é cláusula do comando “if”.0 % 3. ou seja. tem que envolver dois operandos) Contador = *1. Elisamara de Oliveira Exemplos de comandos condicionais válidos: if (media >= 7.0) aprovado = 1; if (media >= 7.0) { aprovado = 1; } if (media >= 7.0) { aprovado = 1; ++contadoraprovados; } if (media >= 7.0) { aprovado = 1; ++contadoraprovados; } else aprovado = 0; if (media >= 7.0) aprovado = 1; else aprovado = 0; if (media >= 7.0 && faltas <= 9) { aprovado = 1; ++contadoraprovados; } else { aprovado = 0; ++contadorreprovados; } if (numero % 2 == 0) ++contapar; else ++contaimpar; if (numero > 0) printf(“\nNumero else if (numero printf(“\nNumero else printf(“\nNumero positivo”); < 0) negativo”); zero”); 66 Unisa | Educação a Distância | www.unisa.br Algoritmos e Linguagem de Programação Exemplos de comandos condicionais INVÁLIDOS: if media >= 7.0 aprovado = 1; (faltou colocar parênteses na condição) if (media >= 7.0) { aprovado = 1; ++contadoraprovados; (faltou colocar o delimitador de fim { no final do comando ) if (media >= 7.0) aprovado = 1 else aprovado = 0; (faltou ; depois do comando aprovado = 1) if media >= 7.0 aprovado = 1; ++contadoraprovados; else { aprovado = 0; ++contadorreprovados; } (faltou colocar parênteses na condição e delimitadores de início e fim { } antes do else) if (numero % 2 == 0); ++contapar; else ++contaimpar; (não pode-se colocar ; depois da condição do comando if, pois o ; finaliza o comando) Unisa | Educação a Distância | www.unisa.br 67 Elisamara de Oliveira 5.4 Comando de Seleção Múltipla em C (switch) Atenção • Comando de seleção múltipla que testa sucessivamente o valor de uma expressão contra uma lista de valores do tipo inteiro ou de caracteres. Quando o valor coincide, os comandos associados àquele valor são executados. A sintaxe do comando de seleção múltipla switch é: switch (expressão) { case valor1: <comandos_1>; break; case valor2: <comandos_2>; break; ... case valorn: <comandos_n>; break; default: comandos_default; } • A expressão deve resultar num valor inteiro do tipo long, int ou char. Compara-se esse resultado com o valor1 até valorn: • se for encontrada alguma equivalência, o programa passa a executar os comandos a partir deste ponto, até encontrar uma instrução break; • se nenhuma equivalência for encontrada, os comandos relativos a default são executados; • caso não haja a opção default, nenhum comando é executado; • caso a instrução break não seja encontrada, todos os comandos vão sendo executados até se chegar ao final do comando “switch”. Exemplos de comandos de seleção múltipla válidos: switch (sexo) { case ‘f’: case ‘F’: printf(“\nVoce eh do sexo feminino”); break; case ‘m’: case ‘M’: printf(“\nVoce eh do sexo masculino”); break; default: printf(“\nValor de sexo invalido.”); } 68 Unisa | Educação a Distância | www.unisa.br break. case 6: printf(“\n6-Sexta-feira . }// switch Unisa | Educação a Distância | www.Wednesday”). break.Monday”). switch (letra) // toupper transforma o caractere case ‘A’: case ‘E’: case ‘I’: case ‘O’: case ‘U’: printf(“\n Voce digitou uma vogal”). scanf(“%i”. case 4: printf(“\n4-Quarta-feira . case 3: printf(“\n3-Terca-feira . default: printf(“\nDia da semana invalido. case 7: printf(“\n7-Sabado . break. switch(dia) { case 1: printf(“\n1-Domingo .Friday”). break. break. break. } printf(“\nDigite o numero do dia da semana (1-7): “). break.Sunday”).unisa.”). default: printf(“\n Voce digitou algo diferente de uma vogal”).Algoritmos e Linguagem de Programação para maiúsculo { letra = toupper(letra).Thursday”).Tuesday”). case 5: printf(“\n5-Quinta-feira . case 2: printf(“\n2-Segunda-feira .Saturday”).&dia). break.br 69 . case 2: printf(“\n Voce votou no candidato 2”).&temp).5: printf(“\nVoce não tem febre.”).5: printf(“\nVoce esta levemente febril. break.unisa. case ‘m’: case ‘M’: printf(“\nVoce eh do sexo masculino”). case 37. ++cont2. break. Procure um medico”). ++cont1. else printf(“\nEsta temperatura esta fora dos valores normais”).Elisamara de Oliveira switch (voto) { case 1: printf(“\n Voce votou no candidato 1”).5) printf(“\nVoce esta febril. break.0: case 37. Temperatura normal. default: printf(“\n Voto invalido”). então todos os “printf” serão executados) 70 Unisa | Educação a Distância | www. break.br . default: printf(“\nSexo invalido. } (o comando “switch” não aceita valores do tipo real!!! Este comando é totalmente inválido) switch (sexo) { case ‘f’: case ‘F’: printf(“\nVoce eh do sexo feminino”). } (falta o comando “break” dentro dos cases. switch (temp) printf(“\nQual eh a temperatura do seu corpo? “). { case 36. ++cont3. default: if (temp > 37.”). case 3: printf(“\n Voce votou no candidato 3”).”). } Exemplos de comandos de seleção múltipla INVÁLIDOS ou ERRADOS: scanf(“%f”. break.0: case 36. o comando de repetição é finalizado. while (1) { if (numero % 2 == 0) ++contapar.5 Comando de Repetição em C (while) Atenção • A sintaxe do comando de repetição “while” é: while (condição) { <bloco de comandos> } • A semântica (como funciona) do comando de repetição “while” é: • a condição é avaliada como VERDADEIRA (diferente de zero) ou FALSA (igual a zero).unisa. numero += 3. } Unisa | Educação a Distância | www. while (contador < 3) ++contador.Algoritmos e Linguagem de Programação 5. • se a condição for FALSA. os delimitadores ficam opcionais e o “. numero += 3. pois. while (numero <= 100) { if (numero % 2 == 0) ++contapar. é ESSENCIAL que exista um comando que altere a <condição> que é constantemente avaliada. caso contrário. dentro do comando “while”. • Os delimitadores { e } são obrigatórios quando existe mais de um comando no <bloco de comandos>. indicando o final do comando “while”. numero = 1. } numero = 1. • Entre os comandos do <bloco de comandos>. Exemplos de comandos de repetição válidos: contador=0. • se a condição for VERDADEIRA.” funcionará como delimitador de fim. automaticamente se retorna à avaliação da condição. o <bloco de comandos> é executado e.br 71 . ao chegar ao delimitador de fim } ou final do comando. este finaliza imediatamente o comando “while” quando for executado. else ++contaimpar. if (numero >= 100) break. else ++contaimpar. o comando “enquanto” NUNCA TERMINARÁ! • è Caso haja um comando break. Quando existir apenas um comando. como o comando if não altera a variável numero. 72 Unisa | Educação a Distância | www. que foi colocado em loop infinito de propósito. A diferença entre eles é que o comando “for” utiliza um mecanismo de contagem automática. o comando “break” não será executado e o comando “while” nunca vai parar mesmo!) 5. que controla a condição. dentro de um intervalo definido pelo usuário. o comando “while” nunca vai parar!) numero = 1. if numero >= 10 break. como os comandos “while” (já apresentado) e “do while” (que não apresentaremos nesta apostila).6 Comando de Repetição em C (for) O comando de repetição “for” permite que um comando ou um bloco de comandos seja executado um número determinado de vezes. while (1) numero += 3. (como não existem os delimitadores de início e fim { } do comando. { numero += 3. o comando “while” foi finalizado. a variável numero não será alterada e o comando “while” nunca vai parar!) numero = 1. numero += 3.Elisamara de Oliveira Exemplos de comandos de repetição INVÁLIDOS ou errados: while contador <= 10 ++contador. É muito útil para controlar a leitura e a impressão de vetores e matrizes (estruturas que serão estudadas no futuro). após a condição. while (numero <= 100) if (numero % 2 == 0) ++contapar. (faltaram parênteses na condição) numero =1. while (numero <= 10). } (como foi colocado . somente o comando if faz parte do comando “while” e. É um comando de repetição. (como não foram colocados { } delimitando os comandos dentro do “while”. else ++contaimpar.br .unisa. atribuições à variável de controle e condição é uma expressão relacional que envolve a mesma variável de controle. o <bloco de comandos> é executado e. i=3. também. i). i++) printf(“O valor de i eh: %i\n”. i=3. Pode-se omitir a expressão inicial. funcionará como delimitador de fim. incremento ou decremento) { <bloco de comandos> } • As expressões inicial e incremento ou decremento são. i<=5. condição corresponde a i<=5. inicial corresponde a i=3. se esta já tiver sido avaliada anteriormente no programa. ou seja. ) { printf(“O valor de i e: %d\n”. • A semântica do comando “for” é: • A expressão inicial é avaliada. condição.i <= 5. i++) printf(“O valor de i eh: %d\n”. o comando de repetição é finalizado. A expressão inicial pode ser qualquer expressão válida em C. i++. i++) printf(“O valor de i é: %d\n”. i). omitir a expressão incremento ou decremento e avaliá-la no corpo da instrução for. Informações importantes sobre o comando “for” e exemplos de utilização: for (i=3. • quando a condição ficar falsa. automaticamente se incrementa ou se decrementa a variável de controle e se retorna à avaliação da condição. i=3. for ( . Quando existir apenas um comando. i).Algoritmos e Linguagem de Programação Atenção • A sintaxe do comando de repetição “for” é: for (inicial. indicando o final do comando “for”. • Os delimitadores { e } são obrigatórios quando existe mais de um comando no <bloco de comandos>. ao chegar ao delimitador } ou final do comando “for”. consistindo geralmente na inicialização de uma variável de controle. for (printf(“comecou”) . } Unisa | Educação a Distância | www. i<=5.unisa. for ( . o incremento/decremento fizer a variável de controle chegar no limite da condição. Pode-se. é avaliada a condição: • se a condição for verdadeira. porém o ponto e vírgula deve permanecer. i). os delimitadores ficam opcionais e o . e incremento corresponde a somar 1 à variável de controle i++. i é a variável de controle. • Em seguida. Nesse caso. i<=5 .br 73 . em geral. } Usando vírgulas. j--) printf(“\n%d. A instrução for pode ser aninhada. for(linha=0. linha++) { for(coluna=0. é necessário que estes sejam colocados entre os delimitadores { }. i++) { printf(“\n %d”.unisa. . A expressão condição pode ser constituída por expressões conectadas por operadores lógicos. um loop infinito. ) { if (i==0) break. (i<10 && achou==0). scanf(“%i”. for( . de forma a realizar duas tarefas. ser interrompido dentro do corpo da instrução for por um comando break. } achou= i= 0. quando o corpo da instrução for consistir de mais de um comando. coluna++) printf(“\n%d”. coluna<10. ) Tendo-se. j). for(i=0. executada dentro de outra instrução for. i++. for(i=0. } Podem-se omitir as três expressões: inicial. i=10. . que pode. i<10. --i. ou seja. aux). linha<10. i++) { printf(“\n Digite um inteiro: “). j=10. As subexpressões serão avaliadas da esquerda para a direita e toda a expressão será avaliada como o valor da expressão da direita. então. no entanto. } 74 Unisa | Educação a Distância | www. i. %d”. achou = (aux == -1). matriz[linha][coluna]). --aux.Elisamara de Oliveira Note que.br . pode-se criar expressões constituídas de duas subexpressões. (i<10 && aux!=0). &aux). for( . condição e incremento: for( . ). } for (j=1. i= soma = 0. } Exemplos de comandos “for” INVÁLIDOS: for (i=10.Algoritmos e Linguagem de Programação Exemplos de comandos “for” válidos: for (i=10. i<0. j++) { printf(“\nDigite um numero negativo: “).&n). (o comando “for” não vai fazer nada. if (n>=0) break. (o comando for não será executado nenhuma vez.indica contagem decrescente) for (i=10. soma = soma + nota. scanf(“%i”.j). i--) printf(“\nContador decrescente= %i”.br 75 . printf(“\nContador decrescente= %i”. abs(n)).i).i). i>0. i--).i). scanf(“%f”. j++) { if (j % 2 == 0) printf(“\n %i eh par “. i++) { printf(“\nDigite o valor da nota do aluno %i= “. i--) printf(“\nContador decrescente= %i”. pois tem um . } for (j=1.¬a). j<=1000.j). i < 10. j<=1000. n. pois o valor inicial é menor que o valor final e i-.i).unisa. else printf(“\nValor absoluto de %i = %i”. indevido i-. i>0. que faz com que o “for” finalize – printf será executado uma única vez) Unisa | Educação a Distância | www. for ( . else printf(“\n %i eh impar “. • Para a leitura de números. para variáveis do tipo “float”. há diversos comandos de leitura e cada um deles é mais adequado aos diferentes tipos básicos.j). em que “%letra” representa os especificadores de formato e depende do tipo associado à variável: “%d” ou “%i”.Elisamara de Oliveira for (j=1. para variáveis do tipo “char” (único) para variáveis do tipo “char” (string) 76 Unisa | Educação a Distância | www.unisa. & variável). e “%f”. • Para a leitura de caractere único. pois a condição nunca vai ser falsa. j--) { if (j % 2 == 0) printf(“\n %i eh par “. variável = getche(). } (o comando for não vai parar nunca. j<=1000. o melhor comando é o “getche()”. o melhor comando é “gets()”. gets(variável). o comando deve ser “scanf”.7 Comandos de Leitura e Escrita em C Atenção • Na linguagem C. • A sintaxe dos comandos de entrada é: scanf(“%letra”. para variáveis do tipo “int”. else printf(“\n %i eh impar “. • Para a leitura de strings (cadeia de caracteres). o certo seria usar j++ e não j--) 5.j).br . %i. c = ‘#’. no comando “printf”. • Os números do tipo “float” podem ser impressos com formato.h char nome[20]. “puts” e “printf”. ro).50. Caso haja especificadores. %3. valor = 2002.0f (no mínimo 3 casas na parte inteira. • A lista de variáveis é opcional. Saiba mais • A sintaxe dos comandos de saída é: printf(“\n frase puts(“\n frase”).br 77 . valor = -5. deve existir somente quando um especificador de formato é colocado na frase entre aspas e. a variável do tipo correspondente deve constar da <lista de variáveis>. float valor. Atribuição somente atraconio. mas a parte inteira nunca é truncada. nesse caso. deve haver uma vírgula separando a frase da lista de variáveis e vírgulas separando as variáveis da lista.867. • \n é um código de barra invertida que salta uma linha na tela. para serem impressos em forma estendida. A parte fracionária é truncada caso haja mais casas fracionárias do que a delimitada pelo formato. &valor). para evitar a forma científica. Unisa | Educação a Distância | www. Leitura Exemplos de conteúdos Biblioteca a ser incluída stdio.2f (2 casas na parte fracionária).unisa.h vés de função: string. scanf(“%f”. <lista de variáveis>). c=getche(). mesmo sem “\n”. conio. mas não ocorre truncamento nunca. ou seja.Algoritmos e Linguagem de Programação A tabela a seguir mostra um exemplo de declaração de variáveis de tipos básicos. c = ‘s’. &nume.h char c. descritos nos comandos de leitura. a forma correta de leitura e as bibliotecas do C a serem incluídas. entre as aspas podem ser escritas somente frases ou frases formadas por palavras intercaladas pelos especificadores de formato %s. numero = 2002. %letra ”. %d ou %f. gets(nome). “Ana”).numero = -5.h scanf(“%i”. e nenhuma casa na parte fracionária). • O comando “puts” salta uma linha após a impressão da frase. stdio. Pode ser usado em qualquer posição dentro das aspas em ambos os comandos. e não imprime variáveis. c = ‘5’. Declaração int numero. Exemplos: %. e é opcional. %c. • No comando “printf”.h strcpy(nome. para cada especificador utilizado. nome. printf (“\nQual eh a sua idade? “). Exemplo: printf (“\nVc se chama %s.&idade). idade. scanf (“%f”. variável3). idade.unisa. puts (“\nQual eh o seu sexo? (F/M) “). media). scanf (“%i”. variável1. (a frase deve vir entre aspas) printf (“\nfrase ” . variável1. variável2. gets(nome). altura).2m de altura\n”. nome.Elisamara de Oliveira Atenção Explicação adicional – Passo a passo do comando de impressão: printf (frase variável1 variável2 variável3).1f”.variável3). voce tem %i anos e\n %. (dentro da frase deve vir um formato para cada variável. printf (“\nVocê foi aprovado no curso com media= %2. Exemplos de comandos de entrada e saída válidos: puts (“\nQual eh o seu nome? “).br . puts (“\nQual eh a sua altura? “). (entre a frase e a variável e entre as variáveis deve haver uma vírgula separando-as) printf (frase . printf (“\n%s. variável2. compatível com o seu tipo básico) printf (“\nfrase %s %i %f ”.&altura). altura).variável1.2f metros de altura ”. 78 Unisa | Educação a Distância | www. tem %i anos e %. sexo=getche().variável2. variável3). e estes devem estar contidos entre os delimitadores { e }. é necessário colocar o comando “return 0.unisa.8 Comentários em C Os comentários não pertencem às instruções do programa C. • Após a declaração das variáveis. Unisa | Educação a Distância | www. • Alguns compiladores C não aceitam “void main( )”. • Em seguida. Saiba mais • Os comentários podem vir delimitados entre /* */ Ou podem ser comentários de linha // Exemplos de comentários: /* Este trecho calcula a media de notas */ desc = preco*0. todo programa C deve começar com o nome do arquivo .15. separados por ponto e vírgula.c em um comentário dizendo o que o programa faz.h. Nenhum comando pode ser usado fora dessa seção.9 Bloco de Programa em C Atenção • O Bloco de Programa em C tem a forma: /* comentários */ <inclusão de bibliotecas> <declaração de variáveis> void main() { <bloco de comandos> } • Apesar de opcional. Nesses casos. a não ser o comando de atribuição para inicializar variáveis na sua declaração.Algoritmos e Linguagem de Programação 5. • O <bloco de comandos> pode conter todos os comandos válidos em C. // calcula desconto de 15% 5. que serão utilizadas no programa.” antes de finalizar o programa. através da diretiva #include < >.br 79 . mas são úteis para que o programador explique o que está sendo feito. que delimita a seção em que os comandos podem ser utilizados. devem ser incluídas as bibliotecas . deve-se escrever a palavra “main( )” ou “int main()” ou “void main()”. • É importante notar que letras maiúsculas e minúsculas alteram os identificadores e as palavras reservadas do C. mas “int main()” ou apenas “main()”. devem ser declaradas todas as variáveis que serão utilizadas no <bloco de comandos>. • Em seguida. scanf(“%d”. printf(“\n Qual a sua escolha? “). printf (“\nQual eh o seu sexo? (F/M) “). if (sexo == ‘F’ || sexo == ‘f’) printf (“\n%s. voce eh do sexo feminino. } /* switch.c .h> char nome[20].Elisamara de Oliveira Exemplos de programas escritos em C válidos: /* nomesexo. gets(nome). sexo=getche(). voce eh do sexo masculino.nome). printf(“\n 1. printf(“\nPergunta: Em que ano o Brasil foi descoberto?”).&opcao).h> int opcao. // para a tela return 0.Em 1500 por Pero Vaz de Caminha”).unisa. int main() { printf(“\nTeste de avaliacao de conhecimento\n”).h> #include <conio. sexo. puts(“\n Fim do programa”). “.Em 100 AC por Pitagoras”).nome).Em 1500 por Pedro Alvares Cabral”).br . else printf (“\n%s.h> #include <conio.avalia o conhecimento do usuário */ #include <stdio.c: le o nome e o sexo de uma pessoa e imprime uma frase dizendo se é masculino ou feminino */ #include <stdio.Em 1492 por Cristovao Colombo”). printf(“\n 3. 80 Unisa | Educação a Distância | www. printf(“\n 2. getch(). “. printf(“\n 4. int main () { puts (“Qual eh o seu nome? “). igual a 0: <string1> igual a <string2>. case 4: printf(“\n Resposta certissima !”). Unisa | Educação a Distância | www.h: strcat (destino.unisa. menor que 0: <string1> menor que <string2>. getch(). resultando em: compara o <string1> com o <string 2> pela ordem alfabética (conforme tabela ASCii). break. a linguagem C fornece uma série de funções úteis que pertencem a diferentes bibliotecas.br 81 . Segue uma pequena lista das principais funções que você poderá usar quando se fizer necessário.string2).”). break. } printf(“\n Fim do programa “).Algoritmos e Linguagem de Programação switch(opcao) { case 1: printf(“\nVoce precisa ler mais sobre a historia grega !”). default: printf(“\nVoce nao escolheu nenhuma das alternativas validas. case 3: printf(“\n Naturalmente voce eh um fã da carta do descobrimento!”). return 0. fonte). case 2: printf(“\nEle chegou nos paises vizinhos. anexa o string <fonte> ao string <destino>. Funções da biblioteca string.”). copia o string <fonte> para o string <destino>. fonte).. strcpy (destino.10 Funções Úteis em C Caro(a) aluno(a).. maior que 0: <string1> maior que <string2>. break. strcmp (string1. } 5. break. 82 Unisa | Educação a Distância | www. retorna NULL.br . Posiciona o cursor nas coordenadas especificadas. strupr(string). Retorna a <string> convertida para letras maiúsculas. Muda a cor do fundo. tamanho = strlen(string). textbackground(cor). Verifica se o <caractere> se encontra na <string> e retorna à posição da primeira ocorrência do <caractere> no <string>. Funções da biblioteca ctype. se o <caractere> não for encontrado. Limpa a tela. os caracteres em ordem contrária.h: letra=toupper(letra).Elisamara de Oliveira strchr(string. Funções da biblioteca conio. Muda a cor da letra. letra=tolower(letra). strrev(string). Retorna a <string> convertida para letras minúsculas. gotoxy(coluna. caractere). Retorna o <tamanho> de uma <string> em número de caracteres. Converte uma <letra> para minúsculo.unisa.h clrscr(). Retorna a <string> invertida. textcolor(cor). strlwr(string). Converte uma <letra> para maiúsculo. linha). ou seja. Unisa | Educação a Distância | www. Exige um argumento do tipo “double”. Recebe dois argumentos do tipo “double”: o primeiro é a base e o segundo o expoente. Recebe um “float” como argumento.98561) resultaria em 46. sqrt() Retorna o valor da raiz quadrada. Recebe um “float” como argumento. Recebe como argumento um “double” do qual ele deve extrair a raiz. faríamos pow (2.98561) resultaria em 45. Recebe como argumento o valor dos graus em “double”.h Trigonométricas sin() cos() Retorna o valor do seno. Exige um argumento do tipo “double”. tan() Retorna o valor da tangente.unisa. Arredondamento ceil() Retorna o primeiro “float” sem casas decimais acima. Exemplo: ceil (45. Retorna o valor do logaritmo na base 10. floor() Retorna o primeiro “float“ sem casas decimais abaixo. Recebe como argumento o valor dos graus em “double”. log10() Retorna o valor da base elevada ao expoente. Logarítmicas log() Potenciação pow() Retorna o valor do logaritmo na base 2. Por exemplo: se quisermos saber o resultado da operação 210.Algoritmos e Linguagem de Programação Funções da biblioteca math. 10). Recebe como argumento o valor dos graus em “double”. Exemplo: floor (45.br 83 . Retorna o valor do cosseno. system(“color 0B”).11 Tradução de PortuCê para a Linguagem C Como você viu.Elisamara de Oliveira Outras funções system system(“cls”). aprender PortuCê ajuda bastante a aprender C! Use a tabela a seguir para ajudá-lo(la) na tradução de comandos do PortuCê para C! Saiba mais Comandos/Tipos Atribuição PortuCê = inteiro Tipos básicos inteiro longo real caractere inteiro real Formatos caractere único string inteiro longo Condicional Seleção múltipla Leitura de caracteres Leitura de strings Leitura de números Escrita Escrita Operadores lógicos se senão escolha leia leia leia imprima imprima e ou não C = int long int float char %i ou %d %f %c %s %ld if else switch getche() gets scanf printf puts && || ! 84 Unisa | Educação a Distância | www. caro(a) aluno(a). Cor de fundo preta e letras azuis brilhantes.unisa.br . 5. Limpa a tela. system(“pause”). Faz uma pausa ou para a tela. h> #include <conio. Unisa | Educação a Distância | www.nome).unisa.nome). leia(“%s”.”).br 85 .sexo). senão imprima (“Voce digitou um sexo invalido “). gets(nome). puts (“\nQual eh o seu sexo? (f/m) “).c: le o nome e o sexo de uma pessoa e imprime uma frase dizendo se é masculino. principal ( ) { imprima (“Qual eh o seu nome? “). No final da apostila. else printf (“\nVoce digitou um sexo invalido “). é gratuito e fácil de usar (o compilador Dev C++). “. } /* sexo. feminino ou invalido */ caractere nome[20].nome). /* sexo. senão se (sexo == ‘m’ ou sexo == ‘M’) imprima (“%s voce eh do sexo masculino. imprima(“Fim do programa. getch(). if (sexo == ‘f’ || sexo == ‘F’) printf (“\n%s voce eh do sexo feminino. feminino ou invalido */ #include <stdio. “. sexo = getche().h> char nome[20]. se (sexo == ‘f’ ou sexo == ‘F’) imprima (“%s voce eh do sexo feminino. imprima (“Qual eh o seu sexo? (f/m) “).nome).”). você deve implementar todos os programas em C usando o compilador de sua preferência. leia (“%c”. sexo.c: le o nome e o sexo de uma pessoa e imprime uma frase dizendo se é masculino. eu indico um compilador que é fácil de ser encontrado na internet. int main() { puts (“Qual eh o seu nome? “). “.nome). else if (sexo == ‘m’ || sexo == ‘M’) printf (“\n%s voce eh do sexo masculino. sexo.Algoritmos e Linguagem de Programação Caro(a) aluno(a). puts(“\nFim do programa. “. h> int anoatual. leia (“%i”. imprima(“Fim do programa. %i anos “. idade). leia(“%i”. idade. idade. principal() { imprima (“Qual eh o ano atual? “).br . scanf(“%i”. scanf (“%i”.Elisamara de Oliveira } return 0.&anoatual). getch().h> #include <conio. main() { printf (“\nQual eh o ano atual? “). anonasc.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.&anoatual). imprima (“Qual eh o seu ano de nascimento? “). } 86 Unisa | Educação a Distância | www.”). } /* idade. imprima (“Voce fez ou fara %i anos “. idade = anoatual – anonasc. return 0. idade = anoatual – anonasc.”).c: le o ano atual e o ano de nascimento de uma pessoa e imprime uma frase dizendo qual eh a idade da pessoa */ #include <stdio.unisa.&anonasc). anonasc. printf (“\nVoce fez ou fara puts(“\nFim do programa. /* idade.&anonasc). printf (“\nQual eh o seu ano de nascimento? “). idade). int main() { printf (“\nDigite um numero inteiro: “).h> #include <conio. scanf(“%i”.Algoritmos e Linguagem de Programação /* parimpar. leia (“%i”. se (n % 2 == 0) imprima (“O numero %i eh par “. n). n). n).br 87 .c: le um numero e verifica se ele eh par ou impar */ inteiro n. getch().”).&n). principal() { imprima (“\nDigite um numero inteiro: “). n). } /* parimpar. } Unisa | Educação a Distância | www. if (n % 2 == 0) printf (“\nO numero %i eh par “.”). imprima(“ Fim do programa.c: le um numero e verifica se ele eh par ou impar */ #include <stdio.h> int n.unisa. return 0. else printf (“\nO numero %i eh impar “. senão imprima (“O numero %i eh impar “.&n). puts(“\nFim do programa. 0) printf (“\nVoce foi aprovado! “). senão imprima (“Voce foi reprovado. se (nota >= 6. scanf(“%f”. } 88 Unisa | Educação a Distância | www. scanf(“%f”.. principal() { imprima (“Digite sua nota final: “).c: le a nota de um aluno e verifica se ele foi aprovado ou reprovado */ real nota. else printf (“\nVoce foi reprovado.unisa.”). if (nota >= 6... imprima(“ Fim do programa.”).br .0) imprima (“Voce foi aprovado! “). “). getch(). void main() { printf (“\nDigite sua nota final: “).¬a).¬a)..h> float nota. } /* nota. “).Elisamara de Oliveira /* nota.c: le a nota de um aluno e verifica se ele foi aprovado ou reprovado */ #include <stdio. printf(“\n Fim do programa.h> #include <conio. caro(a) aluno(a).&voto). cont1. senão ++nulos. imprima (“o candidato vencedor foi: %i “. Traduzir o algoritmo em PortuCê para C: /* Eleicoes. imprima (“numero de votos nulos: %i “. senão vencedor = 3. eleitores.&voto). senão se (voto == 3) ++cont3. principal() { imprima (“digite o seu voto (1.Algoritmos e Linguagem de Programação 5. cont2. assim.br 89 .2. } se ((cont1 > cont2) e (cont1 > cont3)) vencedor = 1. vencedor). diminuindo. vencedor.eleitores). brancos).unisa. você aprendeu uma metodologia que facilitará o processo de desenvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. nulos. brancos=nulos=eleitores=cont1=cont2=cont3=0.3 ou 0(branco) –1 finaliza): “). senão se (voto == 0) ++brancos. leia (“%i”. leia (“%i”. brancos. senão se (voto == 2) ++cont2. enquanto (voto != -1) { ++eleitores.c: este programa computa os votos de uma eleição e divulga os números obtidos e o candidato vencedor. imprima (“numero de votos em branco: %i “.3 ou 0(branco) -1 finaliza): “).13 Atividades Propostas 1. 5. A metodologia é composta de uma sequência de passos. senão se ((cont2 > cont1) e (cont2 > cont3)) vencedor = 2.nulos). a sua complexidade. } Unisa | Educação a Distância | www.*/ inteiro voto. cont3. se (voto == 1) ++cont1.12 Resumo do Capítulo Neste capítulo. imprima (“digite o seu voto (1. imprima (“numero de eleitores: %i “. cujo principal objetivo é ajudá-lo a resolver problemas dividindo-os por partes.2. unisa.1. 5. Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor que R$ 500. Caso o salário seja maior que R$ 1000.00. O usuário entra com os seguintes dados: hora e minuto de entrada. 3. Se o salário for maior ou igual a R$ 500.00. Faça um programa em C tendo como dados de entrada o preço de um produto e seu código de origem. Sabe-se que esse estacionamento cobra R$ 10. Faça um programa em C que calcule e imprima o valor em reais correspondente aos dólares que um turista possui no cofre do hotel. 4. o reajuste deve ser de 5%. Crie uma nova versão do programa em C do exercício 5. o reajuste deve ser de 10%. O programa deve solicitar os seguintes dados: quantidade de dólares guardada no cofre e cotação do dólar naquele dia. Faça um programa em C que leia o valor do salário atual. Faça um programa em C para calcular e imprimir o valor a ser pago pelo período de estacionamento do automóvel. mas menor ou igual a R$ 1000. 6.Elisamara de Oliveira 2. calcule e imprima o valor do novo salário de um funcionário. apresente o preço e a sua procedência. hora e minuto de saída.00 por hora ou fração.1 utilizando o comando “switch” no lugar do ninho de comandos “if”.00. de acordo com a tabela a seguir: Código de Origem 1 2 3 4 5 Procedência Sul Sudeste Centro-Oeste Norte Nordeste 90 Unisa | Educação a Distância | www.br . um algoritmo é usado para resolver problemas finitos. O último número é 0 (flag=0). quando o programa irá parar de ler os números. Se alguém pede que façamos um programa para ler uma “quantidade indeterminada de números”.1 Comando de Repetição – Entrada Indeterminada de Dados (uso de flags) Aqui você vai aprender a usar o comando repetitivo e a resolver problemas que envolvam flags. é feita uma leitura ANTES do início do comando de repetição “while”. é necessário que o número n seja lido novamente dentro do comando “while” para que a condição que determina a finalização do comando seja modificada (senão o comando “while” nunca para) e também para que a leitura indeterminada de dados prossiga. No entanto. com certeza. Escreva comandos para ler e imprimir vários números inteiros.6 USANDO COMANDOS DE REPETIÇÃO EM C 6. mas sabemos que o último é -1! Assim. isto é. em muitos outros problemas que envolvam o uso de flags. se um flag é informado. Flag vem do inglês e significa sinal ou bandeira. a solução se torna possível: faça um programa para ler uma “quantidade indeterminada de dados. Por isso. Vamos ver isso na prática! 1. Unisa | Educação a Distância | www. É importante que você observe a lógica de um trecho de algoritmo que trabalha com flag. não sabemos se serão 5. sabendo-se que o último valor será -1”. Como já foi dito antes. mas. Um flag em programação representa um valor que é usado para indicar o final da entrada de dados. 20. Antes de o número n ser “processado”. aparentemente não poderíamos escrever um algoritmo para resolvê-lo.br 91 . Veja bem: a quantidade de números continua indeterminada. é necessário verificar se ele é o flag ou não.unisa. essa nova leitura é feita no FINAL do comando “while”! Não pretendo aqui dar uma “receita de bolo” para você seguir. 2 ou 2000 números. -1 é o flag e os números serão lidos até que seja fornecido o -1. mas apenas chamar a sua atenção para a lógica desse tipo de problema que poderá ser utilizada. Imprima. quando temos a certeza de que a entrada de dados foi finalizada (ou seja. O último número é -1 (flag= -1). cada vez que o comando “while” é executado). a quantidade de números.br .unisa. sabe-se que a entrada de dados é indeterminada. é necessário usar um contador (neste algoritmo é o cont). também. Quando o flag é utilizado. soma-se mais 1 ao contador. Escreva comandos para ler e imprimir vários números inteiros e contar a quantidade de números lidos. o flag foi fornecido). O contador tem que ser inicializado com zero. A impressão do conteúdo do contador só pode ser feita após o final do comando “while”.Elisamara de Oliveira 2. 3. Cada vez que uma repetição é realizada (ou seja. 92 Unisa | Educação a Distância | www. É importante que você observe a lógica para se contar a quantidade de números fornecidos. Escreva comandos para ler e somar vários números inteiros. O último número é 0 (flag=0). Quando se deseja saber quantos valores válidos foram fornecidos. ou seja. Escreva comandos para ler e imprimir a idade. a lógica tem que ser um pouco alterada: a variável que será utilizada como flag deve ser lida ANTES do começo do comando “while” e sua leitura deve ser repetida DENTRO do comando imediatamente ANTES DO FINAL do comando “while” (observe os comandos em destaque). sem problemas! Unisa | Educação a Distância | www. Observe que. quando o usuário digitar 0 para a idade. o comando “while” é finalizado pelo “break”. DENTRO do comando “while”. Temos. Nesse caso. neste exemplo.br 93 . bem no seu início! 5. o comando “while” não para nunca. sempre “verdadeira”. pois a condição é sempre 1.Algoritmos e Linguagem de Programação 4. Crie uma forma alternativa. Para finalizar o comando “while”. um caso em que há mais de uma variável a ser lida e apenas uma dessas variáveis vai funcionar como flag. sim. Isso pode ser feito. neste exemplo.unisa. ou seja. foi utilizado o comando break. o nome e a altura de várias pessoas (última idade=0). todas as outras variáveis devem ser lidas apenas uma vez. Escreva comandos para ler e imprimir a idade e o nome de várias pessoas (última idade=0). No entanto. aqui estudaremos os problemas cuja entrada de dados é DETERMINADA. Esse tipo de problema requer o uso de contadores para facilitar a contagem dos dados de entrada. no final. embora também possamos usar o comando “while”. a leitura do nome e o nome é impresso. que é o comando “for”! Vejamos: Percebeu como é mais fácil? O comando “for” começa do zero e vai somando 1 à variável de controle “cont” até que “cont” fique igual a 5! DENTRO do comando “for” é feita. o nome é impresso e somente no FINAL do comando “while” o contador é incrementado de 1. Novamente.Elisamara de Oliveira 6. utiliza-se o comando “while”. neste caso).2 Comando de Repetição – Entrada de Dados Determinada Você vai continuar usando um comando repetitivo. a leitura do nome. é importante que você observe a lógica de um trecho de programa que trabalha com entrada determinada de dados.unisa. a cada contagem. todos os 10 valores tivessem sido lidos. Se alguém pede que façamos um programa para ler um “conjunto de 10 números”. Existe um comando específico para fazer essa contagem. DENTRO do comando “while” é feita. uma única vez. Antes de o nome ser lido. Vamos ver isso na prática! 6. Ao contrário do que vimos na seção 6. é necessário zerar o contador cont. 94 Unisa | Educação a Distância | www. cuja condição é exatamente o contador ser menor do que o número de dados a serem lidos (cont < 5. uma única vez. Escreva comandos para ler e imprimir o nome de 5 pessoas. lêssemos um dos números do conjunto para que. seria necessário que contássemos de 1 até 10 e. em que entradas indeterminadas de dados foram tratadas. que é o comando “for”. mas para resolver problemas que envolvam contadores.br . este mesmo trecho pode ser escrito com um comando mais adequado.1. Daí. A contagem fica como antes. Unisa | Educação a Distância | www. Escreva comandos para pedir ao usuário o número de dados que ele deseja fornecer (N). Note que a única mudança na solução deste tipo de problema é a leitura da quantidade de dados ANTES do comando “for” e a mudança na condição de finalização para (cont < n). não é? 8.Algoritmos e Linguagem de Programação 7. a idade e a altura de 10 pessoas. 9. Reescreva o trecho 8 usando “while” (1). leia e imprima o nome e a quantidade que ele forneceu. Escreva comandos para ler e imprimir o nome. Fácil. todas elas devem ser lidas apenas uma vez DENTRO do comando “for”. quando há mais de uma variável a ser lida. Observe que.br 95 .unisa. Valor dos minutos Passo 3 (dados de saída) 1. . Passo 2 (dados de entrada) 1. 6. se o conjunto de minutos é fornecido: 200. -1 O resultado seria: “300 foi o maior número de minutos e 2 assinantes atingiram o valor máximo”. 300. Por exemplo. Quantos assinantes atingiram o maior número de minutos 96 Unisa | Educação a Distância | www.br . Maior número de minutos 2.3 Exemplo dos Minutos Telefônicos A empresa TELEFUN está interessada em saber qual foi o maior número de minutos gastos no mês entre os assinantes e quantos assinantes atingiram esse valor. 200.unisa. ). 300. Reescreva o trecho 9 usando “for” ( . Faça um programa que leia os valores dos minutos (o último valor será -1) e imprima os resultados desejados pela empresa.Elisamara de Oliveira 10. 150. Passo 1 (ler e entender o problema) Certa companhia telefônica quer saber qual foi o maior número de minutos gastos num certo mês e quantos assinantes “empataram” atingindo esse valor máximo. Algoritmos e Linguagem de Programação Passo 4 (variáveis auxiliares) Não há variáveis auxiliares a serem geradas (para se chegar a essa conclusão. Unisa | Educação a Distância | www. então. ou seja.unisa. Poderia ser inicializado na declaração também) Passo 7 (cálculo das saídas) Há apenas 2 variáveis de saída. (variável de entrada do tipo int: inicializada com “scanf”) maiorminutos = 0. dois trechos a serem construídos. (quando se deseja selecionar o maior valor. uma estratégia possível é considerar o primeiro valor lido como sendo o maior ou então como sendo zero e depois fazer a comparação dos outros valores com este) quantos = 0. (contador: inicializado com zero. o raciocínio foi o seguinte: para o cálculo do maior número de minutos.) Passo 6 (inicializar as variáveis) printf(“\nDigite o numero de minutos: ”). para saber a quantidade de assinantes. maior minutos. é necessário apenas comparar o valor dos minutos – dado de entrada – com o maior valor de minutos – dado de saída –. saída e auxiliar: total de 3 variáveis. quantos. não precisa de variável auxiliar. scanf (“%i”.& minutos).br 97 . somente o contador é necessário) Passo 5 (declarar as variáveis) int minutos. (uma variável para cada entrada. é necessário compará-lo com o valor dos minutos que serão lidos. Para se selecionar o maior número de minutos. Todas do tipo int. O comando a ser utilizado é o “if”. esses 2 trechos devem ser unidos num único comando “if”.Elisamara de Oliveira if (minutos > maiorminutos) { maiorminutos = minutos. quantos). deve-se somar 1 ao contador: if (minutos == maiorminutos) ++quantos. Cada vez que o valor do maior número de minutos for encontrado novamente. o contador quantos teria que ser inicializado com zero. } else printf (“\nNenhum valor valido foi fornecido”). senão o contador ficaria sempre com um 1 a mais. } No caso de essa comparação ser verdadeira. 98 Unisa | Educação a Distância | www. maiorminutos). ao se alterar o valor do maiorminutos. pois não se deve somar +1 ao contador quantos quando ocorre a troca do valor de maiorminutos.br . pois este seria o primeiro assinante que o utilizou: quantos = 1. quantos = 1. Isso deve ser feito através de outra comparação. quantos = 1. o maior valor dos minutos deve ser mudado: maiorminutos = minutos. } else if (minutos == maiorminutos) ++quantos. agora.unisa. Passo 8 (impressão dos resultados) if (maiorminutos !=0) { printf(“\nO maior numero de minutos foi: %i ”. if (minutos > maiorminutos) { maiorminutos = minutos. Faça alguns testes você mesmo(a) para entender melhor essa explicação. No entanto. printf(“\nAssinantes que atingiram o maior nro de minutos: %i”. contar a quantidade de assinantes que atingiram o valor máximo de minutos. o contador de assinantes que o atingiram deve ser retornado para 1. Resta. Mas. Para manter os dois trechos separados. if (minutos > maiorminutos) { maiorminutos = minutos. quantos). quantos=0. 50. printf(“\nAssinantes que atingiram o maior nro de minutos: %i”.Algoritmos e Linguagem de Programação Passo 9 (montagem do programa) /* telefun. } else printf (“\nNenhum valor valido foi fornecido”). maiorminutos). -1 minutos 100 50 100 150 150 10 150 -1 3 O maior número de minutos foi: 150 Número de assinantes que atingiram o maior número de minutos: 3 150 2 1 2 maior minutos 0 100 quantos 0 1 Resultados Unisa | Educação a Distância | www. getch(). } } if (maiorminutos !=0) { printf(“\nO maior numero de minutos foi: %i ”.br 99 . seleciona o maior deles e conta quantos assinantes atingiram este valor */ #include <stdio. 10. scanf(“%i”. 150 . int main() { printf(“\nTelefun: quem fala mais ao telefone???\n”). 100.h> #include <conio. maiorminutos=0. if (minutos = -1) break.unisa.&minutos). Passo 10 (fazer o teste de mesa do algoritmo) Suponha os seguintes valores de entrada: 100.h> int minutos. 150. while (1) { printf(“\nDigite o numero de minutos (-1 finaliza): ”). } else if (minutos == maiorminutos) ++quantos. return 0. quantos = 1. printf(“\nFim do programa”). 150.c: este programa lê um conjunto de valores de minutos. 4 Exemplo do Preço Final de Automóveis O preço final de um automóvel novo é calculado da seguinte forma: ao preço de fábrica.00 PRIPI ç 70000.00 x 1.35 = 24500.00=27000.00 GOL FIM O preço final do BMW seria assim calculado: IPI 70000.Elisamara de Oliveira Suponha o seguinte valor de entrada: -1 minutos -1 maiorminutos 0 quantos 0 Resultados Nenhum valor válido foi fornecido 6.35 = PRIPI ç 20000.unisa.00 100 Unisa | Educação a Distância | www. são acrescidos 35% de IPI e sobre o preço já com o IPI é acrescido 5% correspondente ao ICMS.00 x 0. Faça um programa que leia o nome de vários modelos de automóveis (flag=FIM) e o seu preço de fábrica e calcule e imprima o seu preço final.00 FINAL ç PRIPI x 1.00 20000.05 = 28350.00=94500.05 = 99225.00 O preço final do GOL seria assim calculado: IPI 20000.00 + 24500. Passo 1 (ler e entender o problema) Suponhamos a seguinte entrada de dados: BMW 70000.br .00 + 7000.00 FINAL PRIPI x 1. prIPI.unisa. float prFabrica. uma para cada auxiliar: total de 5 variáveis) Passo 6 (inicializar as variáveis) printf(“\nForneca o nome do modelo do automovel: ”). depois é feito o cálculo do preço do carro com o valor do IPI. prFinal. gets (nome). Preço final do automóvel Passo 4 (variáveis auxiliares) 1. Preço do automóvel com o IPI (para se chegar a essa conclusão. IPI. (variáveis de entrada: inicializadas com comandos de leitura) (as outras variáveis não precisam de valores iniciais. pois o IPI. Valor do IPI 2. (uma variável para cada entrada. o preço com o IPI e o preço final serão calculados diretamente) Unisa | Educação a Distância | www. Preço de fábrica do automóvel Passo 3 (dados de saída) 1. printf(“\nForneca o preco de fabrica do automovel: ”).&prFabrica). gerando duas variáveis auxiliares) Passo 5 (declarar as variáveis) char nome[20]. scanf (“%f”.br 101 . o raciocínio foi o seguinte: dado o preço de fábrica.Algoritmos e Linguagem de Programação Passo 2 (dados de entrada) 1. Nome do modelo do automóvel 2. primeiramente calcula-se o preço com o IPI numa variável auxiliar. uma para cada saída. isso foi feito em 2 passos: primeiramente. prFinal).prIPI*0. o valor 1 na parte inteira faz com que seja somado ao preço com IPI o valor do ICMS! Passo 8 (impressão dos resultados) printf(“\nIPI= R$%. no entanto.br . calcula-se o IPI e depois soma-se esse valor ao preço de fábrica para se obter o preço com IPI. prIPI = prFabrica + IPI. Para se chegar ao preço final. printf (“\nO preco final do automovel %s= R$ %.Elisamara de Oliveira Passo 7 (escrever o código para calcular as saídas) Há apenas uma variável de saída. IPI = prFabrica * 0.05.35. 102 Unisa | Educação a Distância | www. nome.2f“. Nesse caso.05). No caso do IPI.2f ”. prFinal = prIPI * 1.IPI.05. primeiramente é necessário calcular o preço com o IPI.unisa. No caso do ICMS. Aqui são apresentadas 2 formas diferentes de se fazer o cálculo de porcentagem. então um trecho de algoritmo a ser construído. foi feito um único cálculo multiplicando-se o preço com IPI por 1.2f ICMS= R$%. h> <string.&prFabrica). printf(“\nIPI= R$%.C: este programa le o nome e o preco de fabrica de varios automoveis e calcula seu preço final. } Passo 10 (fazer o teste de mesa do programa) Suponha os seguintes valores de entrada: FOX 30000. while (1) { printf(“\nForneca o nome do modelo do automóvel (FIM para terminar): ”).2f ICMS= R$%.unisa. */ #include #include #include #include <stdio. gets (nome). getch(). prIPI.h> char nome[20]. fflsuh(stdin).00 FIM Unisa | Educação a Distância | www. int main() { printf(“\nOlha o tanto de imposto que pagamos nos carros!!!”).IPI.prIPI*0. //limpa o teclado para evitar erros na leitura de strings } puts (“\nFim do programa”).05).Algoritmos e Linguagem de Programação Passo 9 (montagem do algoritmo) /* zerokm.35. prFinal.h> <stdlib.05. prFinal = prIPI * 1. prIPI = PrFabrica + IPI.2f ”. float prFabrica.br 103 .00 CIVIC 50000.”FIM”)==0) break.2f“.00 MILLE 12000. scanf (“%f”.00 SCOOTER 10000. prFinal). IPI = prFabrica * 0.nome. return 0. printf (“\nPreco final do automovel %s= R$ %. if (strcmp(nome.h> <conio. printf(“\nForneca o preco de fabrica do automovel: ”). IPI. votos do candidato 3: 5.00 ICMS=2025. votos em branco: 3. 3 è votos para os candidatos 1.3.00 Preco final do automovel MILLE= R$17010.00 ICMS=810.-1.2.3. Votos do candidato 1: 6.3.00 ICMS=675. 2 e 3 0 è voto em branco -1 è fim dos votos Fazer um programa que compute os votos da eleição.2.00 Preco final do automovel FOX= R$42525.5. total de eleitores: 19.00 prIPI 40500.00 MILLE 12000. Passo 1 (ler e entender o problema) Vamos simular a eleição e computar seus resultados. Suponha que não haverá empates.00 IPI= R$ 17500.00 16200.00 IPI 10500.00 Preco final do automovel SCOOTER= R$14175.5 Exemplo da Eleição Existem 3 candidatos a uma vaga no senado.Elisamara de Oliveira nome FOX prFabrica 30000. votos do candidato 2: 3.3.0.3.00 CIVIC FIM 50000.00 13500. a quantidade de votos nulos e brancos e a quantidade de eleitores que participaram da eleição.00 6. Durante a eleição. Esses foram os votos: 0.0.unisa.00 Fim do programa SCOOTER 10000. Resultados: Candidato vencedor: 1 Quantidade de votos brancos: 3 Quantidade de votos nulos: 2 Total de eleitores: 19 Passo 2 (dados de entrada) 1.br .1. forneça o número do candidato vencedor.1.1.1.1.00 prFinal 42525.9.00 IPI= R$ 4200.00 67500.1.00 IPI= R$ 3500.00 4200.00 14175.2.00 3500.00 17500.00 Resultados IPI= R$ 10500.00 ICMS=3375.2.00 17010. votos nulos: 2. os votos são computados eletronicamente através do seguinte código: 1.1. 2. Votos 0.3 è voto nulo 104 Unisa | Educação a Distância | www.00 70875.00 Preco final do automovel CIVIC= R$70875. Contador de votos para o candidato 2 3. Passo 6 (inicializar as variáveis) printf(“\nDigite o seu voto (1. (variável de entrada: inicializada com “scanf”) brancos=nulos=eleitores=cont1=cont2=cont3=0.Algoritmos e Linguagem de Programação Passo 3 (dados de saída) 1. Em C. Total de eleitores Passo 4 (variáveis auxiliares) 1. Candidato vencedor 2. Votos brancos 3. cont1.3 ou 0(branco)): ”). scanf (“%i”.&voto). brancos. cont2. nulos.unisa. Votos nulos 4.2. Contador de votos para o candidato 1 2. cont3. vencedor.br 105 . (contadores: inicializados com zero. eleitores. é possível inicializar várias variáveis com o mesmo valor num único comando de atribuição múltipla!) Unisa | Educação a Distância | www. Contador de votos para o candidato 3 Passo 5 (declarar as variáveis) int int int voto. br . Ao se computar os votos. Basta usar o comando de seleção múltipla “switch”. resta agora obter o candidato vencedor. 3 e 4 foram obtidas. case 2: ++cont2.Elisamara de Oliveira Passo 7 (escrever o código para calcular as saídas) Para se saber quem foi o candidato vencedor. else if ((cont2 > cont1) && (cont2 > cont3)) vencedor = 2. mas de formas diferentes. as saídas 2. Escolha a que achar mais fácil. if (voto == 1) ++cont1. computar os votos: ++eleitores. é necessário.unisa. case 1: ++cont1. switch (voto) { case 0: ++brancos. ++eleitores. else if (voto == 0) ++brancos. break. case 3: ++cont3. Existe outra maneira muito mais prática de realizar essa comparação. break. default: ++nulos. else if (voto == 3) ++cont3. 106 Unisa | Educação a Distância | www. } Note que os dois trechos de código fazem exatamente a mesma coisa. else if (voto == 2) ++cont2. break. break. else ++nulos. if ((cont1 > cont2) && (cont1 > cont3)) vencedor = 1. else vencedor = 3. primeiramente. Veja como fica a solução. brancos). (“\nNumero de votos nulos: %d ”.nulos). break.*/ #include <stdio. brancos. vencedor.nulos). case 1: ++cont1. Unisa | Educação a Distância | www.2.eleitores). vencedor).3 ou 0(branco) -1 finaliza): ”). break. nulos. return 0.c: computa os votos de uma eleição e divulga os números obtidos e o candidato vencedor. case 3: ++cont3. default: ++nulos. else if ((cont2 > cont1) && (cont2 > cont3)) vencedor = 2.&voto). while (1) { printf (“\nDigite o seu voto (1. if (voto==-1) break. printf(“\nNumero de votos nulos: %i ”. (“\nNumero de votos em branco: %d ”.h> int voto.Algoritmos e Linguagem de Programação Passo 8 (impressão dos resultados) printf(“\nO candidato vencedor foi: %i ”. switch (voto) { case 0: ++brancos. ++eleitores. scanf (“%i”. int main () { printf(“\nEleicoes Ficha Limpa – por um Brasil melhor!\n”). } puts(“\nFim do programa”). vencedor). printf(“\nNumero de votos em branco: %i ”. case 2: ++cont2. break.h> #include <conio.br 107 . else vencedor = 3. brancos=nulos=eleitores=cont1=cont2=cont3= 0. printf printf printf printf (“\nO candidato vencedor foi: %d ”. cont2. cont1. } } if ((cont1 > cont2) && (cont1 > cont3)) vencedor = 1. getch().eleitores). printf(“\nNumero de eleitores: %i ”. cont3. brancos). eleitores. Passo 9 (montagem do programa) /* Eleicoes. break. (“\nNumero de eleitores: %d ”.unisa. 1.unisa. -1 eleitores 0 1 2 3 4 5 6 7 vencedor voto 1 2 2 0 2 1 3 cont1 0 1 cont2 0 1 2 cont3 0 brancos 0 nulos 0 Resultados 1 3 2 1 -1 2 O candidato vencedor foi: 2 Numero de votos em branco: 1 Numero de votos nulos: 0 Numero de eleitores: 7 Fim do programa 6. 0. Valor de N 108 Unisa | Educação a Distância | www.Elisamara de Oliveira Passo 10 (fazer o teste de mesa do algoritmo) Suponha os seguintes valores de entrada: 1.br . 3. 2. A série S resultante seria: Passo 2 (dados de entrada) 1.6 Exemplo da Série Numérica Escreva um programa que leia N e calcule e imprima o valor de S dado por: Passo 1 (ler e entender o problema) Vamos simular um determinado valor inicial de N = 5. 2. 2. float termo. Contador de termos 2.br 109 . num. (variável de entrada: inicializada com “scanf”) S=cont=0. Valor de S Passo 4 (variáveis auxiliares) 1. Denominador Passo 5 (declarar as variáveis) int N.Algoritmos e Linguagem de Programação Passo 3 (dados de saída) 1. den.unisa. (o primeiro numerador começa com 1 e o primeiro denominador começa com N) Unisa | Educação a Distância | www. scanf (“%i”. Em C. Passo 6 (inicializar as variáveis) printf(“\nDigite a quantidade de termos da serie: ”). S. é possível inicializar várias variáveis com o mesmo valor num único comando de atribuição múltipla!) num = 1. den = N.&N). cont. Numerador 3. (contadores e somadores: inicializados com zero. 5f \n”. ++num. Cada termo é formado pelo numerador dividido pelo denominador. num. é necessário gerar os N termos da série. cont++) { termo = (float) num / den. for (cont=0. den). --den.br .unisa. } Passo 8 (impressão dos resultados) printf (“\n\nO valor da serie S= %. S = S + termo. 110 Unisa | Educação a Distância | www. printf(“\n %i / %i “.Elisamara de Oliveira Passo 7 (escrever o código para calcular as saídas) Para se calcular a saída. O próximo numerador ganha 1 (soma 1) e o próximo denominador perde 1 (subtrai 1). S). Observe na solução a conversão para “float” do resultado de num/den (o resultado seria inteiro pois envolve operandos inteiros). cont < N. .... scanf(“%d”.. num = 1... cont++) { termo = (float) num / den.. den).. printf(“\nForneca o numero de termos da serie: “).... S).&N).... for (cont=0.. getch()... return 0...5f \n”.Algoritmos e Linguagem de Programação Passo 9 (montagem do programa) /* .. serieS. printf(“\n %i / %i “. + N/1 . num.unisa.. den = N...... } printf (“\n\nO valor da serie S= %.... num...... cont..... S............... } Passo 10 (fazer o teste de mesa do algoritmo) Suponha o seguinte valor de entrada: 4 N 4 cont 0 1 2 3 num 1 2 3 4 den 4 1/4 3 2 1 2/3 3/2 4/1 0 + 1/4 0 + 1/4 + 2/3 0 + 1/4 + 2/3 + 3/2 0 + 1/4 + 2/3 + 3/2 + 4/1 1/4 2/3 3/2 4/1 O valor da serie S= 6....... --den...*/ #include <stdio..h> #include <conio....... S = S + termo. int main( ) { printf(“Gera a serie S \n”)...... den..h> int float N. cont < N..... ++num. termo....c: Gera a serie S assim formada: S = 1/N + 2/N-1 + ..br 111 ......41667 termo S Resultados Unisa | Educação a Distância | www. novamente.h> int X. A minha forte recomendação. 2. Quais os resultados produzidos pelo programa? #include <stdio. consultando os exemplos dados para ajudá-lo(a). Y. Boa sorte! 1. 6.8 Atividades Propostas Vamos praticar um pouco mais agora. começando do zero. aparentemente não poderíamos escrever um algoritmo para resolvê-lo. else printf(“\n%i”. } return 0. Escreva um programa em C que calcule e imprima N números pares. while (Y != 4) { X = X * -1..”.. 4. Pergunte ao usuário quantos números ele deseja (ou seja. O último aluno terá o nome=FIM. Como já foi dito antes. if (X > 0) /* X é positivo? */ printf(“\n%i”. ++Y.-Y).Y). 3. aprendemos a usar o comando repetitivo e a resolver problemas que envolvam flags. Somente depois da sua tentativa é que você deve conferir as respostas.unisa. Um flag em programação representa um valor que é usado para indicar o final da entrada de dados. Flag vem do inglês e significa sinal ou bandeira.Elisamara de Oliveira 6. Escreva um programa em C que leia e imprima o nome e as duas notas de vários alunos. Escreva um programa em C que leia 10 números. X = -1. calcule e imprima a sua soma. Se alguém pede que façamos um programa para ler uma “quantidade indeterminada de números.7 Resumo do Capítulo Caro(a) aluno(a). } 112 Unisa | Educação a Distância | www.br . int main() { Y = 0. um algoritmo é usado para resolver problemas finitos. peça-lhe para fornecer o valor de N). é que você faça os exercícios sozinho(a). main() { numero = 2. X Y Resultados 5.br 113 . for (cont=0. #include <stdio. O programa em C deve ser seguido comando a comando e os valores das variáveis devem ser alterados de acordo com as instruções.Algoritmos e Linguagem de Programação Para que seja possível você acompanhar a execução do programa em C. Faça o teste de mesa do programa seguir e construa a tabela com os valores das variáveis e os resultados do programa. } return 0. } numero cont Resultado Unisa | Educação a Distância | www. numero = numero + 2.unisa. printf(“%i\n”.-numero). cont < 5. cont. cont++) { printf(“%i”. A tabela deve ter uma coluna para cada variável e uma coluna especial para a impressão dos resultados.h> int numero. vamos criar uma “tabela” para fazer o chamado teste de mesa de um programa em C.numero). calcular e imprimir: a) o número de mulheres e o percentual. Fazer um programa para realizar uma pesquisa de opinião sobre um tema de sua escolha.Contra ou 0-Finaliza e o sexo (1=feminino. b) o número de homens e o percentual. Fazer um programa que leia vários valores de ângulos (flag=-1) e verifique a qual quadrante pertence esse ângulo. 114 Unisa | Educação a Distância | www. 2=masculino) dos participantes. calcule e imprima: a) N1 * N2 b) N1 / N2 c) N1 .unisa. 7.N2 d) N1 + N2 e) 10% de N1 f) 25% de N2 g) raiz quadrada de N1 h) raiz quadrada de N2 i) a unidade de N1 j) a dezena de N2 k) o resto da divisão inteira de N1 por N2 l) N1 elevado a 3 m) N2 elevado a 2 n) N1 elevado a N2 8. Fazer um programa que leia vários pares de números N1 e N2 (Flag=N1=0). d) número de votos contra e percentual.br . Devem ser lidas a resposta 1-A favor 2. c) número de votos a favor e percentual.Elisamara de Oliveira 6. calcule e imprima o seu preço final. 1. O valor cobrado pelo estacionamento é: R$ 4. Faça um programa em C para calcular o valor a ser pago pelo período de estacionamento do automóvel.. mas ambas no mesmo programa): 2. mais o valor do IPI = 40% sobre o preço de fábrica. Fazer um programa que leia o NOME. Sabe-se que esse estacionamento cobra hora cheia. conforme a tabela a seguir: Código do Livro A B C D E Categoria Ficção Romance Documentário Audiolivro Técnico Unisa | Educação a Distância | www.. 14.00 para 1 hora de estacionamento. 8. hora e minuto de saída. se passar um minuto ele cobra a hora inteira. R$ 1. Fazer um programa que leia o número de termos desejados e gere as sequências numéricas (uma de cada vez. 32. Usar n1=0 como flag. -4. multiplicação e divisão. 10. Faça um programa que leia o código de um livro (* finaliza) e apresente a categoria do livro.00 para 2 horas de estacionamento.85 50 <= PESO <= 60 18 <= IDADE <= 21 11. Fazer um programa para ler vários pares de números inteiros e calcular sua soma. 4. O usuário entra com os seguintes dados: hora e minuto de entrada.Algoritmos e Linguagem de Programação 9. 13. 2.00 por hora adicional (acima de 2 horas). 12. Faça um programa que leia o NOME de vários modelos de automóveis (flag=NOME=jegue) e o preço de fábrica.unisa. -3.. a ALTURA.br 115 . -1.70 <= ALTURA <= 1. 4. 64.. mais a porcentagem da concessionária = 10% sobre o preço já com o IPI. R$ 6. -2. 16. subtração. ou seja. o PESO e a IDADE de vários candidatas a modelo (flag=NOME=fim) e verifique se elas podem ser aprovadas ou não para serem modelos: 1. O preço final de um automóvel é calculado pelo preço de fábrica. 3. 2 + 4 . 19. Os valores dos coeficientes A.Y).X 116 Unisa | Educação a Distância | www.4 + 4 . dado pela seguinte série: H = 1 . 18. Fazer um programa para gerar todos os números potência de 2 menores que 1000000 e todos os números ímpares menores que 100. B e C serão fornecidos pelo usuário. + 16.. Dica: utilize o tipo básico “long int”. 16. Fazer um programa que leia vários pares de coordenadas X e Y (flag=X=1000) e verifique a qual quadrante pertence esse ponto (X. Fazer um programa para ler uma sequência de números inteiros de 5 dígitos (flag = -1). calcular o seu dígito verificador (DV) e imprimir o número lido e seu DV separado por um hífen.unisa.4 + 4 .br . Quando o DV for 10. Fazer um programa para calcular e imprimir o valor de H. 3 5 7 9 21. O DV é calculado somando-se os 5 dígitos do número. Fazer um programa para calcular as raízes de uma equação do 2º grau. Fazer um programa para calcular a média de um conjunto de números inteiros (flag = -1). deve-se imprimir X. Você deve perguntar se o usuário deseja fornecer outros dados até que ele responda N – não.. Fazer um programa para calcular o valor aproximado de p..8 + 16 .384 225 196 169 144 121 1 17. utilizando os N primeiros termos (N deverá ser lido) da série: = 4 .Elisamara de Oliveira 15. A seta indica o sentido positivo dos eixos. Exemplo: Número lido: 12819 Número impresso: 12819 . 20.. dividindo essa soma por 11 e obtendo o resto dessa divisão inteira.. br 117 . Se o mês não existir. 29.Algoritmos e Linguagem de Programação 22. Faça um programa que leia a distância em quilômetros percorrida por vários carros (flag=0). No final. Unisa | Educação a Distância | www. Fazer um programa que leia vários números que representem um determinado número de mês do ano (flag=-1). sabendo que: a) deverão ser lidos o CPF e a renda anual de cada contribuinte (último contribuinte tem o CPF = 0). imprima 0) e o valor a ser pago com o desconto. selecione e imprima o maior e o menor de todos. b) o IR deverá ser calculado de acordo com a tabela: Renda Anual até 5000.01 até 50000. Números palíndromos são aqueles que têm o mesmo valor se lidos da esquerda para a direita ou da direita para a esquerda. 838 etc. 232. 26. 28. seu preço de CUSTO.00 de 5000. 15% se for acima de 40 unidades e 25% se for acima de 100 unidades. 1001. a quantidade de combustível consumida e calcule e imprima o consumo médio de combustível (consumo= distância/combustível). 24. após terminar a leitura de todos os números. escreva o nome do mês por extenso e o número de dias. Certo produto custa R$ 100. imprima uma frase dizendo se eles são iguais.01 Alíquota para cálculo do IR isento 10 % 15 % c) deverá ser impressa uma frase com o CPF do contribuinte.00 e é concedido um desconto de 10% se a compra for acima de 10 unidades. Fazer um programa para calcular o Imposto de Renda (IR) de um grupo de contribuintes. Fazer um programa que leia vários números inteiros de 4 dígitos (flag= -1) e imprima o número lido e uma frase dizendo se ele é palíndromo ou não. o valor do desconto (se não houver desconto. como: 44.00 acima de 50000. seu preço de VENDA e a QUANTIDADE vendida do produto (último conjunto lido tem NOME do produto=“fim”) e calcule o lucro obtido com o produto. 25. Faça um programa que leia a quantidade desejada por vários clientes (flag=quantidade=0) e calcule e imprima o preço sem desconto. qual é o maior e qual é o menor e. 27. Fazer um programa que leia vários conjuntos de dados com: o NOME de um produto.unisa. o programa deve imprimir o NOME do produto que deu mais lucro. Faça um programa que leia vários pares de valores N1 e N2 (flag=N1=0). Faça um programa que leia várias temperaturas em graus Fahrenheit (flag=1000) e calcule e imprima a temperatura em graus Celsius (Celsius = (Fahrenheit-32) * (5/9)). 23. imprimir uma frase de erro. sua renda anual e o valor do IR. preço normal de etiqueta sem juros Imprimir todos os valores de acordo com a escolha do usuário. Fazer um programa que leia vários números inteiros (flag=0) e verifique se o número é primo ou não. Um número primo só é divisível por 1 e por ele mesmo (sugestão: tente dividir o número por 2.br . 3 ou 4 5 ou 6 7 8 ou 9 Qualquer outro código Classificação Alimento não perecível Alimento perecível Vestuário Higiene pessoal Limpeza e utensílios domésticos Inválido 118 Unisa | Educação a Distância | www. ele não é primo. 31.. oferecer as formas de pagamento. utilizando a seguinte tabela: Código do Produto (CP) 1 2.Elisamara de Oliveira 30.00 99. Código da forma de pagamento 1 2 Condição de pagamento À vista.. se alguma divisão resultar em zero. até o valor do número.unisa. Rejeitar formas de pagamento inválidas. 5.). 32. Faça um programa que apresente o menu de livros à venda numa livraria: Código do Livro 1 2 3 0 Título Informática para Concursos Java como Programar Use a cabeça: C# finaliza Preço 87.. com 10% de desconto Em 2 vezes. Faça um programa que leia o código de um determinado produto (0 finaliza) e mostre a sua classificação.00 Para cada opção válida de livro (rejeitar escolhas inválidas).00 219. 3. 4.. // cor de fundo azul e letras azuis claras printf (“\n\n\n”).unisa. getch(). getch(). // limpa a tela system (“color 0B”). system (“cls”). // cor de fundo roxa e letras lilases brilhantes printf (“\n\n\t\t\tTESTE: LILAS”). system (“cls”). // limpa a tela system (“color 0E”). getch(). // cor de fundo vermelha e letras vermelhas brilhantes printf (“\n\n\t\t\tTESTE: VERMELHO”).br 119 .h> OUTROS PROGRAMAS EM C /*CoresnoDevC. // cor de fundo preta e letras amarelas brilhantes printf (“\n\n\t\t\tTESTE: AMARELO”). // limpa a tela system (“color 4C”). // limpa a tela system (“color 1B”). system (“cls”). } Unisa | Educação a Distância | www.c: mostra como usar cores de texto e de fundo no DevC++ */ int main() { system (“cls”). system (“cls”).h> #include <conio.7 #include <stdio. getch(). getch(). // cor de fundo preta e letras azuis brilhantes printf (“\n\n\t\t\tTESTE: AZUL”). system (“color /? |more”). // limpa a tela system (“color 5D”).h> #include <stdlib. } ++contnum. quadrado. num=num+2) { printf(“%i\t”. contnum=1.MAXINT). contnum=0. int num. contnum=1. printf(“\n =============================================\n\n”). . num+=2) { printf(“%i\t”.h> #define MAXINT 100 #define MAXLONG 1000000 #define clrscr(). if (num > MAXINT) break. } 120 Unisa | Educação a Distância | www. for (.num).Elisamara de Oliveira //for. for (num=1. num<=MAXINT. ) { printf(“%i\t”.unisa. MAXINT). } getch().num). int main() { clrscr(). for ( . } clrscr(). printf(“\n ====================================================\n\n”).ilustra o uso do comando for e de #define #include <stdio. contnum. printf(“\n Sequencia de numeros pares menores que %i”. printf(“\n ===========================================\n\n”).num). num=num+3. printf(“\n Sequencia de numeros impares menores que %i”. system(“cls”).h> #include <conio. num=0. clrscr(). printf(“\n Sequencia de numeros multiplos de 3 menores que %i”.br .MAXINT). num=3. num<=MAXINT. long int numlong. if (contnum==20) { getch().c . } Unisa | Educação a Distância | www.numlong). } getch().Algoritmos e Linguagem de Programação getch(). numlong=numlong*2) { printf(“%ld\t”.quadrado).MAXLONG). num = num + 3. printf(“\n ======================================================\n\n”).num). quadrado<=MAXLONG. int main() { printf(“\n Sequencia de numeros multiplos de 3 menores que 500”). for (numlong=2. num=3. printf(“\n Sequencia de numeros potencia de 2 menores que %ld”. printf(“\n ========================================\n\n”).MAXLONG). for (numlong=1.h> #include <conio. quadrado=1. if (contnum==20) { getch().h> int num. printf(“%ld\t”. contnum=0. printf (“\n\n\n\n getch(). } getch(). contnum.c: gera multiplos de 3 menores que 500 */ #include <stdio.unisa. clrscr(). } ++contnum. return 0. printf(“\n Sequencia de quadrados perfeitos menores que %ld”. Fim do programa”). contnum=0. } /*Multiplos3. clrscr(). printf(“\n ====================================================\n\n”). while (num<500) { printf(“%i\t”. numlong<=MAXLONG. numlong++) { quadrado=numlong*numlong.br 121 . else printf (“\n Os nomes são iguais. 122 Unisa | Educação a Distância | www. return 0.str2) > 0) printf (“\n %s vem depois de %s “. str2). bye! getch(). opcao. scanf (“%i”. int num1.br . &opcao). if (strcmp(str1.”).h> #include <conio.str2) < 0) printf (“\n %s vem antes de %s “. getch(). printf(“\n 0..h> #include <stdio. else if (strcmp(str1. break.. gets(str2). &num1).Compara numeros “). str1. scanf(“%d”. case 2: printf (“\n Forneca um numero inteiro: “). getch().unisa. printf (“\n Forneca o segundo nome: “). str2).h> char str1[20]. } strings e nu- Pressione ENTER. if (opcao == 0) { printf (“\n Bye.”).Finaliza “). gets(str1).Elisamara de Oliveira printf (“\n\n\n\n Fim do programa”). break. str2[20].Compara strings “). printf(“\n 2. printf(“\n\n Escolha sua opcao: “). str1. num2. int main() { while ( 1 ) { printf(“\n 1. } /*Compara.c: mostra como se apresenta um menu e se comparam meros */ #include <stdlib. switch (opcao) { case 1: printf (“\n Forneca o primeiro nome: “).h> #include <string. scanf(“%d”. } // fim do switch } // fim do while (1) return 0. float fatura=0. getch(). precocomdesc. else printf (“\n Os numeros sao iguais! “). int main() { while (1) { limpa. 500. &num2). if (num1>num2) printf (“\n %d eh maior que %d “.00 “). system(“cls”). break. total3=0.Camera R$ printf(“\n-1 Finaliza “). float preco. default: printf (“\n Opçao de menu invalida.h> #include <stdlib. else if (num2>num1) printf (“\n %d eh maior que %d “.00 “).Algoritmos e Linguagem de Programação printf (“\n Forneca outro numero inteiro: “). int total1=0. printf(“\nNas compras acima de printf(“\n1. 950.Computador .Celular R$ printf(“\n2. getch(). 4 unidades ganhe 10%% de desconto!! “).br 123 . int opcao.h> #include <conio.00 “). qtde. desc. 600. num2. num1. num1). total2=0. } // fim do main() //loja. printf(“\nLojinha da 25 “).c: oferece 3 produtos e realiza as vendas com desconto #include <stdio.unisa. Unisa | Educação a Distância | www. “).h> #define limpa.R$ printf(“\n3. num2). printf(“\nVc obteve R$ %.&qtde). scanf(“%i”. if (qtde > 0) { total2=total2+qtde. } } else printf(“\nQuantidade invalida. precocomdesc = preco .2f”. printf(“\nVc obteve R$ %.00 * qtde.2f”.desc. scanf(“%i”.preco). break.2f”.2f de desconto e vai pagar R$ %.10. case 2: printf(“\nVc esta comprando computadores!!!”). 124 Unisa | Educação a Distância | www. Venda cancelada. scanf(“%i”. if (qtde > 0) { total1=total1+qtde.precocomdesc).Elisamara de Oliveira printf(“\nEscolha sua opcao: “).unisa. preco=500. if (qtde >=5) { desc = preco * 0.2f de desconto e vai pagar R$ %.&opcao). fatura=fatura+precocomdesc. preco=950.&qtde). switch (opcao) { case 1: printf(“\nVc esta comprando celulares!!!”).desc.br .10.preco). fatura=fatura+precocomdesc. fatura=fatura+preco. if (qtde >=5) { desc = preco * 0. printf(“\nQuantos celulares vc deseja?”). precocomdesc = preco .precocomdesc). printf(“\nQuantos computadores vc deseja?”).”).2f”. } else { printf(“\nSua compra totalizou R$ %.desc. fatura=fatura+preco.desc.00 * qtde. if (opcao == -1) break. } else { printf(“\nSua compra totalizou R$ %. printf(“\n\n\nFaturamento da Lojinha 25 R$ %.precocomdesc). if (qtde > 0) { total3=total3+qtde.br 125 .00 * qtde. total2). } } else printf(“\nQuantidade invalida. precocomdesc = preco .2f”. total3). printf(“\nQuantas cameras vc deseja?”).2f”. preco=600. Venda cancelada.Algoritmos e Linguagem de Programação } else printf(“\nQuantidade invalida.”). //while } printf(“\n\n\nQuantidade vendida de celulares= %i”.”). if (qtde >=5) { desc = preco * 0. fatura=fatura+precocomdesc.desc. fatura). Venda cancelada. scanf(“%i”.unisa.2f”. } }//switch getch(). } else { printf(“\nSua compra totalizou R$ %. total1).&qtde).10. case 3: printf(“\nVc esta comprando cameras!!!”). printf(“\n\n\nQuantidade vendida de cameras= %i”. Unisa | Educação a Distância | www.preco).desc. printf(“\nVc obteve R$ %. fatura=fatura+preco. break. default: printf(“\n\nOpcao invalida\n”). break. printf(“\n\n\nQuantidade vendida de computadores= %i”.2f de desconto e vai pagar R$ %. br . //para a tela return 0.Elisamara de Oliveira printf(“\n\n\nFim do programa”). getch().unisa. }//main printf(“\n\n\nFim do programa”). }//main 126 Unisa | Educação a Distância | www. getch(). //para a tela return 0. 3. em que você armazenará os programas em C deste curso. No DevC++. Faça o download gratuito do compilador Dev-C++ para que possa começar a escrever seus programas. Crie uma pasta com seu nome no diretório do seu computador. No sistema Windows. <Iniciar> <Programas><Dev-C++> 4. seguindo as instruções: Entre no Windows Explorer ou na pasta “Meu computador” do desktop: Clique em <Arquivo> <Novo> <Pasta> Substitua o nome “nova pasta” criado.1 Estudo Dirigido PRÁTICA EM LABORATÓRIO 1. pelo seu primeiro nome 2. crie um novo arquivo <Arquivo> <Novo> <Arquivo Fonte> Unisa | Educação a Distância | www. localize o compilador Dev-C++ e execute o programa.8 8.br 127 .unisa. Vá para o diretório E:\EXECUTAVEIS LIBERADOS\seunome e salve seu arquivo como nota.c e vá salvando seu programa enquanto edita. getch(). Compile e execute seu programa. Clique em <Executar> <Compilar&Executar> Execute o programa várias vezes para diferentes valores.h> #include <conio.¬a).h> float nota. if (nota >= 6.c: le a nota de um aluno e verifica se ele foi aprovado ou reprovado */ #include <stdio. voce foi reprovado.”). Edite o seguinte programa no editor. “.nome). /* nota. int main() { printf (“\nQual eh seu nome? “). printf (“\nDigite sua nota final: “)..unisa.br . gets(nome). scanf(“%f”. return 0. Clique em <Arquivo> <Salvar Como>. 7. voce foi aprovado! “. A qualquer momento que desejar. else printf (“\n%s.. printf(“\n\nFim do programa. 128 Unisa | Educação a Distância | www. Conserte os erros que o compilador apontar antes de executar. salve o seu arquivo.Elisamara de Oliveira 5. char nome[20]. } 6.0) printf (“\n%s.nome). Algoritmos e Linguagem de Programação 8. Unisa | Educação a Distância | www.c: Este programa seleciona o menor numero em uma sequencia de numeros inteiros */ #include <stdio. salve-o. &valor). menor). int main () { printf (“\nDigite um numero inteiro: “). while (valor != -1) { if (valor < menor) menor = valor. /* menor. Salve seu arquivo como menor. menor.unisa. menor = valor.br 129 .c. compile-o e execute-o seguindo os passos ensinados no programa anterior. Edite o programa C a seguir. printf(“\n\nFim do programa”).h> #include <conio. getch(). return 0. } “). scanf (“%i”. } printf (“\nO menor valor lido foi: %i “. printf(“\nDigite um numero inteiro (–1 para terminar): scanf (“%i”. &valor).h> int valor. Para abrir um arquivo novo: <Arquivo> <Novo><Arquivo Fonte>. que são seus comandos escritos em inglês. De acordo com nossa metodologia. já esteja conseguindo fazer seus primeiros programas de computador nessa linguagem tão moderna.br. você aprendeu a escrever os primeiros algoritmos utilizando o PortuCê. Espero que você não pare por aqui. Há muitos problemas do mundo real que esperam por soluções automatizadas. você já tem a base para encarar desafios maiores e se tornar um grande desenvolvedor. trocando informações. caro(a) aluno(a). em seguida. mas sua capacidade de aprendizado e de superação é maior ainda! Como falamos no capítulo inicial. que é a linguagem C.unisa. já pudemos ir para o computador fazer nossos primeiros testes. avançada e instigante. pois o mercado profissional é amplo e vasto e conta conosco! Qualquer dúvida. como o Java e o C#. então. uma pseudolinguagem que o(a) ajudou a quebrar a primeira barreira da linguagem C.br 131 . entre em contato por e-mail comigo:
[email protected] CONSIDERAÇÕES FINAIS E chegamos ao final deste curso básico de Algoritmos e Linguagem de Programação C! Espero que você. Assim. no mundo profissional da nossa área. O desafio é grande.com. aprendendo juntos e trabalhando bastante. Rapidamente passamos à tradução desses algoritmos para a linguagem-alvo e. aluno(a). a linguagem C inspirou e foi a base de plataformas e linguagens de programação modernas e atuais. Unisa | Educação a Distância | www. A gente se encontra. 17. A série de números começa com 1 (primeiro termo). Você deve tentar fazer sozinho(a) primeiramente. Qual o padrão de comportamento utilizado para gerar as sequências: 1. Seu fim deve ser determinado por uma condição do tipo “gerar os 10 primeiros termos da série” ou “gerar todos os termos da série menores que 100”. 25 .. aqui você encontrará respostas de uma parte dos exercícios das atividades propostas. antes de olhar a resposta. 21. A série de números começa com 1 (primeiro termo). 5. O segundo termo também é 1. caso restem dúvidas. 9. 2.br 133 .. Para se gerar qualquer um dos outros termos da série.RESPOSTAS COMENTADAS DAS ATIVIDADES PROPOSTAS Caro(a) aluno(a).. use os chats e fóruns para solicitar a ajuda de seu professor! Boa sorte! Capítulo 1 1. basta somar 4 ao número imediatamente anterior. 8. basta somar os dois termos imediatamente anteriores: Exemplos: 1 (primeiro termo) + 1 (segundo termo) =2 (terceiro termo) 1 (segundo termo) + 2 (terceiro termo) = 3 (quarto termo) 2 (terceiro termo) + 3 (quarto termo) = 5 (quinto termo) Esta é uma série infinita.. mas. Para se gerar qualquer um dos outros termos da série. Os outros exercícios você já tem condições de resolver sem ajuda. 3. 1. 21. 34 . 1. 5. Seu fim deve ser determinado por uma condição do tipo “gerar os 10 primeiros termos da série” ou “gerar todos os termos da série menores que 100”. Unisa | Educação a Distância | www. Esta é uma série infinita. conhecida como série de Fibonacci.unisa. 13. 13. 3. participe dos chats e dos fóruns com seu professor! /* notas. Para isso. analise e reflita. uma para a nota da prova 1 e outra para a nota da prova 2.2f e a sua 2a nota foi: %1. O exercício pede que você escreva um algoritmo que leia e imprima o nome e as duas notas de um aluno.0) imprima (“Voce foi aprovado! “).¬a2).¬a1). nome. imprima (“Digite a primeira nota do aluno: “). Para a solução desse problema.2f “. real nota1. por exemplo. imprima (“Digite a segunda nota do aluno: leia(“%f”. nota2. 134 Unisa | Educação a Distância | www. pois o aluno pode tirar uma nota 7.5. imprima (“%s. imprima (“Fim do programa”). Isso é simples: basta somar as duas notas e dividir a soma por 2.nota1. Caso haja dúvidas.. caso contrário..”). Você deve escrever um comando que verifique se a média calculada no exercício anterior é maior ou igual a 7. O nome é uma cadeia de caracteres e as notas são do tipo real. você deve usar o comando condicional “se”. Veja a solução completa.Elisamara de Oliveira Capítulo 3 1. } 2. sua 1a nota foi: %1.c: programa que le e imprime 2 notas */ caractere nome[20]. Veja a solução: se (media >= 7.br . vamos imprimir uma frase dizendo que o aluno foi aprovado. Caso a média seja superior ou igual a 7. principal() { imprima (“Qual eh o seu nome? leia (“%s”. imprimimos uma frase dizendo que foi reprovado. “). Observe os parênteses envolvendo a soma das duas notas! media = (nota1 + nota2) / 2. “). leia (“%f”. Você deve escrever apenas o comando que calcule a média das duas notas lidas no exercício anterior.nome). senão imprima (“Voce foi reprovado.nota2). são necessárias apenas 3 variáveis: uma para o nome do aluno.unisa. independentemente dos valores de B1. nesse trecho.. imprima (“Digite a primeira nota do aluno: “).¬a1).c: programa que calcula a media de 2 notas e verifica a aprovacao do aluno */ caractere nome[20]. senão imprima (“%s voce foi reprovado. nota2. 5. Vamos repetir o trecho de comandos “se” aninhado e depois resolver cada uma das situações propostas. calcula a média das notas e imprime uma frase dizendo se ele foi aprovado (média maior ou igual a 7.unisa. Você terá escrito um algoritmo que lê o nome e as duas notas de um aluno. B2 e B3! Unisa | Educação a Distância | www. “). que temos apenas 2 comandos: um comando “se” que possui outros comandos “se” dentro dele e o comando C5. “). } imprima(“Fim do programa “). se (media >= 7. imprima (“Digite a segunda nota do aluno: leia(“%f”.”.. media.¬a2). por isso. Aqui você deve acrescentar ao algoritmo inicial os comandos para cálculo da média e critérios de aprovação! Dessa maneira. será sempre executado. nome).Algoritmos e Linguagem de Programação 4. leia (“%f”.nome).0) ou reprovado. o comando C5 está fora do ninho de comandos “se”. principal() { imprima (“Qual eh o seu nome? leia (“%s”. a solução fica completa. ou seja.nome). media = (nota1 + nota2) / 2. /* media.0) imprima (“%s voce foi aprovado! “. Observe. real nota1.br 135 . B2= Falso e B3 não precisa ser definido. o “senão” do primeiro “se” será executado e a condição do segundo comando “se” será avaliada. Finalizado o ninho de comandos “se”. o comando C1 do primeiro “se” será executado e o ninho de comandos “se” será finalizado (lembre-se que o “senão” não poderá ser executado. o “senão” do primeiro “se” será executado e a condição do segundo comando “se” será avaliada. o próximo comando a ser executado é o C5. Resposta: C1 e C5 b) Se B1 é falso. Resposta: C3. o próximo comando a ser executado é o C5. o segundo “se” será executado e a condição do terceiro comando “se” será avaliada. o comando C2 do terceiro “se” será executado e o ninho de comandos “se” será finalizado. Dado um conjunto de respostas “sim” ou “não” de várias pessoas e seu sexo (F=feminino. 136 Unisa | Educação a Distância | www. Como B3 é verdadeiro. o segundo “se” será executado e a condição do terceiro comando “se” será avaliada. o “senão” do terceiro “se” será executado. Finalizado o ninho de comandos “se”. Finalizado o ninho de comandos “se”. você deve escrever comandos em PortuCê para calcular: a) o número de mulheres que responderam SIM se (sexo == ‘F’ e resposta == “sim”) ContMulSim = ContMulSim + 1. o ninho de comandos “se” será finalizado. M=masculino). o “senão” do primeiro “se” será executado e a condição do segundo comando “se” será avaliada. C4 e C5 c) Se B1 é falso. Como B2 é verdadeiro.unisa. pois a condição “se B1” foi avaliada como verdadeira!). ou seja. 6.br . Como B3 é falso. Resposta: C2 e C5 d) Se B1 é falso. Como B2 é falso e não existe o “senão” do segundo “se”. o único comando a ser executado é o C5! Resposta: B1 = Falso. os comandos C3 e C4 serão executados e o ninho de comandos “se” será finalizado. Finalizado o ninho de comandos “se”. Como B2 é verdadeiro. o próximo comando a ser executado é o C5. b) o número de homens que responderam NÃO se (sexo == ‘M’ e resposta == “nao”) ContMulSim = ContMulSim + 1.Elisamara de Oliveira a) Se B1 é verdadeiro. Por exemplo.Algoritmos e Linguagem de Programação c) o número de mulheres e homens que responderam NÃO se (resposta == “nao”) ContNao = ContNao + 1. o comando “L=0” será executado e o algoritmo será finalizado! Resposta: L=0 Unisa | Educação a Distância | www. As comparações com “F”. “M”.7 . é claro. Se o programador quiser que o programa aceite outros tipos de grafia envolvendo letras maiúsculas e minúsculas. a condição do comando “se” deve ser avaliada. escrever as respostas exatamente dessa forma. o trecho da letra a ficaria assim: se ( (sexo==’F’ ou sexo==’f’) e (resposta==“sim” ou resposta=“SIM”) ) 7. Como esta não é uma condição simples. vamos analisá-la por partes.br 137 .7 > 5 ?) como 4. o resultado é Falso. Atenção! Todos os contadores utilizados nos trechos de algoritmo devem ser previamente inicializados com 0 (zero). isso deve ser incluído no código. Qual o valor de L após a execução desse algoritmo? Após a inicialização das variáveis. lembrando que 0 é avaliado como Falso e qualquer outro valor é avaliado como Verdadeiro.7 não é maior que 5.5 + 3..unisa. 4. C é Falso (X+Y > 5) é (1.2 = 4. “sim” e “nao” só vão funcionar se o usuário.. O resultado da expressão fica assim: Falso ou Falso ou Verdadeiro que é Verdadeiro! Como a condição do comando “se” foi avaliada como verdadeira. para aceitar “F” ou “f”. ok? Ficaria assim: se (renda<= 4) ++contClasseC.br . Atenção! Todos os contadores utilizados nos trechos de algoritmo devem ser previamente inicializados com 0 (zero). Vamos à solução dos trechos de algoritmo: a) o total de homens se (sexo == ‘H’ ou sexo == ‘h’) ++contHomens. sabendo-se que os seguintes dados foram pedidos aos cidadãos: SEXO (‘H’= homem. Você deve escrever os trechos de algoritmo em PortuCê que ajudem o IBGE a fazer o censo populacional de certa cidade. O trecho da letra c pode ser escrito em 3 comandos “se” separados. Você deve escolher aquele que você considera mais fácil de entender para usar.Elisamara de Oliveira 8. senão se (renda <= 20) ++contClasseB.unisa. ‘M’= mulher) e RENDA (número de salários-mínimos – sm). se (renda > 4 e renda <= 20) ++contClasseB. se (Renda > 20) ++contClasseA. b) o total de mulheres se (sexo == ‘M’ ou sexo == ‘m’) ++contMulheres. c) o total de pessoas da classe C (até 4 sm). senão ++contClasseA. da classe B (até 20 sm) e da classe A (acima de 20 sm) se (renda <= 4) ++contClasseC. 138 Unisa | Educação a Distância | www. que não foi aprovada. senão { imprima (“reprovada no quesito altura”). aprovada = 0. Você deve modificar o exercício anterior para que uma frase seja impressa após a verificação de cada quesito dizendo se a candidata foi aprovada ou não em cada um deles e uma frase final dizendo se foi aprovada ou não como modelo. caso contrário. senão imprima(“Candidata reprovada”). PESO: de 48. } se (aprovada) imprima(“Candidata aprovada”). ele somava 1 ao contador. Unisa | Educação a Distância | www. se (altura >= 1. a candidata estaria aprovada. unindo-os pelo operador lógico “e”. É muito simples. deve ser impressa uma frase dizendo que ela foi aprovada. Essa variável foi inicializada com “verdadeiro” (1) e somente no caso de algum quesito ser reprovado.85) e (peso >= 48 e peso <= 60) e (idade >=17 e idade <= 21) ) imprima(“Candidata aprovada”).”).0 Kg e IDADE: de 17 a 21 anos. essa variável passaria a ter o valor “falso” (0). Se os dados da candidata corresponderem aos limites anteriores. } se (idade >=17 e idade <= 21) imprima(“quesito idade aprovado!”) senão { imprima(“reprovada no quesito idade”). } se (peso >=48 e peso <=60) imprima(“quesito peso aprovado!”) senão { imprima(“reprovada no quesito peso. Fornecidos os dados das candidatas a modelo. ou seja. indicando a reprovação da candidata. aprovada = 0. senão imprima(“Candidata reprovada”). você deve escrever um trecho de algoritmo para verificar se os dados se enquadram nos seguintes limites: ALTURA: de 1. Mas existem outras soluções.unisa.0 a 60. no caso de algum “senão” ser executado. aprovada = 0. Uma delas foi criada por um aluno que usou um contador: cada vez que um quesito era aprovado.70 e altura <= 1.70 e altura <= 1. teria sido reprovada. basta checar cada um dos quesitos num único comando “se”. claro.br 139 .85) imprima (“quesito altura aprovado!”). se o contador fosse igual a 3.85 m. aprovada = 1. Observe a estratégia que eu utilizei para saber se a candidata foi reprovada em algum quesito: eu usei uma variável inteira que funciona como uma variável lógica “aprovada”. caso contrário. a candidata será aprovada.70 a 1. 10. somente se todos os quesitos forem verdadeiros.Algoritmos e Linguagem de Programação 9. se ( (altura >= 1. no final. O uso do “e” indica que. area. Passo 9: montar o algoritmo /*Exerc411.c: Le o comprimento e a largura de uma sala e calcula sua area e perimetro*/ real compr. area.largura . area = compr * larg. &compr). Passo 1: ler e entender Passo 2: variáveis de entrada . leia(“%f”. &compr). perimetro.perímetro da sala . perimetro = (2*compr) + (2*larg). imprima (“Digite a largura da sala: “).comprimento . imprima (“Digite a largura da sala: “). imprima(“A sala tem %f de area e %f de perimetro “. Passo 3: variáveis de saída Passo 4: variáveis auxiliares Passo 5: declarar todas as variáveis Passo 6: inicializar as variáveis Passo 8: imprimir os resultados 140 Unisa | Educação a Distância | www. &larg). Passo 7: calcular as saídas area = compr * larg.área da sala . imprima(“A sala tem %f de area e %f de perimetro “. larg. perimetro = (2*compr) + (2*larg).br . perimetro). leia(“%f”. leia(“%f”.unisa. principal () { imprima (“Digite o comprimento da sala: “).Elisamara de Oliveira Capítulo 4 1. area.não tem real compr. area. leia(“%f”. imprima (“Digite o comprimento da sala: “). perimetro. larg. &larg). 5 area 0 perimetro Saída Tela 10.0 area 12. Passo 10: testes de mesa compr 2.0 de perimetro Saída Tela compr 0 larg -1.0 A sala tem 0 de area e -2. O certo seria fazer uma consistência dos dados. imprima (“Digite a cotacao do dolar: “).0 -2.0 de perimetro Nesses dois testes de mesa. leia(“%f”. Passo 1: ler e entender Passo 2: variáveis de entrada .unisa. Passo 3: variáveis de saída Passo 4: variáveis auxiliares Passo 5: declarar todas as variáveis Passo 6: inicializar as variáveis Unisa | Educação a Distância | www.0 perimetro A sala tem 12. digamos.5 larg 5.br 141 . mas isso não é importante agora. &dolares). podemos observar um comportamento esperado para dados válidos e um comportamento estranho para dados não esperados. cotacao. O importante. é você conseguir encontrar a solução sem se preocupar com usuários. Passo 7: calcular as saídas reais = dolares*cotacao.valor em dólares . reais. leia(“%f”.5 de area e 10. } imprima(“Fim do programa”).não tem real dolares. &cotacao). já que não faz sentido ter valores negativos nem o valor zero para o comprimento e largura das paredes de uma sala.valor em reais . caro(a) aluno(a0.Algoritmos e Linguagem de Programação perimetro).cotação do dólar . imprima (“Digite o valor em dolares a ser convertido para reais: “). 3. pouco honestos. 00 em dólares corresponde a R$ 1660.00 Saída Tela O valor 1000. leia(“%f”. reais). reais). Passo 9: montar o algoritmo /*Exerc413. &dolares).00 reais 1660.66 O valor 1000. dolares.00 Saída Tela dolares 1000.75 reais 1750.br . reais = dólares*cotacao. leia(“%f”. principal () { imprima (“Digite o valor em dolares a ser convertido para reais: “). &cotacao). imprima(“Fim do programa”). cotacao. } Passo 10: testes de mesa dolares 1000.c: Le o valor em dolares e a cotacao do dolar e calcula o valor convertido para reais*/ real dolares.00 cotacao 1.ângulo θ 142 Unisa | Educação a Distância | www.00 7. imprima(“O valor %f em dolares corresponde a R$ %f”. imprima (“Digite a cotacao do dolar: “).unisa.00 cotacao 1. Passo 1: ler e entender Passo 2: variáveis de entrada .v0 . dolares. reais.00 em dólares corresponde a R$ 1750.Elisamara de Oliveira Passo 8: imprimir os resultados imprima(“O valor %f em dolares corresponde a R$ %f”. g.Algoritmos e Linguagem de Programação Passo 3: variáveis de saída . &v0). S). mas aqui vai a dica: a função que calcula o seno é sin(angulo_em_radianos) e o ângulo deve estar em radianos! S = ((v0 * v0) / g) * sin (2*teta). você teria que perguntar ao seu professor. algo importante seria saber qual operador do PortuCê calcula o seno de um ângulo. &v0). teta. S).c: Le o valor de v0 e do ângulo e calcula o alcance de um projetil*/ real v0. Passo 4: variáveis auxiliares Passo 5: declarar todas as variáveis Passo 6: inicializar as variáveis Passo 8: imprimir os resultados Passo 9: montar o algoritmo /*Exerc417. imprima (“Digite o valor de v0: “). g. imprima(“O alcance do projetil eh %f “. leia(“%f”. g. Nesse caso. &teta). que é o alcance do projétil .br 143 .8. imprima (“Digite o angulo teta em radianos: “). S. g = 9.S.unisa. imprima(“Fim do programa”). que é a gravidade real v0. leia(“%f”. leia(“%f”. g = 9. principal () { imprima (“Digite o valor de v0: “). &teta). imprima (“Digite o angulo teta em radianos: “). imprima(“O alcance do projetil eh %f “.8. Passo 7: calcular as saídas Aqui. S. teta. Unisa | Educação a Distância | www. } S = ((v0 * v0) / g) * sin (2*teta). leia(“%f”. desconto.não tem real precoini. dados os ângulos mais comuns.Elisamara de Oliveira Passo 10: testes de mesa Para procedermos ao teste de mesa.67 Passo 1: ler e entender Passo 2: variáveis de entrada . imprima (“Digite o valor do produto “). precofinal. mas.br .0 v0 300.8 g 9. para facilitar a nossa vida. Passo 5: declarar todas as variáveis Passo 6: inicializar as variáveis Passo 3: variáveis de saída 144 Unisa | Educação a Distância | www.preço do produto .preço final com desconto Passo 4: variáveis auxiliares .67 Saída Tela O alcance do projetil eh 0 Saída Tela O alcance do projetil eh 9183. leia(“%f”. &precoini).0 9. teta 3. temos que recorrer aos valores do seno.785 g 9.14 e que Pi corresponde a um ângulo de 180 graus: v0 300. seguem os valores nas tabelas a seguir.8 S 0 S 9183. considerando que π ou Pi = 3.desconto .unisa. primeiramente.14 teta 0. precofinal. } imprima (“Digite o valor do produto “).unisa. precofinal = precoini – desconto.Algoritmos e Linguagem de Programação Passo 7: calcular as saídas desconto = precoini * 0. imprima(“Fim do programa”). precofinal). imprima(“Preço inicial do produto R$ %f “. precofinal). precoini). precofinal = precoini – desconto. imprima(“Preco inicial do produto R$ %f “. imprima(“Preco final do produto com desconto R$ %f “. precoini).05. desconto).c: Le o valor de um produto. concede desconto de 5% e apresenta o preço com desconto e o desconto */ real precoini. desconto). Passo 8: imprimir os resultados Unisa | Educação a Distância | www. Passo 9: montar o algoritmo /*Exerc419. imprima(“Preço final do produto com desconto R$ %f “. desconto.br 145 . imprima(“Valor do desconto R$ %f “. imprima(“Valor do desconto R$ %f “. leia(“%f”. principal () { desconto = precoini * 0. &precoini).05. 00 precofinal 950. // valor de B eh copiado para A B = auxA. 146 Unisa | Educação a Distância | www.não tem Passo 4: variáveis auxiliares . Passo 1: ler e entender Passo 2: variáveis de entrada -A -B Passo 3: variáveis de saída .00 Preco inicial do produto R$ 300.variável para guardar o valor de A Passo 5: declarar todas as variáveis inteiro A. B). B.00 Preco final do produto com desconto R$ 950.00 desconto 15. &A).00 11. auxA = A.c: Le dois inteiros A e B e troca seus valores */ inteiro A. A. B.00 precofinal Saída Tela 285. auxA.br . auxA.00 Preco inicial do produto R$ 1000.00 Preco final do produto com desconto R$ 285. Passo 6: inicializar as variáveis imprima (“Digite o valor do primeiro numero inteiro “). // valor de A eh salvo na variavel auxA A = B.00 Valor do desconto R$ 15. Passos 7 e 8: calcular as saídas e imprimir os resultados imprima (“Valores antes da troca A=%i B=%i “.00 Valor do desconto R$ 50. &B).00 desconto 50. Passo 9: montar o algoritmo /*Exerc4111. leia(“%i”. A.00 Saída Tela precoini 1000.Elisamara de Oliveira Passo 10: testes de mesa precoini 300.unisa. B). // valor de A eh copiado para B imprima (“Valores depois da troca A=%i B=%i “. imprima (“Digite o valor do segundo numero inteiro “). leia(“%i”. imprima (“Valores antes da troca A=%i B=%i “. // valor de A eh salvo na variavel auxA // valor de B eh copiado para A // valor de A eh copiado para B imprima (“Valores depois da troca A=%i B=%i “. B). A. &B).br 147 . leia(“%i”. A = B. imprima (“Digite o valor do segundo numero inteiro “). Passo 10: testes de mesa A 3 15 B 15 3 auxA 3 Saída Tela Valores antes da troca A=3 B=15 } Valores depois da troca A=15 B=3 A -4 4 B 4 -4 auxA 4 Saída Tela Valores antes da troca A=-4 B=4 Valores depois da troca A=4 B=-4 14. A. “). auxA = A. &A).não tem inteiro temp. Passo 3: variáveis de saída Passo 4: variáveis auxiliares Passo 5: declarar todas as variáveis Unisa | Educação a Distância | www. Passo 1: ler e entender Passo 2: variáveis de entrada . B). imprima(“Fim do programa”).Algoritmos e Linguagem de Programação principal () { imprima (“Digite o valor do primeiro numero inteiro leia(“%i”. B = auxA.unisa.temperatura (leitura do termômetro) .não tem . Passos 7 e 8: calcular as saídas e imprimir os resultados se (temp < 100) imprima (“Temperatura muito baixa “). principal () { imprima (“Digite o valor da temperatura lida no termometro”). senão se (temp > 200 e temp < 500) imprima (“Temperatura normal “). senão se (temp >=100 e temp <= 200) imprima (“Temperatura baixa “). se (temp < 100) imprima (“Temperatura muito baixa “). senão se (temp > 200 e temp < 500) imprima (“Temperatura normal “). &temp).br . senão imprima (“Temperatura muito alta “).unisa. } 148 Unisa | Educação a Distância | www. Passo 9: montar o algoritmo /*Exerc4114. leia(“%i”. leia(“%i”. &temp). imprima(“Fim do programa”). senão imprima (“Temperatura muito alta “).c: Le a temperatura e imprime mensagem de acordo com o valor */ inteiro temp. senão se (temp >=100 e temp <= 200) imprima (“Temperatura baixa “).Elisamara de Oliveira Passo 6: inicializar as variáveis imprima (“Digite o valor da temperatura lida no termometro”). tipo do combustível que o carro usa . Passos 7 e 8: calcular as saídas e imprimir os resultados se (tipo == ‘G’ ou tipo == ‘g’) { preco = tanque * 2.Algoritmos e Linguagem de Programação Passo 10: testes de mesa temp -200 temp 200 temp 500 temp 300 Saída Tela Temperatura muito baixa Saída Tela Temperatura baixa Saída Tela Temperatura muito alta Saída Tela Temperatura normal 16.br 149 . tipo). preco). } senão se (tipo == ‘A’ ou tipo == ‘a’) Passo 6: inicializar as variáveis Unisa | Educação a Distância | www. inteiro tanque.não tem Passo 3: variáveis de saída Passo 4: variáveis auxiliares Passo 5: declarar todas as variáveis char tipo. leia(“%c”.60.capacidade do tanque do carro . Passo 1: ler e entender Passo 2: variáveis de entrada . real preco. imprima (“Voce gastara R$ %f para encher o tanque de gasolina “. leia(“%i”.unisa. imprima (“Digite a capacidade do tanque de combustivel: “). imprima (“Digite o tipo de combustivel do carro G=gasolina ou A=alcool “). &tanque).valor gasto para encher o tanque do carro . Passo 9: montar o algoritmo /*Exerc4116. preco). imprima(“Fim do programa”). imprima (“Voce gastara R$ %f para encher o tanque de gasolina “. &tanque). } senão imprima(“Tipo de combustivel invalido”). leia(“%c”. a capacidade do tanque e calcula o valor a ser pago para encher o tanque*/ char tipo. } senão se (tipo == ‘A’ ou tipo == ‘a’) { preco = tanque * 1.60. imprima (“Voce gastara R$ %f para encher o tanque de alcool “.80. preco). preco).Elisamara de Oliveira { preco = tanque * 1. se (tipo == ‘G’ ou tipo == ‘g’) { preco = tanque * 2. imprima (“Voce gastara R$ %f para encher o tanque de alcool “.br .c: Le o tipo de combustivel. } senão imprima(“Tipo de combustivel invalido”). principal () { imprima (“Digite o tipo de combustivel do carro G=gasolina ou A=alcool “).unisa. } 150 Unisa | Educação a Distância | www. imprima (“Digite a capacidade do tanque de combustivel: “). leia(“%i”. inteiro tanque. tipo).80. real preco. h> #include <conio.3 ou 0(branco) -1 finaliza): “). printf(“\n Digite o seu voto (1. while { (voto != -1) (voto == 1) brancos=nulos=eleitores=cont1=cont2=cont3=0. /* Eleicoes.00 para encher o tanque de gasolina Saída Tela Tipo de combustivel invalido Capítulo 5 1.*/ voto.h> int { int main() numeros obtidos e o candidato vencedor. printf(“\nDigite o seu voto (1. ++cont2. ++cont3.00 preco Saída Tela Voce gastara R$180. brancos.2.00 para encher o tanque de alcool Saída Tela Voce gastara R$117. cont1. nulos. if ++cont1. scanf (“%i”.2.br 151 .&voto).3 ou 0(branco) –1 finaliza): “).Algoritmos e Linguagem de Programação Passo 10: testes de mesa tipo A tipo g tipo y tanque 100 tanque 45 tanque 70 preco 180. if ((cont1 > cont2) && (cont1 > cont3)) Unisa | Educação a Distância | www. cont3. } scanf (“%i”. else if (voto == 2) else if (voto == 3) else if (voto == 0) else ++nulos. vencedor.&voto).unisa. ++eleitores. eleitores.00 preco 117.c: este programa computa os votos de uma eleição e divulga os #include <stdio. ++brancos. cont2. if (voto==-1) break. } return 0.nulos). eleitores. vencedor = 2. { case 0: case 1: case 2: case 3: switch (voto) break.3 ou 0(branco) -1 finaliza): “). ++cont3. int main () { brancos=nulos=eleitores=cont1=cont2=cont3= 0.2. ++brancos. printf(“\n Numero de eleitores: %i “. brancos).h> int voto. cont2. printf(“\nFim do programa”).*/ #include <stdio. vencedor). scanf (“%d”.eleitores). 152 Unisa | Educação a Distância | www. (1) ++eleitores. break. ++cont2. 2.h> #include <conio. printf(“\n Numero de votos em branco: %i “. vencedor. printf(“\n O candidato vencedor foi: %i “. nulos. ++cont1.c: computa os votos de uma eleição e divulga os numeros obtidos e o candidato vencedor usando o comando switch. brancos. break. /* Eleicoes2.unisa.Elisamara de Oliveira else if ((cont2 > cont1) && (cont2 > cont3)) else vencedor = 3. getch(). cont1.br .&voto). { while printf (“\nDigite o seu voto (1. printf(“\n Numero de votos nulos: %i “. vencedor = 1. cont3. printf (“\nNumero de votos nulos: %d “.nulos). puts(“\nFim do programa”). printf(“\nQual eh a cotacao do dolar? “). Unisa | Educação a Distância | www.br 153 . vencedor).&cotacao).c: le valor em dolares e converte para reais*/ #include <stdio. return 0. printf(“\nQuantos dolares devem ser convertidos para reais? “). getch(). printf (“\nNumero de votos em branco: %d “. printf (“\nO candidato vencedor foi: %d “. if ((cont1 > cont2) && (cont1 > cont3)) else if ((cont2 > cont1) && (cont2 > cont3)) else vencedor = 3.unisa. scanf(“%f”. } 3.&dolares). cotacao. brancos). ++nulos. vencedor = 2.eleitores). vencedor = 1. reais = dolares*cotacao. int main() { printf(“\nPrograma para converter dolares em reais\n”). printf (“\nNumero de eleitores: %d “.Algoritmos e Linguagem de Programação } } default: break. scanf(“%f”.h> #include <conio.h> float dolares. reais. Este exercício já foi resolvido passo a passo em PortuCê na quatão 3 do capítulo 4! /*exerc513. scanf(“%i”.&horaent). /*exerc514. } 4. printf(“\nQual eh a hora de saida? “). getch().00 por hora ou fracao\n\n”). minent. printf(“\nQual eh o minuto de saida? “). printf(“\nValor do estacionamento: 10. printf(“\n\nFim do programa”).unisa. scanf(“%i”.dolares. printf(“\nQual eh a hora de entrada? “).&minent). printf(“\nQual eh o minuto de entrada? “). scanf(“%i”.2f “. Se for. temos que verificar se o minuto de saída é maior que o minuto de entrada. Aqui a estratégia é a seguinte: hora de entrada.2f USD convertidos para reais = R$ %. de saída.h> int horaent. float valoraserpago. if (horasai >= horaent) { 154 Unisa | Educação a Distância | www. Se a hora de saída é menor que a hora de entrada. tempo.&minsai).&horasai). int main() { printf(“\nPrograma para calcular o valor a ser pago num estacionamento\n”). minsai. o usuário paga mais 1 hora pela fração.h> #include <conio.br . horasai.c: calcula o valor a ser pago num estacionamento*/ #include <stdio. há um erro! Caso contrário.Elisamara de Oliveira printf(“\n%. return 0.reais). scanf(“%i”. minuto de entrada e de saída são 4 variáveis inteiras diferentes. Depois.valoraserpago).&salario).horaent). novosalario. printf(“\n\nFim do programa”). A estratégia é ler o salário do funcionário e verificar se é válido. 5.unisa. return 0. if (minsai > minent) hora ++tempo. int main() { printf(“\nPrograma para calcular o valor do novo salario reajustado de um funcionario\n”). dando a boa notícia ao trabalhador! /*exerc515.h> float salario.2f”. printf(“\nQual eh o valor de seu salario atual? “). Se for.br 155 . printf(“\nTotal a ser pago por %i hora(s) de estacionamento R$ tempo. getch(). // fracao de minutos implica na cobranca de mais 1 valoraserpago = tempo * 10. somamos o aumento no salário original e calculamos o novo salário. Unisa | Educação a Distância | www. scanf(“%f”. } else printf(“\nErro nos valores de hora de entrada e saida. } %. calculamos o aumento do salário de acordo com as faixas informadas.”). aumento.c: calcula o novo valor do salario de um funcionario*/ #include <stdio.Algoritmos e Linguagem de Programação tempo = (horasai .h> #include <conio.00. Este problema é um caso típico de uso do comando “switch” para verificar em qual caso certo valor se enquadra! /*exerc516. } else printf(“\nErro no valor do salario. novosalario = salario + aumento.h> float preco.10. return 0.2f”. int codigo. printf(“\n\nFim do programa”).05.2f e seu novo salário eh R$ %.h> #include <conio. else if (salario >=500.c: apresenta a regiao de procedencia de um produto*/ #include <stdio.”).00) aumento = salario * 0. aumento.br . Nao existe salario igual a zero ou negativo.00 && salario <= 1000. getch(). int main() { 156 Unisa | Educação a Distância | www.15.Elisamara de Oliveira if (salario > 0) { if (salario < 500.unisa. } 6.novosalario).00) aumento = salario * 0. else aumento = salario * 0. printf(“\nVoce teve um reajuste de %. break.Regiao de origem = CENTRO-OESTE”. break.2f .2f . preco).&preco).Regiao de origem = SUDESTE”. break.Regiao de origem = SUL”. preco). default: printf(“\nCodigo da regiao invalido\n”).br 157 . preco). case 4: printf(“\nPreco do produto = R$ %. printf(“\nQual eh o preco do produto? “). case 2: printf(“\nPreco do produto = R$ %.2f .Regiao de origem = NORDESTE”.Algoritmos e Linguagem de Programação printf(“\nPrograma para apresentar a regiao de origem de um produto\n”). Unisa | Educação a Distância | www. preco). case 5: printf(“\nPreco do produto = R$ %. case 3: printf(“\nPreco do produto = R$ %. scanf(“%f”. printf(“\nQual eh o codigo da regiao de origem do produto? (1 a 5): “).2f . break. preco). break.unisa. switch (codigo) { case 1: printf(“\nPreco do produto = R$ %. scanf(“%i”.Regiao de origem = NORTE”.2f .&codigo). unisa.br . } return 0. scanf(“%f”. Capítulo 6 1. /* notas.Elisamara de Oliveira } printf(“\n\nFim do programa”). //para não dar problema na leitura de strings puts(“\nFim do programa”). } printf(“\n%s. printf(“\nDigite a primeira nota do aluno: “).h> <stdlib.¬a2).2f e a sua 2a nota foi: nome.h>. return 0. getch(). gets(nome). nota2. que deve ser feita usando-se funções da biblioteca <string. O único fator um pouco chato na solução deste problema simples é a leitura de strings em C. } 158 Unisa | Educação a Distância | www. printf(“\nDigite a segunda nota do aluno: “).2f“. fflush(stdin).¬a1). float nota1.h> <string. Você deve escrever um programa que leia e imprima o nome e as duas notas de vários alunos.c: programa que le e imprime 2 notas de vários alunos */ #include #include #include #include <stdio. getch().”FIM”) == 0) break.nota2). int main() { while (1) { printf(“\nQual é o seu nome? FIM finaliza “).nota1. scanf(“%f”.h> <conio. sua 1a nota foi: %1. %1.h> char nome[15]. O último aluno terá o nome=FIM. if (strcmp(nome. unisa. A estratégia é usar o comando “for”. cont++) { printf(“\nDigite um numero inteiro: scanf(“%i”. printf(“\nA soma dos 10 numeros eh: %i“. soma. return 0. cont < 10.Algoritmos e Linguagem de Programação 2.h> int numero. for ( . int main() { cont=soma=0.&numero). soma = soma + numero. Isso porque é preciso terminar a leitura dos dados para que a soma final tenha sido calculada e possa ser impressa. /* soma10. pois já sabemos que serão lidos 10 números. Você deve escrever um programa que leia 10 números e calcule e imprima a sua soma. puts(“\nFim do programa”). é importante notar que a impressão da soma dos números é feita FORA do comando “for”. cont. } “). } Unisa | Educação a Distância | www. getch().soma).c: Programa que le e soma 10 numeros */ #include <stdio. É importante aplicarmos a regra básica da programação: TODO SOMADOR E TODO CONTADOR DEVEM SER INICIALIZADOS COM ZERO! Além disso.h> #include <conio.br 159 . Fácil. 2. peça-lhe para fornecer o valor de N). cont. } Note como os números pares são gerados: inicializa-se a variável numeropar com zero e depois vai adicionando-se 2 a ela. Nesse caso. scanf(“%i”. Você deve escrever um programa que calcule e imprima N números pares.h> int n. numeropar. numeropar = numeropar + 2. return 0. X -1 1 -1 1 -1 Y 0 1 2 3 4 1 -2 3 -4 Resultados Este exemplo. Na segunda linha.c: programa que gera e imprime N numeros pares */ #include <stdio. pois sabemos que o usuário quer gerar N números pares! /* Pares.. 4.br . foi colocado o resultado de “*-1” 160 Unisa | Educação a Distância | www. a condição do comando “while” foi avaliada como verdadeira (“0 != 4”=Verdadeiro) e os comandos delimitados por { e } do “while” foram executados: em X. int main() { pritnf(“\nQuantos números pares devem ser impressos? “). vamos também usar o comando “for”. cont < n.h> #include <conio. Dessa forma.. Você deve perguntar ao usuário quantos números ele deseja gerar (ou seja. mostra claramente como fazer um teste de mesa. numeropar = 0.numeropar). são gerados 0. começando do zero. } puts(“\nFim do programa”).Elisamara de Oliveira 3. mostram-se apenas os valores iniciais das variáveis X e Y. cont++) { printf(“\n%i”.&n). 6. apesar de simples. Na primeira linha da coluna. getch(). não é? 4.unisa. for (cont=0. h> int angulo. 5. while (1) { printf(“\nDigite o valor do angulo (0 a 360) -1 finaliza: “). O número começa de 2 e vai sendo incrementado de 2.unisa. numero 2 4 6 8 10 12 cont 0 1 2 3 4 5 Resultado 2 -2 4 -4 6 -6 8 -8 10 –10 A cada laço do comando for são impressos 2 números numa mesma linha: positivo e negativo.Algoritmos e Linguagem de Programação (-1*-1=1). As outras linhas correspondem à execução do laço do comando “while”.&angulo). cont começa com zero e vai até 5. implicando a impressão do valor de Y (1). int quadrante.h> #include<conio. Y foi acrescido de 1 (0+1=1) e a condição do comando “if” foi avaliada como verdadeira. o que foi mostrado na coluna “Resultado”. int main() { printf(“\nPrograma para apresentar a qual quadrante um angulo pertence\n”). scanf(“%i”. if (angulo== -1) break.c: le o angulo e informa o quadrante*/ #include <stdio. 6. if (angulo >= 0 && angulo < 90) Unisa | Educação a Distância | www.br 161 . /*exerc621. \n 8. printf(“\nO angulo %i pertence ao quadrante else drante 4\n”.br .c: realiza uma pesquisa de opinião. printf (“\n1 . total. } printf(“\n\nFim do programa”). 162 Unisa | Educação a Distância | www. else if (angulo >= 180 && angulo < 270) 3\n”. afavor=0.unisa. angulo).Elisamara de Oliveira printf(“\nO angulo %i pertence ao quadrante 1\n”.mulheres=0. angulo). int { main() while (1) { system(“cls”). } if (angulo >= 270 && angulo <= 360) printf(“\nO angulo %i pertence ao quaelse printf(“\nValor de angulo invalido. getch(). angulo).Contra”).h> #include<stdio. printf (“\n2 . if (angulo >= 90 && angulo < 180) printf(“\nO angulo %i pertence ao quadrante 2\n”. float porcent. “). printf (“\nDigite a opcao desejada: “). return 0. /*exerc623. // limpa a tela printf (“\nReferendo sobre a internacionalizacao da Amazonia. else angulo).Finaliza”). printf (“\n0 . homens=0. contra=0. Qual eh sua opiniao?”). computando votos em numero e em percentual */ #include<conio.A favor”).h> int opcao.h> #include<stdlib. sexo. default: printf(“\nOpcao invalida. break. break. } else if (sexo == 2) { ++mulheres.\n”). } // while 1 total = mulheres + homens.&opcao). &sexo). printf(“\nObrigada. ++afavor. voto computado!”). switch (opcao) { case 1: printf(“\nObrigada.br 163 . break.unisa. ++contra. homens).”. printf(“----------------------”). case 2: } getch().Algoritmos e Linguagem de Programação scanf (“%i”. digite 1 ou 2. voto computado!”). Unisa | Educação a Distância | www. printf(“\nResultados da pesquisa\n”). } else printf(“\nSexo invalido. if (sexo == 1) { ++homens. break. scanf(“%i”. Por fa} vor. printf(“\n\n%i votante(s) do sexo masculino.”). if (opcao == 0) while (1) { printf(“\nInforme o seu sexo 1=masculino 2=femini- no: “). break. printf(“\n%. porcent = (float) mulheres/total.c: le n1.porcent*100). printf(“\n%.”.Elisamara de Oliveira if (total > 0) { } printf(“\n\n%i votante(s) do sexo feminino. printf(“\n%.porcent*100).”. int main() { 164 Unisa | Educação a Distância | www. if (total > 0) { porcent = (float) contra/total.porcent*100). printf(“\n%.h> #include<conio. printf(“\n\n\nFim do programa”). if (total > 0) { porcent = (float) afavor/total.1f %% dos votantes sao a favor”.br . /*exerc624. if (total > 0) { } total = afavor + contra.mult. mulheres).1f %% dos votantes sao mulheres”.n2. } 9. } printf(“\n\n%i votante(s) contra.1f %% dos votantes sao homens”.1f %% dos votantes sao contra”. getch(). printf(“\n\n%i votante(s) a favor. contra). } getch(). float divisao. porcent = (float) homens/total. return 0. afavor).”.h> int n1.soma.porcent*100).unisa.subtr.n2 e realiza as 4 operacoes*/ #include<stdio. printf(“\nDigite um numero inteiro ou -1 para finalizar: scanf(“%i”. getch(). printf(“\nDigte outro numero inteiro “). if (n1 == -1) break. scanf(“%i”.subtr).3f”.&n1).Algoritmos e Linguagem de Programação while (1) { “). printf(“\na subtracao de %i-%i”.n1. } printf(“\nnao existe divisao por zero”).n2.n2.n1. mult=n1*n2. } printf(“\na divisao de %i/%i=.divisao).n2. soma=n1+n2.&n2).br 165 .n1.soma).unisa. Unisa | Educação a Distância | www. return 0. printf(“\na multiplicacao de %i+%i=%i”. subtr=n1-n2. } else { } printf(“\n\nfim do programa”).mult).n2. if (n2!=0) { divisao=n1/n2.n1. printf(“\na soma de %i+%i=%i”. int main() { printf(“\nPrograma para gerar sequencias numericas\n”). printf(“\n\n”). for (cont=0. cont = 1.h> int n. termo = termo*-1. cont<n. termo = 2. scanf(“%i”. printf(“\nDigite o numero de termos da sequencia de potencias de 2: “). scanf(“%i”.termo).h> #include<conio.&n). cont++) { printf(“ %i } “.c: gera sequencias numericas*/ #include <stdio. ++cont. // cont eh impar? 166 Unisa | Educação a Distância | www. termo = termo*2. /*exerc626. while (cont<=n) { printf(“ %i “.Elisamara de Oliveira 11. termo. if (cont % 2 == 1) ++ termo.br .&n). printf(“\nDigite o numero de termos da sequencia de positivos e negativos: “).unisa.termo). termo = 1. cont. 17.&Valor). getch(). Media. /* exerc6212.Cont.unisa.. } else printf(“\nNenhum valor foi fornecido”).Algoritmos e Linguagem de Programação } printf(“\n\n”). scanf(“%d”. ++Cont. } return 0. Media).h> int float Soma=0. Unisa | Educação a Distância | www. } if (Cont > 0) { Media = Soma/Cont. printf(“\n\nFim do programa”).br 167 . Soma = Soma + Valor. printf(“\nFim do programa.h> #include<conio. Este programa le varios numeros inteiros e calcula int main( ) { printf(“\nPrograma que le varios numeros inteiros e calcula sua media\n\n”). while (1) { printf(“Forneca um valor inteiro (flag= -1): “)..2f printf(“\nValor da Media dos: \n”.c: sua media */ #include <stdio. Valor. Cont=0. %i números = %. “). Elisamara de Oliveira getch(); /* para a tela */ return 0; } 18. /*exerc6213.c: calcula as raízes de uma equação do 2o grau*/ #include <stdio.h> #include <conio.h> #include <math.h> float a, b, c; // coeficientes da equacao float delta, raiz1, raiz2; char resp; int { main() printf(“\nCalcula as raizes de equacoes do 2o grau\n”); for ( ; { ; ) printf(“\nDigite o coeficiente a: “); scanf(“%f”, &a); printf(“\nDigite o coeficiente b: “); scanf(“%f”, &b); printf(“\nDigite o coeficiente c: “); scanf(“%f”, &c); if ( a == 0) eh zero”); printf(“\nNao eh equacao do 2o grau, pois o coeficiente a else { delta = b*b – (4*a*c); if (delta >= 0) { raiz1 = - b + sqrt(delta) / (2*a); raiz2 = - b - sqrt(delta) / (2*a); raiz2); printf(“\nRaiz 1 = %.2f Raiz2=%.2f”, raiz1, 168 Unisa | Educação a Distância | www.unisa.br Algoritmos e Linguagem de Programação } else printf(“\nNao existem raizes reais”); } printf(“\nVoce deseja fornecer novos dados? S/N “); resp = getche(); if (resp==’n’ || resp==’N’) break; } printf (“\n\n\n\n getch(); return 0; } Fim do programa”); 19. /*exerc6214.c: mostra números potencia de 2 menores que 1000000 usando long int e gera numeros impares menores que 100 */ #include <stdio.h> #include <conio.h> long int numlong; int num; int main() { printf(“\n Sequencia de numeros potencia de 2 menores que 1000000”); printf(“\n ===========================================n\n”); numlong=2; while (numlong<1000000) { } printf(“%ld\t”,numlong); numlong = numlong * 2; // \t corresponde a tabulacao Unisa | Educação a Distância | www.unisa.br 169 Elisamara de Oliveira printf(“\n Sequencia de numeros impares menores que 100”); printf(“\n ===================================\n\n”); num=1; while (num<100) { printf(“%i\t”,num); num = num + 2; } if (num%10==1) getch(); printf (“\n\n\n\n getch(); return 0; } Fim do programa”); 20. /*exerc6215.c: aproxima o numero Pi atraves de uma serie */ #include <stdio.h> #include <conio.h> double pi, termo; float num, den; long int n, cont=0; int main() { printf(“\n Aproxima o valor de Pi por uma serie numerica”); printf(“\n =================================n\n”); pi=0; printf(“\nDigite o numero de termos da serie: “); scanf(“%ld”,&n); 170 Unisa | Educação a Distância | www.unisa.br } Fim do programa”). pi)).h> long int n.c: le numeros e calcula o digito verificador*/ #include <stdio. adiif (cont % 2 == 0) ciona o termo else pi = pi – termo.d2. den = 1. int main() { printf(“\nPrograma para ler numeros e calcular o digito verificador\n”). printf (“\n\n\n\n getch(). n. int d1. } printf(“\nO valor de Pi aproximado pela serie com %ld termos = %lf”. den = den + 2.br 171 .unisa.d5. cont++) { termo = num/den.Algoritmos e Linguagem de Programação num = 4. return 0. 21. /*exerc6216. // se o contador de termos for par.dv. while (1) { printf(“\nDigite um numero inteiro de 5 digitos (-1 finaliza): Unisa | Educação a Distância | www. cont < n.d3.h> #include<conio. pi = pi + termo. for (cont=0.d4. \n”). dv).d3.unisa. dv = (d1 + d2 + d3 + d4 + d5) % 11. } gitos 172 Unisa | Educação a Distância | www. scanf(“%ld”.Elisamara de Oliveira “). return 0. else printf(“\n\n%ld . } printf(“\n\nFim do programa”). printf(“\n\n”). n).d4. if (n >= 10000 && n<=99999) // verifica se o numero tem 5 dí{ d1 = n / 10000. } else printf(“\nEste numero nao tem 5 digitos. printf(“\nd1= %i d2=%i d3=%i d4=%i d5=%i”.%i”. d5 = n % 10.d1.n.&n). if (n == -1) break. if (dv == 10) printf(“\n\n%ld . getch().d5). d4 = (n % 100) / 10.br . d3 = (n % 1000) / 100.d2. d2 = (n % 10000) / 1000.x “. h> int codigo.br 173 . scanf(“%i”.Algoritmos e Linguagem de Programação 32.c: le o codigo do produto e apresenta sua classificacao*/ #include <stdio. if (codigo == 0) break.unisa. case 2: case 3: case 4: printf(“\nClassificacao do produto %i = ALIMENTO PERECIVEL”. break. case 5: RIO”. case 6: printf(“\nClassificacao do produto %i = VESTUAbreak. int main() { printf(“\nPrograma para apresentar a classificacao de produtos\n”). case 7: printf(“\nClassificacao do produto %i = HIGIENE PESSOAL”. codigo).h> #include<conio. switch (codigo) { case 1: printf(“\nClassificacao do produto %i = ALIMENTO NAO PERECIVEL”. while (1) { printf(“\nQual eh o codigo do produto? (1 a 9 ou 0 para finalizar): “). /*exerc6227. Unisa | Educação a Distância | www. codigo). break.&codigo). codigo). codigo). break. return 0.Elisamara de Oliveira case 8: case 9: printf(“\nClassificacao do produto %i = LIMPEZA E UTENS.unisa.br . break. default: printf(“\nCodigo do produto invalido\n”). codigo). DOMESTICOS”. } // while 1 printf(“\n\nFim do programa”). } 174 Unisa | Educação a Distância | www. } printf(“\n”). getch(). REFERÊNCIAS AITKEN. H. C – Guia do Programador. F. Algoritmos: lógica para desenvolvimento de programas de computador. GOTTFRIED. ______. C. Fundamentos da programação de computadores. Introdução a programação: 500 algoritmos resolvidos. B. A. Rio de Janeiro: Campus. ed. C – A linguagem de programação padrão ANSI. BERSPACHER. FORBELLONE. ed. 2000. Programando em C. Treinamento em linguagem C. Unisa | Educação a Distância | www. SEBESTA. Lógica de programação. MIZRAHI.. 1997. G. São Paulo: Makron Books. 1989. 2006. J.. JONES. A. M. A. TENEMBAUM. RITCHIE. 22. GARCIA. OLIVEIRA.. W. V. Treinamento em linguagem C. 2007. C completo e total. SCHILDT. ASCENCIO. V.. 2. São Paulo: Makron Books. Módulo 2. A. 2003. São Paulo: Pearson. A. E. 2002. 2005. B. 3. São Paulo: Érica. São Paulo: Makron Books. São Paulo: Prentice Hall. ed. H. ed. KERNIGHAN. VENERUCHI. B. J. São Paulo: Makron Books. A.. Rio de Janeiro: Campus. F. 2006. Conceitos de linguagens de programação. G. Porto Alegre: Bookman. 2004. São Paulo: Prentice Hall. 2. 1995. MANZANO. Programando aplicações em Windows com C e C++. G. R. CALVERT. D. Módulo 1. 4..br 175 . W. M. S. ed. LOPES. Rio de Janeiro: Berkeley.unisa. 2009. P. M. 1994. L. Estruturas de dados usando C. Rio de Janeiro: Berkeley Brasil.