·

Cursos Gerais ·

Introdução à Lógica e Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

PROFª SOLIMARA RAVANI DE SANTANNA PROGRAMAÇÃO I VITÓRIA 2009 2 Tecnologia em Análise e Desenvolvimento de Sistemas Governo Federal Ministro de Educação Fernando Haddad Ifes Instituto Federal do Espírito Santo Reitor Dênio Rebello Arantes PróReitora de Ensino Cristiane Tenan Schlittler dos Santos Coordenadora do CEAD Centro de Educação a Distância Yvina Pavan Baldo Coordenadoras da UAB Universidade Aberta do Brasil Yvina Pavan Baldo Maria das Graças Zamborlini Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Coordenação de Curso Isaura Nobre Designer Instrucional Danielli Veiga Carneiro Professor EspecialistaAutor Solimara Ravani SantAnna Catalogação da fonte Rogéria Gomes Belchior CRB 12417 S231 SantAnna Solimara Ravani Programação I Solimara Ravani SantAnna Vitória CEFETES 2007 139 p il 1 Algoritmos 2 C linguagem de programação de computadores 3 Programação de computadores I Centro Federal de Educação Tecnológica do Espírito Santo II Título CDD 005133 0051 DIREITOS RESERVADOS Ifes Instituto Federal do Espírito Santo Av Vitória Jucutuquara Vitória ES CEP 27 33312139 Créditos de autoria da editoração Capa Juliana Cristina da Silva Projeto gráfico Juliana Cristina da Silva Nelson Torres Iconografia Nelson Torres Editoração eletrônica Duo Translations Revisão Técnica Henrique Monteiro Cristovão Revisão de texto Ilioni Augusta da Costa Maria Madalena Covre da Silva COPYRIGHT É proibida a reprodução mesmo que parcial por qualquer meio sem autorização escrita dos autores e do detentor dos direitos autorais 3 Programação I Olá Alunoa É um prazer têloa conosco O Ifes oferece a você em parceria com as Prefeituras e com o Governo Federal o Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas na modalidade a distância Apesar de este curso ser ofertado a distância esperamos que haja proximidade entre nós pois hoje graças aos recursos da tecnologia da informação emails chat videoconferên cia etc podemos manter uma comunicação efetiva É importante que você conheça toda a equipe envolvida neste curso coor denadores professores especialistas tutores a distância e tutores presenciais porque quando precisar de algum tipo de ajuda saberá a quem recorrer Na EaD Educação a Distância você é o grande responsável pelo sucesso da aprendizagem Por isso é necessário que você se organize para os estudos e para a realização de todas as atividades nos prazos estabelecidos conforme orientação dos Professores Especialistas e Tutores Fique atento às orientações de estudo que se encontram no Manual do Aluno A EaD pela sua característica de amplitude e pelo uso de tecnologias mo dernas representa uma nova forma de aprender respeitando sempre o seu tempo Desejamoslhe sucesso e dedicação Equipe do Ifes 4 Tecnologia em Análise e Desenvolvimento de Sistemas Fala do Professor Conceitos importantes Fique atento Atividades que devem ser elaboradas por você após a leitura dos textos Indicação de leituras complemtares referentes ao conteúdo estudado Destaque de algo importante referente ao conteúdo apresentado Atenção Reflexãoquestionamento sobre algo impor tante referente ao conteúdo apresentado Espaço reservado para as anotações que você julgar necessárias ICONOGRAFIA Veja abaixo alguns símbolos utilizados neste material para guiálo em seus estudos 5 Programação I PROGRAMAÇÃO I Cap 1 ALGORITMOS 9 11 Entendendo Algoritmos 9 12 Construindo Algoritmos 10 13 Construindo Algoritmos Para Computadores 13 131 Reservando Memória 13 132 Variáveis 13 133 Constantes 17 14 Operadores 19 141 Operadores Aritméticos 19 142 Operadores Relacionais 19 143 Operadores Lógicos 19 15 Expressão Aritmética e Expressão Lógica 21 151 Expressão Aritmética 21 152 Expressão Lógica 21 16 Comandos de Atribuição de Entrada de Saída e Comentário 24 161 Comando de Atribuição 24 162 Comando de Entrada 25 163 Comando de Saída 25 164 Comentários 26 165 Como Construir Algoritmo 29 Cap 2 LINGUAGEM C 35 21 As Telas do Bloodshed DevC 36 22 Visão Geral da Linguagem C 41 23 Comandos da Linguagem de Programação C 42 24 Constantes e Variáveis na Linguagem de Programação C 47 241 Tipos de Variáveis na Linguagem de Programação C 48 25 Alguns dos Códigos para Impressão Formatada de Printf 49 26 Códigos Utilizados Pela Função Scanf 50 27 Como fazer Comentários 50 28 Comandos de Seleção 54 281 Comando If 54 282 Comando IfElse 60 283 Comando Switch 67 29 Comandos de Repetição 74 6 Tecnologia em Análise e Desenvolvimento de Sistemas 291 O Comando For 74 292 O Comando While 81 293 O Comando do while 86 Cap 3 VETORES E MATRIZES 93 31 Entendendo Vetor 93 311 Declarando Vetor 93 312 Atribuindo Valores ao Vetor Inicialização 94 313 Vetor de String 99 314 Leitura de Vetor de String 100 32 Matriz 102 321 Matriz de String 105 Cap 4 ESTRUTURASSTRUCT 111 41 Declarando uma Estrutura 111 42 Utilizando Estrutura no Programa 114 43 Vetores de Estrutura Struct 116 Cap 5 PROCEDIMENTOS E FUNÇÕES 123 51 Modularização 123 52 Funções 124 521 Entendendo Funções 124 53 Procedimentos 126 531 Entendendo Procedimentos 126 54 Escopo de Variáveis 129 514 Passagem de Parâmetro 129 515 Funções Recursivas 134 516 Protótipo de Função 136 REFERÊNCIAS BIBLIOGRÁFICAS 139 7 Programação I APRESENTAÇÃO Olá Nessa disciplina vamos conhecer o que é Algoritmo e apren der a resolver problemas de forma que o computador possa entender e executar Vamos aprender os conceitos básicos da linguagem de programa ção C que será utilizada para desenvolvimento dos programas O material impresso que você utilizará nessa disciplina foi prepa rado valorizando os detalhes no intuito de amenizar as dificulda des que possam aparecer em nosso percurso na sala de aula É importante que você o tenha sempre ao alcance aprovei tando o tempo disponível para leitura revisão ou execução das atividades Todas as atividades aqui propostas apesar de não serem avaliati vas deverão ser realizadas individualmente pois só dessa forma você adquirirá auto confiança e prática na solução de problemas que envolvem computadores Para valorizar o estudo ofline serão encontradas ao longo do material Ilustrações demostrando digitação compilação e exe cução no DEV C dos exemplos apresentados já que al guns alunos não dispõem de computador com facilidade Apesar de a equipe EaD ser composta por profissionais com promissados com o seu aprendizado é importante que você faça a sua parte com o mesmo comprometimento só assim todos você e a equipe EaD poderão desfrutar do sucesso ao final dessa caminhada Bom estudo 8 Tecnologia em Análise e Desenvolvimento de Sistemas 9 Programação I Caro aluno Vamos iniciar o primeiro capítulo em que você estudará o concei to de Algoritmo Nessa fase trabalharemos com exemplos da nossa vida diária no intuito de um entendimento correto desse conceito É importante que ao final deste Capítulo você tenha clareza a res peito do significado de Algoritmo a fim de iniciarmos nossa trajetó ria no mundo computacional Bom estudo Quando criamos um Algoritmo o que fazemos é apontar uma dentre muitas soluções possíveis a um problema qualquer Para que a solução por nós apontada possa solucionar corretamente o problema ela deverá ser pensada planejada executada e por fim testa da Somente após passarmos por essas etapas teremos garantia mínima da solução do problema Todas as etapas serão utilizadas por você no decorrer do nosso curso 11 Entendendo Algoritmos Exemplo Suponha o seguinte problema como proceder para NÃO ob ter sucesso nos cursos a distância Receita Como NÃO obter sucesso nos Cursos EaD 1 Não administre seu tempo de forma a estudar pelo menos 2 horas por dia 2 Só participe das discussões nos fóruns quando o assunto lhe interessar 3 Nunca tenha o material impresso ao alcance de forma a apro veitar qualquer tempo para leitura 4 Avance para o Capítulo seguinte na certeza de que entenderá melhor o anterior 5 Nunca tente resolver os exercícios sozinho resolvaos sempre com a ajuda do tutor ALGORITMOS 10 Tecnologia em Análise e Desenvolvimento de Sistemas Certamente que NÃO seguiremos esses passos mas fica claro que basta qualquer pessoa seguílos para obter o resultado Exemplo Suponha outro problema como fazer um bolo Receita Bolo Festa 1 Separe os seguintes ingredientes ovos trigo sal leite açú car e fermento 2 Bata em uma tigela a manteiga com o açúcar 3 Acrescente as gemas o leite o trigo e o sal 4 Misture bem 5 Acrescente o fermento 6 Coloque a massa na assadeira 7 Asse por 30 minutos Os dois exemplos acima são Algoritmos pois enumeram passos que le vam à solução de problemas específicos 12 Construindo Algoritmos Vamos construir Algoritmos para resolver problemas propostos em alguns sites 1 Tente conduzir a vaquinha até o troféu Acesse o link http wwwqlympicsdeiqmarathon Clique em Starten e depois em Ok Agora arraste as setas para determinar o caminho da vaquinha e em seguida aperte Go Ob serve o código que aparece em cada mudança de fase Ele permite que você depois continue daquele ponto em diante Obs as setas azuis diferentemente das vermelhas não se apagam quando a vaquinha passa Copie aqui o código da última fase que você conseguiu chegar Ao todo são 43 fases Capítulo 1 11 Programação I 2 Acesse o link httprachacucacombrcalculadoraquebrada Nesse link encontraremos uma calculadora quebrada e pro blemas a resolver Clicando no botão PRÓXIMO teremos acesso ao primeiro problema Lembrese de descrever a solução passo a passo como fizemos nos exemplos acima 3 Vamos acessar o link httprachacucacombrjarros Nesse link encontraremos jarros e problemas a resolver Clicando no botão JOGAR teremos acesso ao primeiro problema Resolvao Algoritmos 12 Tecnologia em Análise e Desenvolvimento de Sistemas Olá Com a conclusão dos exercícios podemos observar que cada um aponta uma solução para os problemas apresentados Cada solução criada é um Algoritmo Vamos em frente Nosso objetivo no entanto é criar Algoritmos compostos de pas sos que o computador seja capaz de entender e executar e não Algoritmos com passos que as pessoas sejam capazes de entender e executar Então precisaremos somar mais conhecimentos aos vistos até aqui uma vez que o computador não poderia executar os passos descritos em nossos exemplos acima Capítulo 1 13 Programação I Algoritmo É uma sequência não ambígua e finita de instruções cuja a execução em tempo finito resolve um problema computa cional SEBESTA 2003 13 Construindo Algoritmos Para Computadores Construir Algoritmos para computadores requer em primeiro lu gar a transformação do nosso passo a passo em uma estrutura que possa ser entendida e executada pelo computador Para isso utili zaremos inicialmente uma linguagem conhecida como Portugol e mais tarde assim que os principais conceitos tenham sido assimi lados a Linguagem C Para entender essa estrutura vamos estudar o que é memória variáveis e constantes 131 Reservando Memória É na memória do computador que o nosso programa será executado Quando vamos usar a memória em um Algoritmo para armazenar da dos inerentes à solução de um problema como o resultado de uma operação ou mesmo um número ou uma palavra é necessário infor mar primeiro ao computador que precisaremos dessa memória Essa informação é passada ao computador por meio de comando que ve remos posteriormente Memória Meio físico para armazenar dados temporariamente ou permanentementeTANENBAUM 1997 p212 132 Variáveis Sintaxe tipo identificador ou Listadeidentificadores Além de reservar a memória temos que informar ao computador como vamos nos referir a essa reserva ou seja como denominaremos o espa ço de memória reservado Algoritmos 14 Tecnologia em Análise e Desenvolvimento de Sistemas O nome dado a esse espaço é seu endereço Dizemos que os endereços nomeados de memória são as variáveis do programa O conteúdo de uma variável pode mudar durante a execução do programa Por que precisamos declarar variáveis Em nosso Algoritmo precisaremos manipular diversos valores de forma a encontrar a solução do problema Esses valores deverão estar armazenados de forma que quando necessá rios possam ser identificados corretamente Uma correta declaração de variáveis é que disponibilizará uma iden tificação precisa do valor já que a variável é justamente o endereço do valor armazenado O que são valores Os dados necessários à solução do problema são os valores que devem ser ma nipulados de maneira a fornecer resultados que solucionem o problema Os valores poderão ser inteiros número da matrícula do funcionário número de filhos reais valor do salário e o desconto de IRRF e lógi cos funcionário sindicalizado ou não assume falso ou verdadeiro Cada variável corresponde a uma posição de memória cujo conteúdo pode variar durante a execução de um programa O que são tipos de variáveis Como dissemos os valores diferem quanto ao seu tipo isso significa que para cada tipo de dado teremos um tipo de variável específica que passamos a ver Tipo inteiro Declararemos variáveis do tipo numérico inteiro para representar uma localização de memória do computador utilizada para armazenar os valores inteiros positivos ou ne gativos que constarem em nosso Algoritmo Exemplo 1 2000 3 Tipo real Declararemos variáveis do tipo numérico real para armazenar os valores reais números fracionários aqueles com ponto decimal que constarem em nosso Algoritmo Exemplo 10 2000 30 Tipo caractere Declararemos variáveis do tipo literal caractere para armazenar um único caractere que pode ser uma letra ou um símbolo Capítulo 1 15 Programação I Exemplo Para identificar o sexo do indivíduo armaze naremos apenas o caractere F ou M Tipo cadeia Declararemos variáveis do tipo literal cadeia para armazenar uma seqüência de caracteres ou seja uma palavra uma mensagem um nome Exemplo Se decidirmos armazenar a palavra Masculi no ou Feminino para identificar o sexo do indivíduo no lugar do caractere F ou M teremos que declarar o tipo da variável como cadeia Tipo lógica Declararemos variáveis do tipo lógico para ar mazenar valores lógicos VERDADEIRO ou FALSO ou ainda expressões lógicas cujo resultado seja ou FALSO ou VERDADEIRO Como declarar variáveis Para criar o nome de uma variável precisamos seguir algumas regras São elas REGRA EXEMPLO Não inicie com número 1NUM Não utilize caracteres especiais 1ºNum NomeM NB Não coloque espaços em branco ou hífen entre nomes B Letra BLetra Utilize se necessário underline ou underscore BLetra Crie suas variáveis com nomes sugestivos não é uma regra mas é bom seguir Se vai guardar nome de funcio nários crie a variável utilizando a palavra NOME Variável Uma Variável é uma posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo pro grama LAUREANO 2005 p 12 Algoritmos 16 Tecnologia em Análise e Desenvolvimento de Sistemas Olá As atividades aqui propostas não são avaliativas Sugiro entretanto que sejam realizadas sem consultas dessa forma poderemos acom panhar o desenvolvimento Bom Estudo 3 Aprendemos que ao declarar uma variável precisamos se guir algumas regras Assinale as variáveis que obedecem às regras estabelecidas a NUM1 e TELEFONE i PNum b 1 NUM f Nome j NumRUA c 1ºNUM g R2 k Certo d SEXO h Rua l MATR Capítulo 1 17 Programação I 4 Para cada valor apresentado abaixo foi definido um tipo de vari ável Marque com X os tipos que foram definidos corretamente a valor 10 tipo real b valor 23 tipo real c valor 3 tipo real d valor 30 tipo real e valor 1000 tipo inteiro f valor 54 tipo inteiro g valor 54 tipo inteiro h valor 540 tipo inteiro i valor F tipo cadeia j valor M tipo caract k valor rua tipo cadeia l valor tipo caract 133 Constantes Sintaxe const identificador valor As constantes são criadas com base nas mesmas regras e tipos já vistos em variável Diferem apenas no fato de armazenar um valor constante ou seja que não se modifica durante a execução de um programa Se você entendeu como declarar uma variável ficará fácil entender como se cria uma constante Vamos tomar como exemplo a folha de pagamento dos funcionários de uma determinada empresa Se assumirmos que a empresa concederá um aumento de 10 aos seus funcionários independentemente do valor do salário a taxa de 10 será uma constante durante a execução do pro grama que efetuará o cálculo Nossa constante ficaria assim declarada const TAXA 010 O nome da empresa também será uma constante ele será impres so em todos os contracheques teremos mais uma constante E a declararíamos assim const NOME NOME Empresa X Constante Variável com valor prédefinido que não pode ser modifica do por nenhuma função de um programa LAUREANO 2005 p16 Algoritmos 18 Tecnologia em Análise e Desenvolvimento de Sistemas 5 Identifique o tipo de cada uma das constantes abaixo Exemplo a 35 constante tipo inteiro b 21000 f 010 cfalso g Ifes d TRUE h 2007 e FALSO i verdadeiro O que aprendemos até aqui Algoritmos são os passos que levam à solução de um problema As variáveis armazenarão valores numéricos reais e inteiros valores literais caractere e cadeia e valores lógicos identificados no Algoritmo O conteúdo de uma variável pode variar durante a execução do programa A diferença entre constante e variável é que o conteúdo de uma constante não varia durante a execução do programa Ao fazermos declarações de variáveis e de constantes temos que seguir regras Capítulo 1 19 Programação I 14 Operadores Os operadores são símbolos que representam uma operação aritmética ou lógica 141 Operadores Aritméticos Os operadores aritméticos são empregados em expressão aritmética em que são utilizados constantes ou variáveis do tipo real ou inteira como operandos Vamos ver abaixo a ordem de precedência adição subtração multiplicação divisão 142 Operadores Relacionais Os operadores relacionais realizam comparações entre variáveis São eles igual maior menor maior ou igual menor ou igual não igual ou diferente 143 Operadores Lógicos Os operadores lógicos retornam FalsoF ou VerdadeiroV de acordo com seus operandos São eles Operadores E OU NÃO Entendendo Vamos assumir que existam duas condições para o resultado favorável de uma prova Algoritmos 20 Tecnologia em Análise e Desenvolvimento de Sistemas 1ª proposição O aluno estudou 2ª proposição O aluno colou Chamaremos a 1ª proposição de P E chamaremos a 2ª proposição de Q Vamos verificar na tabela abaixo qual resposta teremos na 3ª coluna se o operador lógico utilizado entre as proposições for o OU P Q P ou Q V V V V F V F V V F F F Observe que o aluno só não terá resultado favorável se as duas proposições forem falsas ou seja Se o aluno não estudar OU se o aluno não colar Agora vamos verificar como se comporta a 3º coluna se o operador ló gico utilizado for o E P Q P e Q V V V V F F F V F F F F Nesse caso para tirar uma nota favorável o aluno além de estudar terá de colar Abaixo a tabela para o operador lógico NÃO P Não P V F F V Ordem de precedência das operações Prioridade Operador 1ª aritmético 2ª relacional 3ª lógico não 4ª lógico e 5ª lógico ou Capítulo 1 21 Programação I 15 Expressão Aritmética e Expressão Lógica 151 Expressão Aritmética Expressão aritmética é a que utiliza operandos que sejam constantes ou variáveis desde que sejam do tipo real ou inteiro e operadores aritméti cos os quis estudamos no item 14 Exemplo x y Ordem de precedência das operações Prioridade Operador Operação 1ª multiplicação divisão 2ª adição subtração Utilizando vários níveis de parênteses quebraremos a prioridade e ob teremos uma seqüência de cálculo diferente 152 Expressão Lógica Expressão lógica utiliza operandos que sejam constantes eou variáveis numéricas literais ou lógicas e os operadores lógicos Exemplos x y e y z y t ou verdade Observe que nos exemplos acima o resultado obtido é sempre VER DADEIRO OU FALSO Numa expressão lógica sempre obteremos o resultado V ou F Exemplo Dadas as variáveis e as seguintes atribuições var inteiro NUM110 var inteiro NUM2 5 var inteiro NUM3200 var inteiro NUM4200 Vamos verificar se a expressão NUM1 NUM2 10 e NUM1 NUM3 NUM4 é VERDADEIRA ou FALSA Algoritmos 22 Tecnologia em Análise e Desenvolvimento de Sistemas Vamos analisar todas as etapas necessárias 1 NUM1 NUM2 NUM1 é o mesmo que 10510 resposta V já que 105 é maior que 10 2 NUM1 NUM3 NUM4 é o mesmo que 10200200 resposta V já que 10200 é maior que 200 3 Assim nossa expressão se resumirá em V e V 4 Na tabela verdade aprendemos que numa proposição V e V o resul tado será V 5 Portanto o resultado final é V Capítulo 1 23 Programação I Olá É importante que as atividades abaixo sejam realizadas na ordem proposta já que o grau de dificuldade vai crescendo na mesma ordem Bom estudo Observe as seguintes declarações de variáveis e suas respectivas atribuições e responda às questões abaixo var inteiro NUM110 var inteiro NUM2 5 var inteiro NUM3200 var inteiro NUM4200 6 Coloque F ou V nas expressões abaixo Exemplo F NUM4 NUM3 a NUM1 NUM2 b NUM1 NUM3 c NUM1 NUM4 d NUM3 NUM4 7 Coloque F ou V nas expressões abaixo Exemplo F NUM1NUM2 NUM2 a NUM1 NUM2 NUM3 b NUM1 NUM2 NUM4 c NUM3 NUM4 NUM4 d NUM3 NUM1 NUM4 8 Coloque F ou V nas expressões abaixo Exemplo F NUM1 NUM2 10 e NUM3 NUM4 NUM3 a NUM1 NUM2 0 e NUM1 NUM3 NUM4 b NUM1 NUM2 40 e NUM3 NUM1 NUM4 c NUM1 NUM2 10 e NUM2 NUM3 NUM4 d NUM1 NUM2 10 e NUM3 NUM4 NUM1 Algoritmos 24 Tecnologia em Análise e Desenvolvimento de Sistemas 9 Coloque F ou V nas expressões abaixo Exemplo V NUM3 NUM2 55 ou NUM1 NUM3 NUM4 a NUM3 NUM2 0 ou NUM1 NUM3 NUM4 b NUM2 NUM1 50 ou NUM3 NUM1 NUM4 c NUM1 NUM2 10 ou NUM2 NUM3 NUM4 d NUM1 NUM2 10 ou NUM3 NUM1 NUM4 10 Coloque F ou V nas expressões abaixo Ex V NUM1 NUM2 e NUM2 NUM3 ou NUM3 NUM4 a NUM1 NUM2 e NUM2 NUM3 ou NUM3 NUM4 b NUM1 NUM2 10 e NUM1 NUM4 ou NUM3 NUM1 NUM4 c NUM1 10 ou NUM1 NUM4 e NUM3 NUM1 NUM4 d NUM1 NUM2 10 ou NUM1 NUM3 NUM4 e NUM3 NUM4 O que aprendemos sobre os operadores São símbolos que representam uma operação aritmética ou lógica Os operadores podem ser aritméticos relacionais e lógicos Os aritméticos são empregados em expressão aritmética Os relacionais verificam as relações entre os operadores Os lógicos retornam Falso F ou Verdadeiro V A ordem de precedência das operações 16 Comandos de Atribuição de Entrada de Saí da e Comentário 161 Comando de Atribuição Na construção de nossos Algoritmos precisamos constantemente indi car que uma variável ou uma constante criada por nós armazenará um determinado valor ou expressão durante a execução do programa Capítulo 1 25 Programação I A forma correta de fazer essa indicação é por meio do comando de atri buição representado por uma seta Assim var int NUM criamos a variável inteira NUM NUM 10 atribuímos o valor 10 var caractere SEXO criamos a variável caractere SEXO SEXO F atribuímos o caractere F var real SALÁRIO criamos a variável real SALÁRIO SALÁRIO 2200000 atribuímos o valor 2200000 162 Comando de Entrada Sintaxe leiavariável Os dados de que precisaremos para execução do nosso Algoritmo serão geralmente informados por meio do teclado O comando de entrada será responsável pela leitura e armazenamento desses dados na variável que indicarmos 163 Comando de Saída Sintaxe escrevaO nome é variável O comando de saída será responsável pela exibição de mensagens de valores processados ou de valores lidos conforme indicarmos Exemplo Algoritmo primeiro var cadeia NOME NOME Paulo Vitor escrevaOlá NOME Olá Paulo Vitor Algoritmos 26 Tecnologia em Análise e Desenvolvimento de Sistemas Veja o resultado desse Algoritmo no quadro ao lado Observe que se o comando de saída fosse escrevaOlá NOME a saída seria exatamente o conteúdo entre as aspas Portanto coloque fora das aspas tudo aquilo que deve ser resolvido pelo computador 164 Comentários Utilizaremos comentário para explicar detalhes que julgarmos necessários em nosso programa Desta forma aumentamos a legibilidade do nosso al goritmo Lembrese que não devemos fazer programas apenas para que o computador execute mas também para outras pessoas possam entendêlo e assim participarem da sua construção eou manutenção Exemplo var int NUM criamos a variável inteira NUM NUM 10 atribuímos o valor 10 Observe que existem caracteres especiais que foram utilizados no início e no fim do comentário Também é possível utilizar os caracteres duas barras Neste caso ele é finalizado com um salto de linha Assim var int NUM criamos a variável inteira NUM NUM 10 atribuímos o valor 10 O comentário sempre será feito com base em um dos modelos acima Façao sempre que você sentir necessidade de explicar alguma linha do seu Algoritmo Olá NOME Capítulo 1 27 Programação I Olá Gostaria de chamar a atenção para a importância de as atividades serem realizadas individualmente Bom estudo 11 Assinale os comandos de atribuição realizados corretamente a var cadeia SEXO F b var inteiro ALTURA 180 c var real SALÁRIO 300000 d var cadeia NOME 12 No programa abaixo dois valores inteiros são lidos e somados e o resultado dessa soma é mostrado no final da execução Analise as linhas do programa e assinale as afirmações corretas linha 1 Algoritmo soma linha 2 linha 3 var int NUM1 NUM2 SOMA linha 4 escreva Digite o primeiro número linha 5 leiaNUM1 linha 6 escreva Digite o segundo número linha 7 leiaNUM2 linha 8 SOMA NUM1 NUM2 linha 9 escreva A soma dos números digitados é SOMA linha 10 a linha 5 O primeiro valor digitado no teclado está sendo lido e armazenado em NUM1 b linha 7 O segundo valor digitado no teclado está sendo lido e armazenado em NUM2 c linha 8 O resultado da soma dos valores digitados está sendo atribuído à variável SOMA d linha 9 No monitor serão exibidas a mensagem que está entre aspas e a soma dos números digitados Algoritmos 28 Tecnologia em Análise e Desenvolvimento de Sistemas 13 O Algoritmo abaixo deverá ler duas notas calcular a média e mostrar o resultado Para que o Algoritmo seja executado correta mente completeo com os comandos que faltam linha 1 Algoritmo média linha 2 linha 3 var NOTA1 NOTA2 MÉDIA linha 4 Digite a primeira nota linha 5 NOTA1 linha 6 escreva linha 7 leia linha 8 MÉDIA 2 linha 9 escreva A média das notas é linha 10 14 Faça o mesmo no Algoritmo abaixo cuja finalidade é calcular 8 de aumento sobre um salário linha 1 Algoritmo reajuste linha 2 linha 3 var SALARIO SALARIONOVO linha 4 Digite o salário linha 5 SALARIO linha 6 SALARIONOVO 108 linha 7 O valor do novo salário é linha 8 O que aprendemos sobre os comandos de atribuição de entrada e de saída O comando de atribuição é responsável por atribuir valores à variável O comando de entrada faz a leitura do dado digitado no teclado e o armazena na variável O comando de saída é responsável por exibir os dados O comentário é utilizado para explicar detalhes que julgarmos necessários em nosso programa Capítulo 1 29 Programação I atribuição Consiste em atribuir um valor a uma variável pre viamente declaradaLAUREANO 2005 p27 entrada Mecanismo de entrada consiste em ler caracteres da entradapadrão normalmente teclado SCHILDT 1995 p15 saída Mecanismo de saída consiste em escrever caracteres da saídapadrão normalmente monitor SCHILDT 1995 p15 cometários Texto que não é interpretado pelo compilador LAUREANO 2005 p 6 165 Como Construir Algoritmo Vamos criar um Algoritmo para ler e multiplicar dois números inteiros e exibir o resultado É importante observar cada linha dessa seqüência Vamos entender todas as linhas do nosso Algoritmo linha 1 Nome do programa linha 2 A chave indica o início do programa linha 3 Declaração das três variáveis do tipo inteiro necessárias ao programa linha 4 O comando escreva exibirá a mensagem que solicita a digita ção do primeiro número Algoritmos linha 1 Algoritmo multiplicação linha 2 linha 3 var inteiro NUM1 NUM2 MULT linha 4 escreva Digite o primeiro número linha 5 leia NUM1 linha 6 escreva Digite o segundo número linha 7 leia NUM2 linha 8 MULT NUM1 NUM2 linha 9 escrevaO resultado da multiplicação éMULT linha 10 30 Tecnologia em Análise e Desenvolvimento de Sistemas linha 5 O primeiro número digitado será lido e armazenado na variável NUM1 linha 6 O comando escreva exibirá a mensagem que solicita a digita ção do segundo número linha 7 O segundo número digitado será lido e armazenado na variável NUM2 linha 8 A variável MULT receberá o resultado da multiplicação do primeiro pelo segundo número linha 9 O comando escreva exibirá uma mensagem com o resultado da multiplicação linha 10A chave indica o fim do programa 15 Construa um Algoritmo que efetue o cálculo do salário bruto de um funcionário considerando que SALARIO BRUTO HO RAS TRABALHADAS VALOR HORA 16 Faça um Algoritmo que leia o valor da cotação do dólar dia multiplique pelo valor em dólar de um determinado produto e imprima o valor convertido Capítulo 1 31 Programação I 17 O custo ao consumidor de um carro novo é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos apli cados ao custo de fábrica Supondo que a porcentagem do dis tribuidor seja 12 e a dos impostos 45 prepare um Algoritmo para ler o custo de fábrica do carro e imprimir o custo do carro para o consumidor 18 Uma empresa tem fichas que contém o nome o número de horas trabalhadas e o número de dependentes de cada um de seus funcionários Considerando que a empresa paga 12 reais por hora trabalhada e 40 reais por dependente desconta do salário 85 para o INSS e 5 para IRRF Algoritmos 32 Tecnologia em Análise e Desenvolvimento de Sistemas Faça um Algoritmo para ler o nome o número de horas trabalha das e o número de dependentes de um funcionário No final o programa deverá exibir o nome o salário bruto os valores descontados para cada tipo de imposto e o salário líquido do funcionário Capítulo 1 33 Programação I 19 Dadas as seguintes informações de um funcionário nome idade cargo e seu salário bruto considere que o salário bruto teve um reajuste de 38 o funcionário receberá uma gratificação de 20 do salário bruto 15 serão descontados do salário total Faça um Algoritmo para imprimir nome idade cargo salário bruto e salário líquido Algoritmos 34 Tecnologia em Análise e Desenvolvimento de Sistemas Leituras complementares SCHILDT Herbert C Completo e Total São Paulo Pearson 2006 KERNIGHAN Brian W C Linguagem de Programação Parão ANSI Rio de Janeiro Elsevier 1989 Capítulo 1 35 Programação I Caro aluno Vamos iniciar o segundo Capítulo da nossa disciplina Nessa eta pa é importante que as atividades sejam feitas no computador Desenvolveremos programas que nos ajudarão a melhorar nosso raciocínio lógico e a nossa agilidade na solução de problemas de forma que o computador seja capaz de interpretar Se você ainda não fez o download do ambiente Bloodshed DevC este é o momento Vamos em frente A partir desta aula vamos construir Algoritmos de forma que o compu tador possa entender e executar Para isso vamos conhecer a linguagem de programação C linguagem de programação Uma Linguagem de Programa ção é um método padronizado para expressar instruções para um computador LAUREANO 2005 p 4 programas Um programa de computador é uma coleção de instruções que descrevem uma tarefa a ser realizada por um computador LAUREANO 2005 p 4 código fonte Uma linguagem de programação é um conjunto de ferramentas regras de sintaxe e símbolos ou códigos que nos permitem escrever programas de computador destina dos a instruir o computador para a realização de suas tarefas LAUREANO 2005 p 5 LINGUAGEM C 36 Tecnologia em Análise e Desenvolvimento de Sistemas Para compilar nossos programas usaremos o ambiente Bloodshed DevC disponível gratuitamente no link httpsuperdownloadsuol combrdownload199bloodsheddevc ou no ambiente Moodle 21 As Telas do Bloodshed DevC 1º passo janela 1 Assim que entrarmos no ambiente Dev C a tela abaixoIlustração 1 será a primeira a que teremos acesso Clique o botão Fechar da janela Dica do dia Capítulo 2 37 Programação I Ilustração 1 Apresentação da primeira tela Linguagem C 38 Tecnologia em Análise e Desenvolvimento de Sistemas 2º passo janela 2 Clique em meu ArquivoNovoProjeto como apresentado na Ilustração 2 Ilustração 2 Apresentação da segunda tela Capítulo 2 39 Programação I 3º passo janela 3 Clique no ícone Console Aplication no botão Projeto C e finalmen te no OK Observe a Ilustração 3 ela o ajudará a executar esses passos Ilustração 3 Apresentação terceira tela Linguagem C 40 Tecnologia em Análise e Desenvolvimento de Sistemas 4º passo janela 4 A janela Create new project se abrirá para iniciarmos nosso projeto conforme Ilustração 4 No campo nome do arquivo digite um nome para seu arquivo e clique em Salvar Ilustração 4 Apresentação da quarta tela Capítulo 2 41 Programação I 5º passo janela 5 É nessa janela que vamos digitar nosso código conforme indica a Ilustração 5 Ilustração 5 Apresentação da quinta tela Neste primeiro momento não exploraremos todos os menus dispo níveis no ambiente Bloodshed DevC A exposição dos seus recur sos se dará à medida que avançarmos nos nossos estudos Vamos em frente 22 Visão Geral da Linguagem C Para termos uma visão geral da linguagem que usaremos no desenvol vimento dos programas vamos analisar como ficaria nosso Algoritmo Soma na Linguagem C Linguagem C 42 Tecnologia em Análise e Desenvolvimento de Sistemas Exemplo1 as mudanças de estado do sistema Linguagem Portugol linha 1 Algoritmo soma linha 2 linha 3 var int NUM1 NUM2 SOMA linha 4 escreva Digite o primeiro número linha 5 leia NUM1 linha 6 escreva Digite o segundo número linha 7 leia NUM2 linha 8 SOMA NUM1 NUM2 linha 9 escreva A soma é SOMA linha 10 Linguagem C linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 int num1 num2 soma linha 6 printf Digite o primeiro numero linha 7 scanf d num1 linha 8 printf Digite o segundo numero linha 9 scanf d num2 linha 10 soma num1 num2 linha 11 printf A soma e d soma linha 12 systemPAUSE linha 13 return0 linha 14 23 Comandos da Linguagem de Programação C Vamos entender cada uma das 14 linhas que compõem o programa Soma que foi criado na linguagem de programação C É importante atentarmos para o fato de que no código do programa Soma não utiliza mos nenhum tipo de acentuação Capítulo 2 43 Programação I Ao salvar seu programa siga algumas regras não utilize acentos e nem deixe espaços entre palavras A primeira linha e a segunda linha include stdioh include stdlibh As linhas indicam a inclusão de biblioteca que possui as funções de entrada e saída de dados necessárias à execução do nosso programa Soma Veremos mais adiante que outras bibliotecas serão necessárias quando isso acontecer vamos incorporálas A terceira linha int main A função main é sempre a primeira a ser executada no programa C Em todo programa desenvolvido em C existirá uma função main em alguma parte do programa A quarta linha É o início de um bloco de comandos no programa Para toda chave que inicia um bloco de comandos teremos uma chave que será responsável por informar o fechamento desse bloco A quinta linha int num1 num2 soma Foram declaradas as variáveis necessárias à execução do programa Inicia mos a declaração informando que as variáveis seriam do tipo inteiroint Observe a existência de um pontoevírgula seu emprego indica o final do comando A sexta linha printf Digite o primeiro numero A função printf é uma função de entrada e saída Permiti que a men sagem entre aspas seja exibida no monitor A sétima linha scanf d num1 A função scanf é responsável por ler os dados que forem informados pelo teclado Nessa linha a função lerá o primeiro número que for digitado e o ar mazena no endereço da variável num1 conforme indicado d num1 A décima linha soma num1 num2 O comando de atribuição atribui o resultado da soma dos valores contidos no endereço de num1 e num2 Linguagem C 44 Tecnologia em Análise e Desenvolvimento de Sistemas A décima primeira linha printf A soma e d soma Já vimos que a função printf permite a exibição da mensagem no mo nitor porém nesse comando o conteúdo da variável soma também é exibido Isso é possível porque incluímos na mensagem o código para impressão de variáveis do tipo inteiro o d O código especial é responsável por fazer saltar uma linha A décima segunda systemPAUSE Possibilita uma pausa no programa a fim de visualizarmos o resultado caso contrário ele seria exibido tão rapidamente que não conseguiría mos vêlo A décima terceira linha return 0 Indica o número inteiro que está sendo retornado pela função em nos so caso o número zero O comando return 0 será detalhado adiante A décima quarta linha Indica o fim do programa O fim de main EXECUÇÃO DO PRIMEIRO PROGRAMA APRESENTADO Antes de executar o programa é necessário traduzílo para uma lingua gem em que o computador possa entender isto é fazer a sua compila ção Use a tecla F9 ou o botão indicado na ilustração 6 lustração 6 Compilação e Execução Capítulo 2 45 Programação I Na primeira vez é solicitado o salvamento do arquivo informe um nome qualquer para o arquivo desde que tenha a extensão c A compilação também é o momento em que os erros de sintaxe grafia são apresentados Veja na tabela abaixo alguns exemplos de erro de digitação e suas res pectivas mensagens de alerta Faça estas simulações de erro para entender melhor o processo e se fa miliarizar com as mensagens do ambiente Experimente também compilar com outros erros Depois desta vivência você ficará mais preparado para enfrentar situa ções reais de erro Linha original Como foi digitado Mensagem de erro Explicação da mensagem de erro include stdioh include stdioh Linha 1 stdioh No such file or directory Sem ponto o nome do ar quivo não foi encontrado int num1 num2 soma int num1 num2 soma Linha 7 syntax error before string constant Sem o pontoevírgula o compilador deduz que o comando ainda não ter minou e por isso vai acu sar erro na linha posterior quando o código já não faz mais sentido Outros erros em linhas mais abaixo são indicados em função deste primeiro erro printf Digite o primeiro numero printe Digite o primeiro numero undefined refe rence to printe Não foi encontrada a fun ção printe nas bibliotecas indicadas scanf d num2 scanf d num2 Linha 10 mis sing terminating character Falta o caractere aspas como terminador return 0 return 0 Linha 14 syntax error before token Acusou erro antes do token Token é como o compila dor chama elementos indivi duais do programa Linguagem C 46 Tecnologia em Análise e Desenvolvimento de Sistemas Para acertar o erro faça a edição diretamente no ponto desejado e re compile CTRL F9 Quando não houver mais erros será mostrada a tela da ilustração 7 Ilustração 7 Compilação sem erros Depois de compilado o programa e execução é feita logo em seguida Observe o resultado na ilustração 8 Ilustração 8 Compilação e execução do código fonte de Soma Capítulo 2 47 Programação I Olá As explicações dadas na sequência do conteúdo serão acompanha das de exemplos que você deverá digitar compilar e executar no programa DEV C Depois de executálos o código fonte deverá ser analisado e entendido A fim de facilitar o estudo mesmo longe do computador a partir daqui duas telas serão sempre apresentadas abaixo do exemplo São elas A tela branca que contém o código do programa citado como exemplo devidamente digitado no DEV C A tela preta que é o resultado da compilação e da execução Não avance se as dúvidas permanecerem Bom estudo 24 Constantes e Variáveis na Linguagem de Programação C Já aprendemos que uma constante tem o valor fixo e que uma variável que pode conter a cada tempo valores diferentes Vejamos um exemplo de declaração de variável em C Exemplo 2 Neste exemplo temos uma variável do tipo inteira que ar mazenará o valor digitado pelo usuário e exibirá em seguida esse valor Linguagem C 48 Tecnologia em Análise e Desenvolvimento de Sistemas A Ilustração 9 vai nos mostrar o resultado da compilação e da execução desse programa Ilustração 9 Compilação e execução do código fonte de Exemplo 2 241 Tipos de Variáveis na Linguagem de Programação C O tipo de variável tem o objetivo de informar a quantidade de memória que ocupará em bytes Inicialmente veremos 3 tipos de variáveis TIPO BYTES char 1 int 2 float 4 Exemplo 3 Capítulo 2 49 Programação I A Ilustração 10 vai nos mostrar o resultado da compilação e da execu ção desse programa Ilustração 10 compilação e execução do código fonte do Exemplo 3 25 Alguns dos Códigos para Impressão Formata da de Printf Como já vimos a função printf usa o caractere de percentual se guido de uma letra para identificar o formato de impressão No exemplo acima utilizamos 3 tipos de caracteres na função prin tf Na tabela abaixo estão relacionados os caractere com tipo de variável a ser impresso CÓDIGO SIGNIFICADO c usado quando a função for exibir apenas um caractere tipo char Exemplo M f usado quando a função for exibir número com ponto flutuante ou seja um número real com possibilidade de casas decimais tipo float Exemplo 180 s usado quando a função for exibir uma cadeia de caracteres ou seja uma ou várias palavras tipo char Exemplo azul d usado quando a função for exibir um número inteiro na base decimal tipo int Exemplo 25 Linguagem C 50 Tecnologia em Análise e Desenvolvimento de Sistemas 26 Códigos Utilizados Pela Função Scanf CÓDIGO FUNÇÃO c usado quando a função for armazenar um caractere tipo char d usado quando a função for armazenar um número inteiro tipo int f usado quando a função for armazenar um número real com possibi lidades de casas decimais tipo float s usado quando a função for armazenar uma cadeia de caracteres ou seja uma ou várias palavras tipo char Agora volte ao código fonte do Exemplo 3 revise a função printf e a função scanf confrontando os caracteres utilizados no exemplo com os apresentados nas tabelas Não siga adiante sem concluir essa verificação pois as funções serão empregadas constantemente em nossos exercícios Compreendêlas é de suma importância Bom estudo 27 Como fazer Comentários O comentário deve ser feito exatamente como aprendemos em Algorit mos Veja como ele foi colocado no programa abaixo Exemplo 4 Capítulo 2 51 Programação I Ilustração 11 Compilação e execução do código fonte de Exemplo 4 Observe que o comentário só apareceu no código fonte A tela preta mostra a execução do programa sem o comentário Vamos ver como ficam os operadores lógicos na linguagem C Portugol C E OU NÃO Linguagem C 52 Tecnologia em Análise e Desenvolvimento de Sistemas 20 Faça um programa que a peça ao usuário para digitar um número inteiro b armazene esse número numa variável chamada NUM1 c peça ao usuário para digitar outro número inteiro d armazene esse número numa variável chamada NUM2 e multiplique os valores e guarde o resultado numa variável cha mada MULT f exiba o resultado Obs Caso encontre dificuldades para fazer esse programa con sulte o exemplo Soma primeiro exemplo deste capítulo Capítulo 2 53 Programação I 21 Faça um programa que a peça ao usuário para digitar um número inteiro b armazene esse número numa variável chamada A c peça ao usuário para digitar outro número inteiro d armazene esse número numa variável chamada C e exiba os valores digitados Obs Caso encontre dificuldades para fazer este programa con sulte o Exemplo 2 visto no item 24 Linguagem C 54 Tecnologia em Análise e Desenvolvimento de Sistemas O que aprendemos até aqui Transformar Algoritmo escrito na linguagem natural para a Lin guagem C Declarar variáveis Fazer cometários em nosso códigos Compilar e executar exemplos apresentados Além disso conhecemos as particularidades das funções printf e scanf e obtivemos uma visão geral da Linguagem C 28 Comandos de Seleção No desenvolvimento de um programa podemos nos deparar com vá rias condições que acarretaram processamentos diferenciados ou seja muitas vezes uma parte do nosso programa só é executada se a condição para essa execução for verdadeira Para testar essa condição temos os comandos if e switch 281 Comando If Sintaxe if condição declaração O comando if será utilizado quando o programa ou parte dele necessi tar de uma condição simples para sua execução Vamos ver um exemplo em que o resultado da soma de dois números só seja exibido se for maior que 2 Exemplo 5 Capítulo 2 55 Programação I Ilustração 12 Demonstração do resultado se a soma for menor que 2 Ilustração 13 Demostração do resultado se a soma for maior que 2 Observe a Ilustração 13 O programa não mostrará nada se a soma dos dois números for menor que dois Apenas será exibida a mensagem default pressione qualquer tecla para continuar Linguagem C 56 Tecnologia em Análise e Desenvolvimento de Sistemas Exemplo 6 Este programa indica se o usuário tem o voto obrigatório Para isso ele solicita a sua idade em seguida verifica se esta idade é maior ou igual a 18 e ao mesmo tempo é menor ou igual a 70 Se sim então exibe a mensagem de voto obrigatório Observe na ilustração 14 a saída na console para uma entrada com ida de igual a 18 Ilustração 14 Demostração do resultado do exemplo6 Capítulo 2 57 Programação I Exemplo 7 Este exemplo exibe o preço de um produto com o acréscimo de uma taxa de venda Nem todos os produtos possuem esta taxa Observe que a entrada da taxa de venda é condicionada a resposta do usuário Mas em ambos os casos o programa exibe o preço final do pro duto com ou sem acréscimo Por que colocar espaço em c A função scanf obtém apenas os caracteres selecionados pelo Desta forma quando o processamento passa pelo f na entrada do preço apenas o número digitado será capturado e não o ENTER As sim o ENTER colocado à disposição no buffer é obtido pelo próximo scanfcpossuiTaxa se escrito sem espaço Por isso temos a falsa impressão de que o scanf não foi executado Observe na ilustração 15 a saída no console para uma entrada com pre ço igual a 20000 e taxa de venda igual a 1500 Ilustração 15 Demostração do resultado do exemplo6 Linguagem C 58 Tecnologia em Análise e Desenvolvimento de Sistemas Olá Façamos as atividades propostas a seguir para verificar como esta mos desenvolvendo o nosso aprendizado É importante que você digite os exemplos vistos conforme orienta ção dada no início deste Capítulo Vamos em frente 22 Desenvolva um programa que leia a matrícula e a nota final de um aluno de uma escola Se a nota final for maior ou igual a 60 o programa deve exibir a mensagem Aluno aprovado Capítulo 2 59 Programação I 23 Faça um programa que leia o sexo do usuário e apresente a men sagem O sexo é válido se o caractere digitado for M ou F 24 Faça um programa que leia um número dado como entrada e apresente a mensagem O número está na faixa correta somente se o valor fornecido for entre 20 e 90 Linguagem C 60 Tecnologia em Análise e Desenvolvimento de Sistemas 25 Faça um programa que leia o valor do salário bruto de um fun cionário Se o salário for menor ou igual a R 50000 o programa deve aplicar um aumento de 10 Em seguida exiba o salário independente se ele sofreu reajuste ou não 282 Comando IfElse Sintaxe if condição declaração1 else declaração2 O comando ifelse permite maior agilidade ao programa quando este for composto por duas ou mais condições as quais deve ser avaliadas antes da execução das partes bloco de comandos que o compõem No exemplo visto no comando if o programa só exibiria a mensagem quando o resultado fosse maior que 2 Para resultados menores que 2 nós não definimos nenhum bloco de comando logo o programa sim plesmente não executaria nenhum comando Agora definiremos um bloco de comandos para resultados meno res que 2 Capítulo 2 61 Programação I Exemplo 8 Ilustração 16 Demonstração do resultado se a soma for maior que 2 Ilustração 17 Demonstração do resultado se a soma for menor que 2 Linguagem C 62 Tecnologia em Análise e Desenvolvimento de Sistemas Observe que agora definimos comandos específicos para resultados maiores que 2 e para resultados menores que 2 conforme demonstrado nas Ilustrações 16 e 17 Exemplo 9 Este exemplo complementa o exemplo 6 exibindo se o usário tem voto facultativo ou proibido Observe no primeiro if que se a idade não estiver no intervalo de 18 a 70 o algoritmo verifica se a idade é menor do que 16 pois se o proces samento chegou até neste ponto é porque a idade é menor do que 18 ou maior do que 70 Quando a idade for menor que 16 o voto é proibido Caso contrário será facultativo ou seja 16 17 ou maior do que 70 Observe na ilustração 18 a saída no console para uma entrada com ida de igual a 17 Ilustração 18 Demostração do resultado do exemplo 9 Observe ainda que é possível escrever o comando else em conjunto com o próximo if de uma forma mais compacta Veja o mesmo exemplo es crito desta forma com else if Capítulo 2 63 Programação I Linguagem C 64 Tecnologia em Análise e Desenvolvimento de Sistemas Exemplo 10 Neste exemplo o usuário responde o valor do salário e em seguida rece be uma classificação por nível variando de 1 a 6 A primeira compara ção verifica se o salário é negativo Neste caso o programa acusa erro Observe na ilustração 19 a execução do programa para um salário igual a 12 mil Ilustração 19 Demostração de uma execução do exemplo 10 Capítulo 2 65 Programação I Vamos aproveitar os exercícios de 22 a 25 da seção anterior para realizar os exercícios desta seção Lembrese de que as atividades devem ser feitas individualmente Bom estudo 26 Como complemento do exercício 22 o programa deverá exibir também a mensagem Aluno reprovado quando a nota final do aluno for menor que 60 Linguagem C 66 Tecnologia em Análise e Desenvolvimento de Sistemas 27 Como complemento do exercício 23 o programa deverá exi bir também a mensagem Sexo inválido se o caractere digitado for diferente de M ou F 28 Como complemento do exercício 24 o programa deverá exibir também a mensagem O número está na faixa incorreta caso o valor fornecido não esteja entre 20 e 90 29 Como complemento do exercício 25 o programa deverá aplicar também um aumento de 5 se o salário for maior do que R 50000 Capítulo 2 67 Programação I 283 Comando Switch sintaxe switch variável case constante 1 declaração 1 break case constante 2 declaração 2 break default declaraçãodefault O comando switch é similar ao ifelse mas não poderá ser usado quan do a condição a ser testada for uma expressão Só é aceitável uma variável no switch Esta variável deve ser de algum tipo numérico inteiro como por exemplo int e char char armazena o código ASCII do caracter isto é um número inteiro Exemplo 11 Neste programa o usuário além de digitar 2 números inteiros poderá escolher a operação a ser realizada Este exemplo não condiz com o código Linguagem C 68 Tecnologia em Análise e Desenvolvimento de Sistemas Ilustração 20 Demonstração compilação e execução do Exemplo 11 Capítulo 2 69 Programação I Exemplo 12 O usuário informa o número do mês e o programa responde com o nome deste mês Se o valor não for de 1 a 12 é exibida uma mensagem de alerta Observe na ilustração 21 a execução do programa para o mês igual a 8 Ilustração 21 Demostração de uma execução do exemplo 12 Linguagem C 70 Tecnologia em Análise e Desenvolvimento de Sistemas Exemplo 13 Neste exemplo o usuário informa o número do mês e o programa exibe a quantidade máxima de dias possíveis para o referido mês Observe que os comandos case podem ser agrupados para disparar uma única ação Por exemplo os meses abril junho setembro e novembro nú meros 4 6 9 e 11 possuem um máximo de 30 dias e assim fazem uma única atribuição de 30 para a variável maximoDias Capítulo 2 71 Programação I Observe na ilustração 22 a execução do programa para o mês de junho número 6 Ilustração 22 Demostração de uma execução do exemplo 13 if Estrutura condicional if assume uma as duas possíveis ações com base no resultado do teste SCHILDT 1995 p 89 ifelse Estrutura condicional if assume uma as duas possíveis ações com base no resultado do teste SCHILDT 1995 p 91 swith Testa uma variável em relação a diversos valores preestabelecidos SCHILDT 1995 p 98 Linguagem C 72 Tecnologia em Análise e Desenvolvimento de Sistemas 30 Faça um programa que leia três valores distintos a serem di gitados pelo usuário e utilizando o comando ifelse determine e exiba o menor deles 31 Uma empresa dará aumento aos seus funcionários de acordo com sua função a função 1 vendedor 01010 de aumento b função 2 gerente 01515 de aumento c função 3 diretor 02020 de aumento Usando o comando switch faça um programa que leia o salário e a função do funcionário calcule e exiba os salários com os devi dos aumentos Capítulo 2 73 Programação I 32 Usando o comando if desenvolva um programa que peça ao usuário um valor e o armazene na variável X Tal programa de verá efetuar o cálculo de C AB X se o valor informado for maior que 5 e efetuar o cálculo C ABX se o valor for menor que 5 Se o valor for igual a 5 não faça nada O que aprendemos até aqui Que há três comandos de seleção os quais nos ajudam a desen volver programas com mais clareza Que o comando if é utilizado para decisão simples Que o comando ifelse é utilizado quando com base em uma condição o programa pode executar um entre os variados blo cos de comandos existentes Que o comando switch é utilizado quado temos condições que não sejam expressões Linguagem C 74 Tecnologia em Análise e Desenvolvimento de Sistemas 29 Comandos de Repetição Até agora só conseguíamos executar o programa uma única vez Se houvesse a necessidade de um novo teste o que fazíamos era executar o programa novamente A partir de agora conheceremos os comandos de repetição os quais nos ajudarão em casos em que a repetição de parte do programa se fizer necessária Os comandos são for while e do while 291 O Comando For Sintaxe for inicialização condição incremento declaração Usaremos o comando for quando conhecermos antecipadamente o núme ro de vezes que uma determinada parte do programa loop se repetirá O comando for avalia primeiramente a expressão inicialização Depois avalia a expressão condição que se verdadeira passa a executar o corpo de comandos declaração Em seguida avalia a expressão incremento e recomeça tudo novamente na avaliação da expressão condição Se a expressão condição não for verdadeira então o processamento vai para o próximo comando após o for Exemplo 14 Uma utilização do comando for bem simples exibir no console a frase Linguagem de Programação C 5 vezes Capítulo 2 75 Programação I Vamos entender o que fazem as duas linhas forn 1 n 5 n printfLinguagem de Programacao C A linha 1 inicialmente faz a variável n receber 1 Em segundo lugar avalia se n ainda é menor ou igual a 5 Em terceiro lugar a linha 2 exibe a frase Linguagem de Programação C Em quarto lugar o comando for avalia n isto é o mesmo que fazer n receber n1 ou seja é uma expres são para incrementar em uma unidade o valor de n Nesta hora com n valendo 2 volta para avaliar se n ainda é menor ou igual a 5 e continua Quando n receber o valor 6 então o processamento sai do comando for pois a condição n5 não será mais verdadeira A ilustração 23 mostra a saída do exemplo 14 Ilustração 23 Demostração de uma execução do exemplo 14 Exemplo 15 Uma outra utilização simples exibir os números pares de 10 a 500 Linguagem C 76 Tecnologia em Análise e Desenvolvimento de Sistemas Observe que a expressão par 2 equivale a par par 2 O comando for desta vez determina o início da variável par em 10 e o término quando a variável par passar de 500 A ilustração 24 mostra a saída do exemplo 15 Ilustração 24 Demostração de uma execução do exemplo 15 Exemplo 16 Vamos fazer um programa que leia a nota de 10 alunos e no final exiba a média da turma linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 float nota soma0 media0 conta linha 6 forconta0 conta9 conta linha 7 linha 8 printf Digite a nota linha 9 scanffnota linha 10 somasomanota linha 11 esta chave encerra o comando de repetição for Linha 12 media somaconta linha 13 printf A media da turma e f media linha 14 systemPAUSE linha 15 return 0 linha 16 Vamos entender melhor algumas linhas do código acima Capítulo 2 77 Programação I linha 5 float nota soma0 media0 conta Houve a necessidade de iniciarmos essas variáveis com zero por tratar se de variáveis que terão valores cumulativos Já vimos que ao declararmos uma variável estamos reservando um es paço na memória o qual não é necessariamente um espaço limpo Isso significa que nossa variável no momento da declaração armazena ape nas lixo Ao atribuirmos o valor zero para ela garantimos que os valores sejam acumulados corretamente linha 6 forconta0contaconta A linha do comando for controla a quantidade de vezes que o loop será executado Observe que ele inicia a variável conta de zero conta0 controla o loop para ser executado 10 vezes conta9 e finalmente incrementa a variável conta conta É importante notar que o comando conta é o mesmo que conta conta 1 Observe que o comando for possui um par de chaves envolvendo os comandos Isto é necessário quando há mais de um comando para ser repetido Compare com os exemplos 14 e 15 que não possuem estas chaves Isto é o mesmo que acontecia com a estrutura ifelse linha 10 somasomanota Nessa linha acumulase a soma das notas da turma linha 12 media somaconta Observe que essa linha de comando foi colocada após encerramento do for pois só nos interessa calcular a média depois que todas as notas forem somadas Como a variável conta guarda o número de vezes que o loop foi executa do que é igual à quantidade de alunos estipulada no programa em vez de dividirmos a soma por 10 fazemos a divisão utilizando a variável conta linha 13 printf A media da turma e f media Para melhorarmos a exibição dessa mensagem basta trocar f por 2f será exibido apenas 2 casas depois da vírgula Linguagem C 78 Tecnologia em Análise e Desenvolvimento de Sistemas Vejamos na Ilustração 15 o resultado do nosso programa Ilustração 25 compilação e execução do código fonte do Exemplo 16 Olá Para fazer as atividades seguintes lembrese de consultar todo ma terial já disponível e ainda outros materiais se julgar necessário Tente sempre fazer suas atividades individualmente pois isso lhe dará autoconfiança e você crescerá em conhecimento e agilidade para resolver problemas Bom estudo 33 Desenvolva um programa para exibir os números ímpares de 3 a 49 Capítulo 2 79 Programação I 34 Faça um programa que leia 5 valores reais e escreva o seu somatório 35 Elabore um programa para exibir a tabuada de um número fornecido pelo usuário Por exemplo se o número informado for 5 então será exibido 5 x 1 5 5 x 2 10 5 x 3 15 5 x 4 20 5 x 5 25 5 x 6 30 5 x 7 35 5 x 8 40 5 x 9 45 5 x 10 50 Linguagem C 80 Tecnologia em Análise e Desenvolvimento de Sistemas 36 Apresente uma tabela de conversão de reais em dólares Ela deve ser totalmente configurável ou seja o usuário pode informar o valor inicial e final o valor de incremento e o valor de 1 dólar Apresente os números no formato monetário com duas casas de cimais Dica use o formato 2f na função printf para obter exatamente duas casas decimais 37 Faça um programa que calcule a média de 5 números inteiros dados como entrada e imprima o resultado Capítulo 2 81 Programação I 292 O Comando While sitaxe while condição declaração O comando while repete o bloco de comandos declaração enquanto a condição for verdadeira Usaremos o comando while quando não soubermos antecipadamente o número de vezes que o programa será executado Quem definirá o fim da execução do programa será o usuário Exemplo 17 Vamos utilizar o mesmo exemplo do comando for porém o que faremos é ler a primeira nota as demais só serão lidas se o usuário desejar Nosso código ficará assim Vamos entender melhor algumas linhas do código acima linha 6 int resp1 contador0 A variável resp será responsável por armazenar a resposta do usuário Perceba que ela já contém a primeira resposta Isso se faz necessário para que a primeira vez possa ser executada Linguagem C linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 float nota soma0 media0 linha 6 int resp1 contador0 linha 7 whileresp1 linha 8 esta chave inicia o comando de repetição while linha 9 printf Digite a nota linha 10 scanffnota linha 11 somasomanota linha 12 printfDigite 1 para continuar ou digite outra tecla para finalizar linha 13 scanfdresp linha 14 contador Essa linha é igual a contadorcontador 1 linha 15 linha 16 media somacontador linha 17 printf A media da turma e 2f media linha 18 systemPAUSE linha 19 return 0 linha 20 82 Tecnologia em Análise e Desenvolvimento de Sistemas A variável contador guardará a quantidade de vezes que o usuário digi tou uma nota o que corresponderá à quantidade de alunos Precisare mos desse total para calcular a média da turma linha 7 while resp 1 Observe que enquanto a resp for igual a 1um o loop será executado Assim podemos entender o motivo pelo qual iniciamos a variável resp no momento da sua declaração Caso o valor 1 não fosse atribuído à variável no início o programa nunca seria executado linha 14 contador A variável contador está acumulando as entradas Vamos ver na Ilustração 16 o resultado da compilação e da execução do nosso programa Ilustração 26 compilação e execução do código fonte do Exemplo 17 Exemplo 18 Vamos refazer o exemplo 15 exibe os números pares de 10 a 500 agora com o comando while Capítulo 2 83 Programação I Comparando com o exemplo 15 é como se houvesse um desmembra mento das três expressões do comando for A primera fica logo no início pois é avaliada apenas uma vez A segunda permanece no comando pois é a condição para manter a repetição e a terceira fica no final do bloco de comandos pois é executada somente depois A saída no console do exemplo 18 é igual a do exemplo 15 Exemplo 19 O usuário irá fornecer uma relação de notas dos alunos de uma turma Para terminar a entrada ele terá que digitar uma nota negativa Em se guida será exibida a maior de todas as notas Linguagem C 84 Tecnologia em Análise e Desenvolvimento de Sistemas Observe a importância da variável notaMaior É ela que armazena a maior nota a cada nova nota que é digitada A ilustração 27 mostra a saída do exemplo 19 Ilustração 27 Demostração de uma execução do exemplo 19 Olá Lembrese de que as atividades solicitadas neste fascículo não são avaliativas A finalidade delas é dar base ao aluno para que ele pos sa aproveitar melhor o tempo disponível quando estiver no ambien te virtual Os exercícios preparam você para realizar com sucesso as atividades propostas na sala de aula virtual Por isso aproveite faça sempre todas as atividades propostas no seu material impresso Bom estudo Capítulo 2 85 Programação I 38 Usando o comando while faça um programa para exibir os números múltiplos de 5 a partir de 10 A quantidade de números será determinada pelo usuário 39 Usando o comando while faça um programa para receber as idades de um grupo de pessoas Não se sabe a quantidade de pes soas do grupo permita que o usuário determine o término da en trada quando ele digitar uma idade negativa Em seguida exiba a menor de todas as idades Linguagem C 86 Tecnologia em Análise e Desenvolvimento de Sistemas 40 Faça um programa que leia a data de validade apenas o nú mero do mês e o preço das mercadorias de um supermercado Considere que a A mercadoria que vencer no mês 7 terá um desconto de 15 b A mercadoria que vencer nos meses 8 e 9 terá um desconto de 10 c As mercadorias com vencimento nos demais meses não terão desconto Exiba o preço da mercadoria já com o desconto Não se sabe a priori a quantidade de mercadorias por isso o pro grama será executado enquanto o usuário quiser 293 O Comando do while Sintaxe do comandos whilecondição Com esse comando asseguramos que o programa seja executado pelo menos uma vez Depois de executar a primeira o loop continuará a ser executado enquanto a condição for verdadeira Exemplo 20 Vamos utilizar o mesmo exemplo do comando while Capítulo 2 87 Programação I Nosso código ficará assim Vamos entender melhor algumas linhas do código acima linha 7 do Início do comando dowhile linha 15 whileresp 1 Enquanto essa condição for verdadeira o programa continuara em execução Linguagem C linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 float nota soma0 media0 linha 6 int resp contador0 linha 7 do linha 8 linha 9 printf Digite a nota linha 10 scanffnota linha 11 somasomanota linha 12 printfDigite 1 para continuar ou digite outra tecla para finalizar linha 13 scanfdresp linha 14 contador Esse comando é igual a contadorcontador 1 linha 15 whileresp1 linha 16 media somacontador linha 17 printf A media da turma e 2f media linha 18 systemPAUSE linha 19 return 0 linha 20 88 Tecnologia em Análise e Desenvolvimento de Sistemas Vamos ver na Ilustração 28 o resultado da compilação e da execução do nosso programa Ilustração 28 compilação e execução do código fonte do Exemplo 20 Capítulo 2 89 Programação I Exemplo 21 Vamos refazer o exemplo 15 exibe os números pares de 10 a 500 agora com o comando dowhile Comparando com o exemplo 18 observamos que a avaliação da condi cional par500 vai ser feita por último Neste caso a saída será a mes ma dos exemplos 18 e 15 mas existem casos em que esta mudança traz diferenças bem visíveis pois a verificação só é realizada depois que o processamento já executou pelo menos uma vez o código Veja mais detalhes nos três próximos exemplos Exemplos 22 23 O objetivo é obter a letra inicial do nome do usuário e imprimíla uma determinada quantidade de vezes O exemplo 22 a seguir mostra uma versão feita com while Exemplo 22 versão com while Linguagem C 90 Tecnologia em Análise e Desenvolvimento de Sistemas O exemplo 23 mostra uma versão feita com dowhile mas como o programador apenas substituiu o while pelo dowhile sem fazer os ajustes necessários ele não funciona para a quantidade igual a zero pois a função printf é executada primeiramente para depois acontecer a avaliação da expressão Exemplo 23 versão com dowhile Para resolver este problema podese usar um comando ifelse para veri ficar se a quantidade é maior do que zero Melhor mesm é usar o coman do apropriado para cada situação ou seja neste caso o comando while como no exemplo 22 ou o comando for que ainda é mais adequado para situações onde já se tem a quantidade de repetições como neste caso Capítulo 2 91 Programação I 41 Construa um programa capaz de ler uma série de números até obter um número inferior a 100 42 Construa um programa capaz de ler uma série de números até que apareça um número entre 1 e 5 43 Refaça o exercício 39 agora com o comando dowhile Linguagem C 92 Tecnologia em Análise e Desenvolvimento de Sistemas O que aprendemos até aqui Os comandos for while e do while são responsáveis pela repe tição do programa Os três comandos podem ser usados para resolver o mesmo pro blema cabe ao programador decidir qual deles melhor respon derá às necessidades para a solução do problema for comando de controle de fluxo que executa repetidamente um conjunto de comandos um numero determinado de vezes LAUREANO 2005 p 39 while comando de controle de fluxo que executa repetidamente um conjunto de comandos baseados em uma condição avaliada antes do comando ser executado LAUREANO 2005 p 40 do while comando de controle de fluxo que executa repetidamen te um conjunto de comandos baseados em uma condição avaliada depois do comando ser executadoLAUREANO 2005 p 41 Leituras complementares KERNIGHAN Brian W C Linguagem de Programação Parão ANSI Rio de Janeiro Elsevier 1989 ROBERT Sebesta Conceitos de Linguagem de Programação BookMan 2003 Capítulo 2 93 Programação I Métodos e Estratégias de Estudo Olá Neste Capítulo será abordado o conceito de vetor e matriz Reserve um tempo maior para estudo e realização de atividades Vamos em frente 31 Entendendo Vetor Os comandos de repetição nos oportunizaram conhecer o comporta mento de armazenagem de uma variável Conseguimos constatar que cada vez que o loop se repetia os dados eram atualizados nas variáveis e nesse processo perdíamos os dados anteriores ao loop em execução Verificamos então a necessidade de conhecermos uma outra estrutu ra em que fosse possível armazenarmos os valores sem que eles fossem constantemente atualizados O vetor é uma estrutura em que poderemos armazenar vários dados mas precisamos ficar atentos ao fato de que os dados armazenados de verão ser de um só tipo Na declaração do vetor já definimos o tipo ou seja indicamos se os valores que serão armazenados nele são do tipo float ou inteiro por isso conceituase o vetor como sendo uma estru tura de dados homogênea O tipo char será visto posteriormente 311 Declarando Vetor Sintaxe tipodavariável nomedavariável tamanho Vamos exemplificar o vetor para melhor entender a sua declaração A Ilustração 18 apresenta o vetor NUMEROS capaz de armazenar 5 va lores inteiros VETORES E MATRIZES 94 Tecnologia em Análise e Desenvolvimento de Sistemas NUMEROS 0 1 2 3 4 Ilustração 18 Demostração do Vetor NUMEROS A declaração do nosso vetor ficará assim int NUMEROS5 Na declaração estamos informando que int armazenará apenas valores do tipo inteiro NUMEROS5 poderá armazenar até 5 valores O fato de termos declarado o vetor com 5 posições Figura 18 não significa que estamos livre do controle do índice A linguagem C não verifica se o índice que você usou está dentro dos limites válidos Você é quem deverá ter o cuidado de controlar os limites 312 Atribuindo Valores ao Vetor Inicialização Para atribuirmos um valor ao vetor precisaremos indicar em qual posição o valor será armazenado Para essa indicação utilizaremos o índice do vetor Exemplo 24 Capítulo 3 95 Programação I Vejamos na Ilustração 18 como ficaria esse código após execução Ilustração 29 compilação e execução do código fonte do Exemplo 24 Se a atribuição que fizemos no Exemplo 24 fosse de 10 valores inteiros para um vetor com 10 posições teríamos que escrever mais cinco atri buições E se fosse um vetor com 500 posições Imagine escrever essas atribuições uma a uma Vamos utilizar o comando de repetição for para nos ajudar a fazer essas atribuições sem ter que escrevêlas Exemplo 25 Vetores e Matrizes linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 int NUMEROS10 conta linha 6 forconta0 conta10 conta linha 7 linha 8 NUMEROScontaconta linha 9 linha 10 forconta0 conta10 conta linha 11 linha 12 printf d foi armazenado no vetor NUMEROSconta 96 Tecnologia em Análise e Desenvolvimento de Sistemas linha 13 linha 14 systempause linha 15 Vamos entender algumas linhas do código linha 5 int NUMEROS5 conta O vetor NUMEROS foi declarado A variável conta foi declarada linha 6 forconta1conta10conta O comando for será utilizado para repetir a atribuição enquanto a vari ável conta for menor que 10 linha 8 NUMEROcontaconta Dentro do bloco do comando for o valor da variável conta será atribuída ao vetor linha 10 forconta1conta10conta O comando for irá exibir um a um os valores do vetor NUMEROS linha 12 printf d foi armazenado no vetor NUMEROSconta Os valores que foram armazenados no vetor serão exibidos um a um Na Ilustração 19 podemos conferir como se comportou o nosso código Ilustração 30 compilação e execução do código fonte do Exemplo 25 Capítulo 3 97 Programação I Exemplo 26 Vamos observar as duas utilizações de comando for em nosso programa o primeiro for irá preencher o vetor com valores inteiros digita dos pelo usuário o segundo for irá exibir os valores digitados O código ficara assim Vetores e Matrizes 98 Tecnologia em Análise e Desenvolvimento de Sistemas A Ilustração 31 mostrará a compilação e execução do programa Ilustração 31 Compilação e execução do código fonte do Exemplo 26 Capítulo 3 99 Programação I Detalharemos mais as operações sobre vetores no ambiente da sala de aula virtual Vamos em frente 44 Faça um programa que a preencha dois vetores A e B de 5 posições com números inteiros b atribua a um vetor RES a soma do vetor A com B a primeira posição de A será somada à primeira posição de B e o resultado será atribuído a primeira posição do Vetor RES c mostre os valores do vetor RES 313 Vetor de String Sintaxe char nomedastrig tamanho Na Linguagem C ao declararmos uma string estaremos na realidade declarando um vetor que irá armazenar vários caracteres terminando com um caractere nulo com valor inteiro igual a zero Vejamos na Ilustração 32 uma demostração de um vetor de 9 posições para armazenar a string Educação Vetores e Matrizes 100 Tecnologia em Análise e Desenvolvimento de Sistemas NOME E D U C A C A O 0 0 1 2 3 4 5 6 7 8 Ilustração 32 Demostração do vetor NOME A declaração do nosso vetor ficará assim char NOME 9 Observe que declaramos uma posição a mais garantindo uma posição para o caractere nulo 314 Leitura de Vetor de String Para armazenar uma string num vetor a leitura será feita por meio da função gets Essa função colocará o terminador nulo na string assim que a tecla enter for pressionada Vejamos um exemplo de leitura de vetor do tipo string Exemplo 27 Vejamos na Ilustração 33 como ficará nosso programa após ser compi lado e executado Capítulo 3 linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 char Nome10 linha 6 printfDigite a mensagem linha 7 getsNome linha 8 printfA mensagem digitada foi s Nome linha 9 systempause linha 10 101 Programação I Ilustração 33 Compilação e execução do código fonte do Exemplo 27 Vamos entender algumas linhas do código linha 5 char Nome10 Declaramos um vetor com 10 posições Isso significa que esse vetor po derá armazenar até 9 caracteres linha 7 getsNome Observe que para leitura não utilizamos a função scanf a função uti lizada para leitura foi a gets linha 8 printfA mensagem digitada foi s Nome O que nos chama a atenção nessa linha é o caractere de impressão s Esse caractere como já vimos imprimi uma cadeia de caracteres O que aprendemos até aqui Vetor é uma estrutura indexada que armazenará dados de um mesmo tipohomogêneos string na realidade é um vetor de caractere que deverá ser lida por meio da função gets Vetores e Matrizes 102 Tecnologia em Análise e Desenvolvimento de Sistemas 32 Matriz Sintaxe tipodavariável nomedavariável alturalargura Exemplificamos abaixo uma matriz para entendermos a sua declaração A Ilustração 34 irá representar a matriz DADOS capaz de armazenar as duas notas de 3 alunos DADOS 0 8050 7590 1 7050 7530 2 4030 6021 0 1 Ilustração 34 Demonstração Matriz A declaração da nossa matriz ficará assim float DADOS32 Na declaração informamos que float armazenará apenas valores do tipo float DADOS 32 o índice da esquerda 3 indexa as linhas o índice da direita2 indexa as colunas Vale a pena lembrar Na linguagem C os índices iniciam de zero Nós é que mantemos os índices na faixa declarada a Linguagem C não fará o controle automaticamente Façamos o código do programa da matriz representada na Ilustração 35 Exemplo 28 linha 1 include stdioh linha 2 include stdlibh linha 3 int main cada linha irá conter as duas notas logo aluno nota1 nota2 0 8050 7590 1 7050 7530 2 4030 6021 cada coluna representa uma nota logo 0 primeira nota 1 segunda nota Capítulo 3 103 Programação I linha 4 linha 5 float dados32 linha 6 int lincol linha 7 printfINICIANDO O LOOP DE LEITURA linha 8 forlin0lin3lin linha 9 forcol0col2col linha 10 linha 11 printfDigite a nota linha 12 scanff dadoslincol linha 13 linha 14 printf INICIANDO O LOOP DE EXIBICAO linha 15 forlin0lin3lin linha 16 forcol0col2col linha 17 printfnota 2f dadoslincol linha 18 systempause linha 19 A execução do código poderá ser analisada por meio da Ilustração 24 abaixo Ilustração 35 Compilação e execução do código fonte do Exemplo 28 Vamos entender algumas linhas do código Vetores e Matrizes 104 Tecnologia em Análise e Desenvolvimento de Sistemas linha 8 forlin0lin3lin linha 9 forcol0col2col O primeiro for controlará a linha e o segundo controlará a coluna 45Carregue uma matriz com as 3 notas de 4 alunos Calcule a média das notas e mostre a quantas notas ficaram abaixo da média Capítulo 3 105 Programação I 46 Carregue uma matriz 3 x 3 com os valores das vendas de uma loja supondo 3 meses e 3 vendedores Calcule e mostre em cada mês qual foi o vendedor que vendeu mais 321 Matriz de String Pelo que aprendemos até aqui podemos deduzir que uma matriz de string armazena vários nomes Precisamos ficar atentos ao fato de que uma é a forma de se declarar a matriz e outra é a forma de se fazer re ferências a ela Ao declararmos a matriz precisamos informar os dois índices linha e coluna porém a referência será feita apenas por um índice Vetores e Matrizes 106 Tecnologia em Análise e Desenvolvimento de Sistemas Exemplo 29 Façamos uma matriz para armazenar o nome de três pes soas sendo que cada nome poderá ter no máximo 30 caracteres linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 char nomes330 linha 6 int lin linha 7 printfINICIANDO O LOOP DE LEITURA linha 8 forlin0lin3lin linha 9 linha 10 printfDigite o nome linha 11 getsnomeslin linha 12 linha 13 printf INICIANDO O LOOP DE EXIBICAO linha 14 forlin0lin3lin linha 15 printfnome s nomeslin linha 16 systempause linha 17 Vamos entender algumas linhas do código linha 5 char nomes330 Declaramos a matriz para receber 3 nomes de no máximo 30 caracteres linha 6int lin Declaramos a variável lin linha 7printfINICIANDO O LOOP DE LEITURA O printf imprimirá uma mensagem avisando o início da leitura linha 8 forlin0lin3lin Como a matriz é de string só precisamos de um for para controlar o índice linha Capítulo 3 107 Programação I linha 11 getsnomeslin Utilizamos a função gets para ler os nomes os caracteres linha 15 forlin0lin3lin Exibindo os nomes digitados Acompanhe a Ilustração 26 digitação compilação e execução do Exemplo 29 Ilustração 36 Compilação e execução do código fonte do Exemplo 29 Exemplo 30 Neste programa vamos permitir o cadastro de vários nomes com as suas respectivas idades Ao término da entrada será calculada a média das idades e em seguida será exibida a relação dos nomes cuja idade é maior do que a média Vetores e Matrizes 108 Tecnologia em Análise e Desenvolvimento de Sistemas Algumas observações Foi declararada uma matriz de char para que houvesse um limi te de 50 nomes com no máximo29 caracteres pois o último já é reservado ao 0 O vetor das idades armazena de forma correspondente as po sições dos nomes ou seja a quinta idade idades4 se refere ao quinto nome nomes4 O acesso ao nome é feito usandose apenas a primeira dimensão da matriz nomen A ilustração 37 mostra uma possível execução do exemplo 30 Ilustração 37 Demostração de uma execução do exemplo 30 Capítulo 3 109 Programação I 47 Elabore um programa para receber os alunos de uma turma com as suas respectivas notas finais Após a entrada exiba os no mes cuja notas sejam maiores do que a média da turma e que ao mesmo tempo sejam maiores do que a média de aprovação que é igual a 70 Vetores e Matrizes 110 Tecnologia em Análise e Desenvolvimento de Sistemas O que aprendemos até aqui Na matriz podemos armazenar vários dados desde que eles se jam do mesmo tipo Uma matriz de string armazenará por exemplo vários nomes Para fazer referência a uma matriz de string basta indicar apenas um índice vetor Matrizes unidimensionais LAUREANO 2005 p69 matriz Agregado homogêneo de elementos de dados cujo ele mento individual é identificado por sua posição no agregado em relação ao primeiro LAUREANO 2005 p70 SCHILDT Herbert C Completo e Total São Paulo Pearson 2006 KERNIGHAN Brian W C Linguagem de Programação Parão ANSI Rio de Janeiro Elsevier 1989 Capítulo 3 111 Programação I Olá Estamos chegando na reta final é importante continuarmos com o mesmo interesse e com a mesma dedicação Este capítulo exigirá de você muita dedicação e cumprimento de todas as tarefas Vamos em frente Vimos que na Matriz podemos armazenar dados de um mesmo tipo Na Estrutura estes dados podem ser de vários tipos 41 Declarando uma Estrutura Sintaxe struct nomedotipodaestrutura tipo1 nome1 tipo2 nome2 tipon nomen variáveisestrutura Vamos declarar uma estrutura chamada pauta que armazenará a matrícula e a média de um aluno struct pauta int matr float media aluno Temos que pauta é uma estrutura com dois campos matr e media aluno é uma variável do tipo pauta ESTRUTURASSTRUCT 112 Tecnologia em Análise e Desenvolvimento de Sistemas Abaixo foi declarada uma estrutura endereço que guardará os da dos referentes ao endereço de uma única pessoa struct tipoendereco char rua50 int numero char bairro20 char cidade30 char siglaestado3 int CEP end Criemos agora uma estrutura chamada fichapessoal com os da dos pessoais de uma pessoa struct fichapessoal char nome50 int telefone struct tipoendereco end agenda Vemos pelo exemplo acima que uma estrutura pode fazer parte de ou tra a struct tipoendereco é usada pela struct fichapessoal Olá Vamos fazer algumas declarações de estruturas para testar nosso aprendizado até aqui As declarações solicitadas nessa atividade devem ser realizadas individualmente Consulte a declaração da estrutura pauta acima Ela poderá auxiliálo Vamos em frente Capítulo 4 113 Programação I 48 Declare as estruturas conforme solicitado em cada um dos enunciados a Para armazenar a média final e a matrícula de um aluno b Para armazenar a matrícula os número de dependentes e o sa lário de um funcionário c Para armazenar o número do telefone o número do celular o va lor da compra e o código de um cliente EstruturasSTRUCT 114 Tecnologia em Análise e Desenvolvimento de Sistemas 42 Utilizando Estrutura no Programa Neste exemplo será declarada uma estrutura para armazenar e exibir a matrícula e a média de um aluno Exemplo 31 linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 struct pauta linha 5 linha 6 int matr linha 7 float media linha 8 aluno linha 9 printfSOLICITANDO OS DADOS linha 10 printfDigite a matricula linha 11 scanfd alunomatr linha 12 printfDigita a media linha 13 scanff alunomedia linha 14 printf MOSTRANDO OS DADOS linha 15 printfMatricula d alunomatr linha 16 printfMedia 2f alunomedia linha 17 systempause linha 18 return 0 Vejamos na Ilustração 39 como ficou o programa Ilustração 39 Demostração de uma execução do exemplo 31 Capítulo 4 115 Programação I Vamos analisar algumas linhas do programa linha 11 scanfd alunomatr Para a leitura correta do dado precisamos informar em qual campo da variável aluno o dado lido será armazenado Na linha 12 informamos que o dado será armazenado no campo matr da variável aluno alunomatr linha 16 printfMedia 2f alunomedia Da mesma forma precisamos informar qual o campo será impresso Na li nha 17 informamos que o dado a ser impresso é a média alunomedia 49 Aproveitando as declarações feitas na atividade 41 vamos ago ra desenvolver o programa a Faça um programa que leia e exiba a média final e na matrícula de um aluno b Faça um programa que leia e exiba a matrícula os números de dependentes e o salário de um funcionário EstruturasSTRUCT 116 Tecnologia em Análise e Desenvolvimento de Sistemas c Faça um programa que leia e exiba o número do telefone o número do celular o valor da compra e o código de um cliente Olá Até aqui fizemos várias atividades de estruturas armazenando da dos de uma única pessoa Vamos agora fazer estruturas que arma zenem os dados de várias pessoas e alterar os exercícios propostos na atividade 42 Vamos em frente 43 Vetores de Estrutura Struct Um vetor de estrutura é um vetor que armazenará os dados de várias pes soas A estrutura pauta que declaramos no início do capítulo e que arma zenava os dados de um único aluno aqui irá armazenar os dados de uma turma inteira Para isso temos que fazer uma pequena alteração assim struct pauta int matr float media aluno4 Capítulo 4 117 Programação I Pronto declaramos que a variável aluno tem 4 posições verifique a re presentação da estrutura na Ilustração 40 matr media matr media matr media matr media 0 1 2 3 Ilustração 40 Representação da estrutura pauta Vamos desenvolver um programa utilizando essa declaração Exemplo 32 EstruturasSTRUCT linha 1 include stdioh linha 2 include stdlibh linha 3 int main linha 4 linha 5 int lin linha 6 struct pauta linha 7 linha 8 int matr linha 9 float media linha 10 aluno4 linha 11 printfLOOP SOLICITANDO OS DADOS linha 12 forlin0lin4lin linha 13 linha 14 printfDigite a matricula linha 15 scanfd alunolinmatr linha 16 printfDigite a media linha 17 scanff alunolinmedia linha 18 linha 19 printf LOOP MOSTRANDO OS DADOS linha 20 forlin0lin4lin linha 21 linha 22 printfMatricula d alunolinmatr linha 23 printfMedia 2f alunolinmedia linha 24 linha 25 systempause linha 26 return 0 linha 27 118 Tecnologia em Análise e Desenvolvimento de Sistemas Vejamos na Ilustração 41 como ficou o programa Ilustração 41 Compilação e execução do código fonte do Exemplo 32 Vamos analisar algumas linhas do programa linha 10 aluno4 Declaramos um vetor do tipo struct com 4 posições linha 12 forlin0lin4lin Comose trata de um vetor precisamos do comando for para controlar as posições de armazenamento e exibição linha 15 scanfd alunolinmatr Informamos que a matricula que está sendo lida naquele momento ou seja na posição indicada por lin será armazenada nessa posição linha 17 scanff alunolinmedia Da mesma forma informamos a impressão Capítulo 4 119 Programação I 50 Aproveitando os mesmos exercícios realizados na atividades 42 vamos agora desenvolver o programa para armazenar os da dos de um número maior de pessoas a Faça um programa que leia e exiba o número do telefone o nú mero do celular o valor da compra e o código de cinco clientes b Faça um programa que leia e exiba a matrícula os números de dependentes e o salário de cinco funcionários EstruturasSTRUCT 120 Tecnologia em Análise e Desenvolvimento de Sistemas c Faça um programa que leia e exiba a media final e a matrícula de quatro alunos struct Agrupa um conjunto de dados nãosimilares formando um novo tipo de dado LAUREANO 2005 p120 Leituras complementares LAUREANO Marcos Programando em C Rio de Janeiro 2005 SCHILDT Herbert C Completo e Total São Paulo Makron Books 1996 KERNIGHAN Brian W C Linguagem de Programação Parão ANSI Rio de Janeiro Elsevier 1989 Capítulo 4 121 Programação I O que aprendemos até aqui Os dados armazenados podem ser de vários tipos Um vetor de estrutura é um vetor que armazenará os dados de várias pessoas 122 Tecnologia em Análise e Desenvolvimento de Sistemas Capítulo 4 123 Programação I Olá O Capitulo 5 exigirá mais leitura do que os outros mas os concei tos são necessários para o entendimento e para a aprendizagem do conteúdo Esta é a reta final Vamos em frente 51 Modularização É uma técnica de programação que utilizaremos para dividir um progra ma maior em programas menores Os programas menores serão feitos individualmente até que todo o programa tenha sido desenvolvido Para entendermos melhor vamos imaginar um programa para calcular a folha de pagamento de uma empresa qualquer Podemos dividir esse programa em vários programas menores Va mos identificar quais poderiam ser os programas menores da folha de pagamento CALCULAR INSS CALCULAR DESCONTO DE FGTS CALCULAR IRRF CALCULAR SALÁRIO FAMÍLIA CALCULAR FÉRIAS CALCULAR SALÁRIO LÍQUIDO IMPRIMIR CONTRA CHEQUE Observe que agora o programa folha de pagamento será composto de 7 programas menores Utilizando a técnica de modularização deixaremos o código mais claro e fácil de ser testado já que cada programa menor poderá ser desenvol PROCEDIMENTOS E FUNÇÕES 124 Tecnologia em Análise e Desenvolvimento de Sistemas vido e testado individualmente antes de fazer parte do programa maior folha de pagamento Aos programas menores denominamos funções ou procedimentos modularização programação modular técnica de modulariza ção denota a construção de programas pela composição de par tes pequenas para formar partes maiores As partes são chamadas módulos SEBESTA 2003 p 123 52 Funções Sintaxe tipoderetorno nomedafunção declaraçãodeparâmetros corpodafunção O que difere um procedimento de uma função é o retorno da execução do bloco Uma função irá retornar um valor para o local onde foi chamada 521 Entendendo Funções Vamos trabalhar com o exemplo da folha de pagamento para entender mos melhor como funciona esse bloco de programa Exemplo 33 Nesse exemplo vamos fazer o programa apenas do cálculo do INSS linha 1 include stdioh linha 2 include stdlibh linha 3 DECLARANDO A FUNCAO linha 4 float CALCULARINSS float salario linha 5 float salliq linha 6 salliq salario salario008 linha 7 returnsalliq linha 9 INICIANDO O PROGRAMA PRINCIPAL linha 10 int main linha 11 float salariobruto salarionovo linha 12 printf Digite o salario do fucionario linha 13 scanf fsalariobruto linha 14 salarionovo CALCULARINSSsalariobruto Capítulo 5 125 Programação I Vejamos na Ilustração 42 como ficou o programa Ilustração 42 Compilação e execução do código fonte do Exemplo 33 Vamos entender algumas linhas linha 3 DECLARANDO A FUNCAO Comentário apenas indicando que estamos iniciando a função Linha 4 float CALCULARINSS float salario A função retornará um valor do tipo float A função deverá ser chamada por CALCULARINSS linha 5float salliq Declaramos uma variável chamada salliq que utilizaremos dentro da função linha 6 salliq salario salario008 Efetuando o cálculo do desconto Procedimentos e Funções linha 15 printfSalario liquido f salarionovo linha 16 systemPAUSE linha 17 return 0 126 Tecnologia em Análise e Desenvolvimento de Sistemas linha 7 returnsalliq O comando return retornará o valor da variável salliq para o pro grama principal na linha em que chamamos a função linha 9INICIANDO O PROGRAMA PRINCIPAL Comentário apenas indicando que estamos iniciando a função main ou seja o programa principal linha 11 float salariobruto salarionovo Declarando as variáveis que serão utilizadas no programa principal linha 14 salarionovo CALCULARINSSsalariobruto Estamos atribuindo à variável salarionovo o valor que será cal culado pela função CALCULARINSS A chamada à função CALCULAR INSS é feita justamente nesse momento ou seja o seu nome é a chamada dela ao programa 53 Procedimentos Como a função o procedimento é um bloco de programas porém ele não retornará nenhum valor Na Linguagem C toda função que retorna void vazio é um procedimento 531 Entendendo Procedimentos Para melhor compreensão continuaremos utilizando o programa fo lha de pagamento Identificaremos quais dos programas menores que o compõem não retornarão nenhum valor Observe o programa IMPRIMIR CONTRA CHEQUE terá void como retorno ou seja não retornará nenhum valor para o programa princi pal ou para outra função Exemplo 34 Vamos acrescentar ao exemplo 33 uma função que impri mirá o valor do salário liquido linha 1 include stdioh linha 2 DECLARANDO A FUNCAO CALCULARINSS linha 3 float CALCULARINSS float salario linha 4 float salliq linha 5 salliq salario salario008 Capítulo 5 127 Programação I Vamos entender algumas linhas linha 8void MOSTRARfloat salario Informamos que a função MOSTRAR retornará void retorno vazio linha 10 salarionovo CALCULARINSSsalario Agora a chamada à função CALCULARINSS será feita dentro da função MOSTRAR porque é nesse momento que precisaremos do valor de retorno que ela fornece linha 17 MOSTRARsalariobruto O procedimento é chamado apenas pelo nome Procedimentos e Funções linha 6 returnsalliq linha 7 linha 8 DECLARANDO A FUNCAO MOSTRAR linha 9 void MOSTRARfloat salario linha 10 float salarionovo linha 11 salarionovo CALCULARINSSsalario linha 12 printfSalario liquido f salarionovo linha 13 linha 14 INICIANDO O PROGRAMA PRINCIPAL linha 15 int main linha 16 float salariobruto salarionovo linha 17 printfDigite o salario do fucionario linha 18 scanf fsalariobruto linha 19 MOSTRARsalariobruto linha 20 systemPAUSE linha 21 return 0 linha 22 128 Tecnologia em Análise e Desenvolvimento de Sistemas Vejamos na Ilustração 43 como ficou o programa Ilustração 43 Compilação e execução do código fonte do Exemplo 34 função eou procedimento Trecho de código que será utilizado muitas vezes no programa eou agrupamento de códigos correla tos LAUREANO 1995 p47 Capítulo 5 129 Programação I 54 Escopo de Variáveis Nos exemplos apresentados pôdese observar a utilização de variáveis que foram declaradas em diferentes locais dentro de parênteses fora deles sem que houvesse preocupação de nossa parte de que tipo de comportamento elas estariam assumindo quando o bloco de programa fosse acoplado ao programa maior folha de pagamento Para entendermos esse comportamento precisamos entender a defini ção de escopo de variáveis e a passagem de parâmetros As variáveis podem assumir dois tipos de comportamentos Locais permanecem na memória durante a execução da função Globais permanecem na memória durante toda execução do programa principal e são declaradas fora das funções No programa folha de pagamento a variável salário bruto será global já que as funções utilizarão o seu valor para efetuarem os cálculos a que se propõem As variáveis que foram criadas dentro da função serão locais só sendo visíveis àquela função As variáveis globais devem ser evitadas pois ocupam memória o tempo todo tornando o programa mais difícil de ser entendido O código fica muito dependente aumentando o acoplamento da função e tornandoa difícil de ser usada por outro programa E se for definida uma variável local com o mesmo nome de uma variável global escopo de variáveis O escopo é o conjunto de regras que deter minam o uso e a validade de variáveis nas diversas partes do pro grama BRIAN 1978 p35 514 Passagem de Parâmetro Parâmetros são valores que informamos à função no momento em que a chamamos Chamamos essa informação de passagem de parâmetros que pode ser feita de duas formas Procedimentos e Funções 130 Tecnologia em Análise e Desenvolvimento de Sistemas por valor mesmo que a variável sofra alteração dentro da função para onde foi passada o valor dela não é alterado no programa principal Exemplo 35 Pela Ilustração 44 poderemos verificar que mesmo que os valores te nham sido alterados dentro da função SOMA no programa principal eles ficaram inalterados Ilustração 44 Compilação e execução do código fonte do Exemplo 35 Capítulo 5 131 Programação I Por referência Na Linguagem C utilizamos um recurso para simular a passagem de parâmetro por referência decla rando seus parâmetros formais como ponteiros Os ponteiros são a referência de que precisamos para alterar a variável no programa principal O único inconveniente é que quando chamarmos a função no programa principal por exemplo devemos colocar um na frente das variáveis que estivermos passando para a função Exemplo 36 Usaremos o o Exemplo 34 mas agora passaremos as vari áveis num1 e num2 por referência Para isso colocaremos um aste risco transformadoas em um ponteiro Na Ilustração 45 poderemos verificar que somente os valores das va riáveis num1 e num2 foram alterados fora da função SOMA isso porque a passagem dessas duas variáveis foram feitas por referência A variável num3 como foi passada por valor só teve o seu valor altera do dentro da função SOMA Procedimentos e Funções 132 Tecnologia em Análise e Desenvolvimento de Sistemas Ilustração 45 execução do exemplo 36 parâmetro o termo parâmetro muitas vezes é utilizado como sinô nimo de argumento mas geralmente utilizase parâmetros quando se faz referência às variáveis situadas na assinatura de um método ou função e argumentos aos valores atribuídos a esses parâmetros BRIAN 1978 p25 passagem de parâmetro por referência a mudança do valor de um parâmetro dentro de uma função afeta o valor da variável ori ginal BRIAN 1978 p26 passagem de parâmetro por valor Alterações no parâmetro não afetam a variável externa BRIAN 1978 p26 50 Crie um programa que usando uma subrotina de função re torne o valor da divisão de dois números inteiros para o progra ma principal e mostre o resultado FUNÇÃO MAIN pedirá os dois números inteiro chamará a função DIVISAO e exibirá o resultado FUNÇÃO DIVISAO dividirá os números e retornará o valor da divisão para main Capítulo 5 133 Programação I 51 Criar um programa que receba um número que corresponda a um mês do 1º trimestre e escreva o mês correspondente caso o usuário digite o numero fora do intervalo deverá aparecer uma mensagem informando que o número é inválido O programa de verá ser executado enquanto o usuário quiser 52 Criar um programa que apresente um menu de seleções no programa principal Esse menu deverá dar ao usuário a possi bilidade de escolher uma entre quatro operações aritmética Es colhida a opção desejada deverá ser solicitada a entrada de dois números Processada a operação o resultado deverá ser exibido O programa deverá ser executado enquanto o usuário quiser Procedimentos e Funções 134 Tecnologia em Análise e Desenvolvimento de Sistemas FUNÇÃO MAIN Mostrará um menu de opções 1dividir 2somar 3multipe 4subtrair Pedirá dois números inteiros Utilizará o comando switch para chamar a função que corresponda a opção do usuário FUNÇÃO DIVIDIR dividirá os valores lidos e mostrará o resultado FUNÇÃO SOMAR somará os valores lidos e mostrará o resultado FUNÇÃO MULTIPLICAR multiplicará os valores lidos e mostrará o resultado FUNÇÃO SUBTRAIR subtrairá os valores lidos e mostrará o resultado 515 Funções Recursivas Podemos chamar uma função de dentro da própria função Essa técnica é chamada de recursividade Se uma função F chama a própria função F dizemos que ocorre uma recursão A implementação de alguns Algo ritmos fica muito mais fácil usandose a recursividade Quando uma função é chamada recursivamente criase um ambiente local para cada chamada As variáveis locais de chamadas recursivas são independentes entre si como se estivéssemos chamando funções diferentes Capítulo 5 135 Programação I Exemplo 37 A série de Fibonacci é muito conhecida na matemática A série é composta assim o primeiro e o segundo termos são 1 A partir do terceiro termo todos os termos são a soma dos dois últimos Série de Fibonacci 1 1 2 3 5 8 13 21 34 Façamos um programa para encontrar o enésimo termo da seqüência de Fibonacci Na Ilustração 46 poderemos verificar a compilação e execução do Exemplo 37 Ilustração 46 execução do exemplo 37 Procedimentos e Funções 136 Tecnologia em Análise e Desenvolvimento de Sistemas função recursiva recursão é um método de programação no qual uma função pode chamar a si mesma LAUREANO 2005 p 239 516 Protótipo de Função Todas as funções que fizemos até aqui foram colocadas antes do progra ma principal main dessa forma quando o compilador chegasse a ele já saberia os formatos das funções Usando protótipo de função poderemos colocar as funções após o pro grama principal O protótipo é uma declaração de função ou seja decla ramos a função que utilizaremos no programa Dessa forma o compila dor tomará conhecimento do seu formato antes da compilação assim Exemplo 38 Vamos utilizar o Exemplo 36 e alterar seu código incluin do o protótipo da função SOMA Na Ilustração 47 poderemos verificar a compilação e execução do Exemplo 38 Observe que a declaração da função void SOMAint x int y int z deunos condições para alterarmos a posição do progra ma principal colocandoo no início do código Capítulo 5 137 Programação I Ilustração 47 Compilação e execução do código fonte do Exemplo 38 protótipo de função assinatura da função ou definição da indica ao compilador seu nome e parâmetros LAUREANO 2005 p 47 O que aprendemos até aqui Modularização é uma técnica de programação que utilizaremos para dividir um programa maior em programas menores Aos programas menores denominamos funções ou procedimentos As variáveis podem assumir dois tipos de comportamentos lo cais e globais A passagem de parâmetros pode ser feita de duas formas por valor e por referência Os ponteiros são a referência de que precisamos para alterar a variável no programa principal Podemos chamar uma função de dentro da própria função Essa técnica é chamada de recursividade As variáveis locais de chamadas recursivas são independentes entre si como se estivéssemos chamando funções diferentes O protótipo é uma declaração de função Procedimentos e Funções 138 Tecnologia em Análise e Desenvolvimento de Sistemas 53 Refaça os exercícios 50 51 e 52 usando protótipo de função Capítulo 5 139 Programação I FARRER HARRY Algoritmos Estruturados LTC 1999 SCHILDT Herbert C Completo e Total São Paulo Pearson 2006 DEITEL HM Como Programar em C Rio de Janeiro 1999 SEBESTA Robert W Conceitos de linguagem de programacao Sao Paulo Bookman 2003 TANENBAUM Andrew S Sistemas Operacionais Porto Alegre Bookman 2000 LAUREANO Marcos Programando em C Rio de Janeiro 2005 KERNIGHAN Brian W C Linguagem de Programação Parão ANSI Rio de Janeiro Elsevier 1989