Angelina Apostila C Algoritmo 2011

download Angelina Apostila C Algoritmo 2011

of 129

Transcript of Angelina Apostila C Algoritmo 2011

PROF. ANGELINA V.S. [email protected]

Linguagem00110000

C

2011 FATEC ITUProf Angelina V.S.Melar 1

SUMRIOLgica de Programao ................................................................................................................... 7 Algoritmo ........................................................................................................................................ 8 Estruturas dos Algoritmos: Linear / Seletiva/ Repetio ............................................................. 10 Mtodo para a construo de Algoritmo ....................................................................................... 10 Etapas de Desenvolvimento .......................................................................................................... 12 Tipos de Algoritmos ...................................................................................................................... 14 1. Tipos de Algoritmos ........................................................................................................... 14 Pseudocdigo ................................................................................................................................ 15 Fluxograma.................................................................................................................................... 16 Diagrama de Chapin ...................................................................................................................... 18 Paradigmas de Programao forma de programar ...................................................................... 19 1. Programao No Estruturada: ........................................................................................... 19 2. Programao Estruturada (Procedural): ............................................................................. 19 3. Programao Orientada a Objetos ...................................................................................... 20 Modularidade ................................................................................................................................ 20 4. Estratgia de Decomposio ou Dividir para Conquistar ............................................... 20 5. Mdulos .............................................................................................................................. 21 Linguagem C ................................................................................................................................. 23 Processo de Compilao e Ciclo de Vida do Programa ................................................................ 24 6. Linguagem C Compiladora ou Interpretadora? ............................................................. 24 7. Ciclo de Vida do Programa ................................................................................................ 24 Ambiente de Desenvolvimento DEV-C++ ................................................................................... 26 1. Ambiente integrado ............................................................................................................ 26 2. Configurando o ambiente e o editor ................................................................................... 26 3. Configuraes para o Windows Vista/7 ............................................................................. 27 4. Digitao do programa ....................................................................................................... 27 5. Gravao do programa ....................................................................................................... 27 6. Compilao e execuo do programa ................................................................................. 27 7. Criando um cdigo fonte padro ........................................................................................ 28 Estrutura do Programa na Linguagem C ....................................................................................... 29 1. Estrutura bsica .................................................................................................................. 29 2. Diretivas ............................................................................................................................. 29 3. Arquivos de Cabealho (header) ........................................................................................ 30 4. Biblioteca ........................................................................................................................... 31 5. Bloco de instrues e Funo MAIN() ............................................................................... 31 6. Projeto ................................................................................................................................ 31 7. Regras de Digitao e Dicas da Estrutura em C ................................................................. 31 8. Comentrios ....................................................................................................................... 32 Variveis........................................................................................................................................ 33 1. O que so variveis? ........................................................................................................... 33 2. Mas em que parte da memria vo os dados? .................................................................... 33 Identificadores ........................................................................................................................... 33 3. Declarao de varivel ....................................................................................................... 34 Constantes ..................................................................................................................................... 35 Tipos de dados ............................................................................................................................... 36 Prof Angelina V.S.Melar 2

1. Numrico ............................................................................................................................ 36 2. Literal/ Cadeia de Caracteres.............................................................................................. 36 3. Lgicas ............................................................................................................................... 37 4. Caracter .............................................................................................................................. 37 5. Espao Alocado de Memria ............................................................................................. 37 6. Modificadores de Tipos ...................................................................................................... 38 Dica: Pode-se definir valores em outras bases (diferente da decimal): ..................................... 38 7. Tabela ASCII (American Standard Code for Information Interchange) ............................ 39 8. Cdigo de Barra Invertida .................................................................................................. 40 Operadores Aritmticos................................................................................................................. 42 1. Operadores Aritmticos ...................................................................................................... 42 Os operadores aritmticos so os operadores usados nas operaes bsicas da matemtica. Esses operadores so usados para representar as expresses matemticas, os resultados so valores numricos. ..................................................................................................................... 42 Eles so: +, -, *, /. ...................................................................................................................... 42 Ainda existem o mod e o div, que representam o resto da diviso e o quociente da diviso na respectiva ordem. Esses operadores somente podem ser usados para nmeros inteiros. .......... 42 Operadores Aritmticos da Linguagem C ................................................................................. 43 2. Operadores de Incremento e Decremento .......................................................................... 43 3. Operadores Aritmticos de Atribuio ou C Reduzido ...................................................... 43 4. Converso de Tipo ............................................................................................................. 43 Prioridade dos Operadores Aritmticos ........................................................................................ 44 Funes Matemticas e Operadores Bit a Bit................................................................................ 47 1. Funes Matemticas ......................................................................................................... 47 2. Operadores de deslocamento de bits .................................................................................. 47 1. Funo Rand() e SRand() ................................................................................................... 48 Estrutura de Controle Linear/ Sequencial...................................................................................... 49 Funes de Entrada e Sada Formatada ......................................................................................... 50 1. Funo de Sada - printf() ................................................................................................... 50 2. Funo de Entrada scanf() ............................................................................................... 51 1. Funo de Entrada de caracter getch() e getchar() ........................................................... 52 Exemplos ....................................................................................................................................... 52 Exerccios Resolvidos e Propostos ................................................................................................ 55 Operador Relacional e Lgico ....................................................................................................... 56 1. Operadores Relacionais ...................................................................................................... 56 2. Operadores Lgicos ............................................................................................................ 56 3. Tabela Verdade: o conjunto das possibilidades combinatrias dos operadores lgicos. 57 4. Prioridade dos Operadores ................................................................................................. 57 Estrutura de Deciso /Condicional/ Seleo ................................................................................. 58 Exerccio Resolvido ...................................................................................................................... 59 Tipos de Estruturas de Deciso ..................................................................................................... 60 1. Estrutura de Deciso Simples ............................................................................................. 60 2. Estrutura de Deciso Composta: ........................................................................................ 61 3. Estrutura de Deciso Encadeada: ....................................................................................... 62 Intervalos ....................................................................................................................................... 63 Operador Ternrio ......................................................................................................................... 64 Seleo Mltipla ............................................................................................................................ 65 Exerccios Resolvidos ................................................................................................................... 67 Prof Angelina V.S.Melar 3

Variveis de Bloco ........................................................................................................................ 68 Estrutura de Repetio................................................................................................................... 69 Estrutura de Repetio Condicional (Enquanto..Faa / Faa..Enquanto / Repita..at) ................ 70 1. Repetio com Pr-condio- Enquanto..faa .................................................................... 70 2. Repetio com Ps-condio - Faa..Enquanto ................................................................. 71 3. Repetio com Ps-condio - Repita..at ......................................................................... 71 4. Comandos Break, Continue funo Exit() ........................................................................ 72 5. Enquanto Verdadeiro .......................................................................................................... 73 Repetio Pr-Definida Para ...................................................................................................... 75 6. Estrutura em C .................................................................................................................... 76 Variveis Contadoras e Acumuladoras ......................................................................................... 78 SubAlgoritmos/ Modularizao .................................................................................................... 79 1. Sub-Rotinas (Mdulos) ...................................................................................................... 79 2. Declarao da Funo......................................................................................................... 79 3. A funo principal - main() ................................................................................................ 80 4. Comando Return ................................................................................................................ 81 5. Tipo Void ........................................................................................................................... 81 6. Prottipos de Funes ........................................................................................................ 82 7. Chamada (ativao) da Funo ......................................................................................... 82 8. Exemplo Completo de Funo ........................................................................................... 83 9. Classes de Armazenamento de Variveis ........................................................................... 83 Funo com Passagem de Parmetro por Valor ............................................................................ 85 Funes Recursivas ....................................................................................................................... 89 Vetores .......................................................................................................................................... 91 1. Conceito ............................................................................................................................. 91 2. Exemplos: ........................................................................................................................... 91 3. Declarao: ......................................................................................................................... 91 4. Acessando os elementos ..................................................................................................... 92 5. Armazenando os elementos ................................................................................................ 92 6. Endereo do vetor ou matriz unidimensional ..................................................................... 92 7. Exerccios Resolvidos: ....................................................................................................... 93 Vetor String (Cadeias de Caracteres) ............................................................................................ 94 Matriz ............................................................................................................................................ 98 1. Matriz Bidimensional ......................................................................................................... 98 2. Declarao: ......................................................................................................................... 98 3. Armazenando os elementos ................................................................................................ 98 4. Armazenamento feito via teclado ....................................................................................... 99 5. Mostrando os elementos ..................................................................................................... 99 Ponteiros ...................................................................................................................................... 100 1. Variveis ponteiros ........................................................................................................... 100 2. Trabalhando com Matriz atravs de Ponteiros ................................................................. 103 Funes com Passagem de Parmetros por Referncia ............................................................... 105 3. Passagem de Matriz por Referncia ................................................................................. 106 Estruturas ..................................................................................................................................... 108 Unio e Enumerao ................................................................................................................... 116 1. Unio union ................................................................................................................... 116 2. Tipo enumerao .............................................................................................................. 117 Arquivos ...................................................................................................................................... 118 Prof Angelina V.S.Melar 4

3. Abertura do arquivo.......................................................................................................... 118 4. Fechamento do arquivo .................................................................................................... 119 5. Leitura .............................................................................................................................. 119 6. Gravao ........................................................................................................................... 120 Posicionamento e Pesquisa em arquivo binrio ...................................................................... 125 7. Verificando o final do arquivo binrio ............................................................................. 125 8. Para apagar um arquivo .................................................................................................... 125 Conceitos Bsicos ....................................................................................................................... 126 Nvel de Programao das Linguagens ....................................................................................... 128 Bibliografia Consultada e Referenciada ...................................................................................... 129

Prof Angelina V.S.Melar 5

PRIMEIRA PARTE ALGORITMOS

Prof Angelina V.S.Melar 6

Lgica de ProgramaoA lgica usada na programao a mesma lgica usada diariamente pelas pessoas. a lgica uma das caractersticas que diferencia um ser humano de outro, capaz de torn-lo mais coerente e racional nas suas aes e com bom senso para tomar as decises. Mas como essa lgica? De onde ela vem? A palavra lgica vem do grego logos, que significa expresso, pensamento, conceito, discurso, razo. Uma das definies de lgica encontrada no dicionrio Aurlio a coerncia do raciocnio de idias. O estudo da lgica comeou na Grcia antiga com o filsofo Aristteles, que definiu lgica como sendo a cincia da demonstrao. Segundo Aristteles, a lgica estuda a razo como instrumento da cincia ou meio de adquirir a verdade. Como o objetivo da razo o raciocnio, a lgica est ligada ao raciocnio, uma operao discursiva do pensamento que consiste em encadear logicamente juzos e dele tirar uma concluso. O escritor Othon Manoel Garcia define lgica como a cincia das leis ideais do pensamento, a arte que nos faz proceder, com ordem, facilmente e sem erro, no ato prprio da razo. O que ter lgica? Ter lgica estar em uma determinada situao e saber a melhor maneira de proceder. conseguir visualizar todas as possibilidades existentes daquele momento e decidir pela mais adequada. Quanto mais a pessoa tenta raciocinar corretamente ela estar procurando ter lgica. Forbellone, destaca a lgica usada no dia-a-dia, pois quando pensamos, falamos, agimos estamos criando uma ordem no pensamento e nas aes, isto utilizar lgica. Mas e a Lgica de Programao? Segundo Forbellone, a aplicao das leis do pensamento e de processos simbolizados de maneira formal nos computadores, onde so empregadas tcnicas para a produo de solues logicamente vlidas e que resolvem problemas que sero programados. Para isso sero desenvolvidos os Algoritmos. O que um bom programa/sistema? O importante na programao desenvolver programas que atendam as necessidades do usurio, com funcionalidade, rapidez, desempenho e confiabilidade. Um bom programa no depende exclusivamente da linguagem de programao. O que eu devo fazer agora????? Segundo Forbellone, ...fundamental formao do profissional de programao esto a desenvolver a lgica e a construo de algoritmos... preciso ter Lgica de Programao: Ter lgica raciocinar coerentemente, avaliar as aes tomadas, organizar o pensamento, visualizar todas as possibilidades, atualizar as informaes e traar um objetivo Mas como passar a nossa lgica para o computador? Uma das ferramentas para isso o Algoritmo. Prof Angelina V.S.Melar 7

AlgoritmoO objetivo de todo o estudo da Lgica de Programao a construo de Algoritmos coerentes e vlidos. O algoritmo um processo onde voc organiza e coloca passo a passo suas idias para atingir um objetivo pr-definido. Tambm pode-se definir como uma sequncia de passos. Esse processo feito numa linguagem fcil, em seqncias ordenadas e encadeadas, de forma que as pessoas possam us-la sem problemas. O algoritmo uma das primeiras e melhores formas usadas para se conseguir resolver problemas no computador ou mesmo na sua vida cotidiana. Quando voc precisar solucionar um problema a primeira coisa que dever fazer fazer uma anlise do mesmo, coletar os dados e estruturar as operaes que devem ser realizadas. Pense na sua vida real, num problema comum a todos. Vamos imaginar que voc ir organizar uma festa. Quais so os procedimentos a serem tomados? Para fazer um algoritmo desse problema preciso antes coletar as idias: - voc precisa convidar os amigos; - arrumar um som e msicas; - comprar salgados e bebidas; - procurar o local da festa; Depois organiz-las de acordo com suas prioridades. preciso saber qual o primeiro passo a se tomar para depois ver o momento de executar o segundo, no esquecendo que o primeiro deve j estar pronto. como fazer um pudim gostoso de forma rpida. Como voc faria? Voc colocaria a forma no forno aceso antes de fazer a massa? Como voc usaria seu raciocnio lgico nesse procedimento? por isso que devemos aprender a ter um raciocnio lgico. Ser atravs dele que voc conseguir ser um bom programador. Quando comearmos a desenvolver algoritmos estaremos desenvolvendo nosso raciocnio lgico, pois comearemos a prestar mais ateno aos detalhes. Observaremos que cada situao, por mais simples que seja pode-se tornar complicada. Mas como assim? Vocs devem estar pensando. Estado inicial aes empregadas de forma clara e precisaPerodo de tempo finito

Estado final Objetivo Atingido

Algoritmo

Prof Angelina V.S.Melar 8

Pensem neste problema: Como voc faria para comer uma banana? Podemos fazer um Algoritmo que usa o portugus coloquial para resolver isso: 1 Voc ter que saber onde est a banana 2 Pegar a banana 3 Descascar a banana 4 Por fim, comer a banana. Parece ser simples resolver esse problema, onde citamos quatro etapas ordenados de procedimentos. Mas ser que voc pensou em tudo? Ser que a sua lgica est bem desenvolvida? Se voc acha que sim, errou. Voc ainda precisar desenvolver muito o seu raciocnio lgico. Mas por qu? Voc deve estar fazendo est pergunta. Eu respondo na criao de um novo algoritmo: Voc ter que saber onde est a banana Pegar a banana Descascar a banana Verificar se a banana no est estragada por dentro Se estiver estragada o Voc dever jog-la Seno, se estiver inteira boa o Voc dever comer a banana. Nesse caso a sua lgica est mais elaborada, verificando uma situao que pode ocorrer. Mas ainda no est totalmente completa. Pois, voc no acha que a pessoa na hora de pegar a banana j deveria ver o estado da banana por fora? Se ela estiver preta ou amassada, ento a pessoa j deveria t-la jogado fora e pegado outra, de forma que todo o processo seria repetido novamente. Veja no algoritmo abaixo: 1 Voc ter que saber onde est a banana 2 Pegar a banana 3 Verificar o estado da banana por fora 4 Se a banana estiver preta ou amassada - dever ser jogada fora - e pegar outra banana - verificar o estado da banana - se a banana estiver preta, amassada ..... 5 Se a banana estiver com aparncia bonita por fora dever ser descascada 6 Verificar se a banana no est estragada por dentro 7 Se estiver estragada voc dever - jog-la - pegar outra banana - verificar o estado da banana por fora - se a banana estiver preta, amassada - dever ser jogada fora - pegar outra banana - verificar o estado da banana - se a banana estiver preta, amassada ..... Prof Angelina V.S.Melar 9

Estruturas dos Algoritmos: Linear / Seletiva/ RepetioPerceba que ao fazer o primeiro algoritmo se pensava numa sequncia de aes (passos) de forma linear, ou seja, uma ao sendo executada aps a outra. Mas, muitas vezes isso no pode ser realizado, pois, surgem verificaes, testes que precisam ser feitos e de acordo com o resultado deste que sero definidas as aes que sero executadas. O primeiro algoritmo - pegar a banana e com-la. O segundo faz uma verificao, um teste quanto ao estado da banana. So duas estruturas de algoritmos diferentes: uma linear e outra de seleo. o Sequncia define o fluxo de execuo do algoritmo

o Sequncia Linear ou Estrutura Sequencial: onde um conjunto de aes so executadas uma aps a outra, passo a passo, num fluxo contnuo do comeo ao fim. A execuo comea de cima para baixo, da esquerda para a direita o Estrutura Condicional ou Estrutura de Seleo ou Estrutura de Deciso: a ordem de execuo e as aes dependem do valor resultante de uma verificao. Nem sempre se quer que todas as aes sejam executadas, de forma que se pode fazer uma seleo e desvio delas de acordo com um teste condicional. o Estrutura de Repetio: algumas aes podem ser repetidas, executadas vrias vezes. Nessa estrutura a sequncia de execuo depender de uma condio, onde dependendo do resultado dela, ser mudada ou no a sequncia de execuo.

Mtodo para a construo de Algoritmo Leia e releia atentamente todo o enunciado do problema, procurando identificar e entender todos os detalhes. No passe para a outra fase se tiver dvidas no enunciado. preciso ter convico no entendimento do que foi lido. Muitas vezes o enunciado grande, complexo, cheio de valores e informaes, mas depois de lido e avaliado percebe-se que sua soluo simples e que muitas informaes contidas so desnecessrias. Faa uma anlise de tudo, procurando definir explicitamente o que est contido no enunciado, destacando os pontos mais importantes. Elimine os detalhes suprfluos. Identifique as informaes necessrias para a soluo do problema: as entradas. Veja se essas informaes j esto contidas no enunciado ou precisaro ser recebidas. Para isso importante ler at o final o enunciado, sem tomar decises precipitadas. Selecione as informaes e fique apenas com as mais importantes, as que sero necessrias e usadas nas Prof Angelina V.S.Melar 10

operaes. Lembre-se que quando voc precisar de uma informao e ela no estiver no enunciado, isso significa que ela uma entrada. Verifique as regras que esto explicitas e implcitas: o processamento As sadas podem ser consultas ou operaes de transformao dos dados de entradas em sadas. Defina as informaes que devem ser mostradas no final, ou seja, as respostas do problema. Desenvolva o algoritmo. Verifique se o algoritmo feito est atingindo o seu objetivo: teste Para isso faa alguns testes com dados fictcios e verifique se o algoritmo est mostrando corretamente a soluo do problema. Se o resultado no for satisfatrio, leia novamente o enunciado, revise o algoritmo e efetue novos testes, at conseguir o resultado desejado. ABSTRAO Existe dentro da resoluo de problemas o termo Abstrao. Ao desenvolver um algoritmo voc est preocupado em desenvolver e representar o raciocnio lgico de programao, mas sem se ater a detalhes computacionais, que sero depois pensados e acrescidos na codificao. Ento ao abstrair, se deixa de lado as informaes suprfluas, se atem ao que importante para chegar a resoluo do problema. A abstrao tem como objetivo tirar informaes suprfluas e introduzir uma notao concisa. Para esse objetivo ser alcanado devem-se identificar os objetos e os aspectos importantes, dar-lhes nomes e definir operaes que possam ser aplicadas aos objetos, permitindo assim realizar uma consistncia em relao as regras do problema.

Prof Angelina V.S.Melar 11

Etapas de DesenvolvimentoNo Processamento de Dados se recebem os dados, se realizam as operaes sobre esses dados e no final so geradas as respostas ou resultados como sada. Entrada Processamento Sada

Entrada: A entrada o processo onde voc avalia o enunciado do problema e verifica quais dados esto presentes no enunciado e quais no esto, mas que so essenciais para a soluo do problema. Quando faltar algum dado voc ter que receb-lo de alguma maneira. Sem as entradas no h como resolver um problema. O nmero de entradas muito variado e depende do objetivo do programa. A entrada pode ser recebida por vrios dispositivos de entradas. Pode ser lida de um arquivo ou de qualquer outro perifrico de entrada, como teclado ou scanner. Ento, a entrada pode ser direta, atravs do usurio (receber o salrio) ou indireta, atravs da mquina (pegar a data do sistema). Cuidado: no so entradas os dados que podem ser gerados atravs de um clculo ou de outras entradas. Processamento: um processo que pega os dados de entrada e efetua uma operao (que pode ou no ser matemtica), ou uma atribui. Nessa etapa tambm podem ser feitas comparaes e consultas, gerando dessa forma o resultado e a soluo do problema. Sada: a parte mais fcil e mais importante de todo o processo, onde devem ser exibidos os resultados de todo o processamento. A sada pode ser feita por qualquer dispositivo de sada, desde o monitor at a caixa de som. Vamos mostrar as etapas de desenvolvimento com um exemplo muito simples e fcil de resolver. Depois aumentaremos o grau de complexidade, mostrando sempre as alteraes. 1 Exemplo: O Analista de Sistemas Joaquim pediu para o programador Jlio fazer um programa que efetue a multiplicao de dois nmeros. 1 necessrio ler atentamente todo o exerccio. 2 Retire o que suprfluo, fique apenas com os dados necessrios. 3 Defina as trs etapas principais de seu algoritmo: Entrada: Quais os dados de entrada necessrios? Lendo o enunciado verificamos que para fazer o clculo necessrio ter dois nmeros, s que estes no foram especificados e no sabemos quais so, por isso devemos receb-los. Outro detalhe importante ignorar/desprezar a histria colocada no enunciado, como os nomes e funes dos personagens. Processamento: Qual clculo deve ser feito com os dados de entrada? Lendo o enunciado vemos que a operao a ser feita com os dados de entrada a multiplicao. Prof Angelina V.S.Melar 12

Sada: O que dever ser mostrado? Qual o objetivo do enunciado? O objetivo do enunciado calcular e mostrar o resultado da multiplicao de dois nmeros. Tendo as idias s montar o algoritmo: 1 Saber o valor do primeiro nmero 2 Saber o valor do segundo nmero 3 Fazer a multiplicao dos dois nmeros Nmero 1 x Nmero 2 = ??? 4 Mostrar o resultado da multiplicao 2 exemplo: Juracema foi a livraria e comprou dois livros iguais de programao. Quanto ela pagar? Entrada: Quais so os dados de entrada necessrios? Saber o preo do livro Processamento: Qual clculo deve ser feito com os dados de entrada? Multiplicar o preo pela quantidade comprada, no caso 2. Veja que nessa situao a quantidade j foi informada (2 livros), por isso, j a temos e no devemos solicit-la como entrada. Sada: O que dever ser mostrado? Qual o objetivo do enunciado? Descobrir o valor que Juracema ter que pagar no caixa. Algoritmo: 1 Receber o valor do livro 2 Multiplicar o valor do livro por dois (2). 3 Mostrar o resultado do clculo da multiplicao

Prof Angelina V.S.Melar 13

Tipos de AlgoritmosOs algoritmos podem ser escritos de diferentes maneiras, dependendo da sua aplicao. Nesta apostila desenvolveremos os algoritmos de forma estruturada e padronizada (pseudocdigo), possibilitando com isso um melhor entendimento dos processos. 1. Tipos de Algoritmos Os tipos de algoritmos mais conhecidos so: Descrio Narrativa Fluxograma Pseudocdigo Diagrama de Chapin Todos esses tipos de algoritmos consistem em analisar o enunciado do problema e descrever os passos necessrios para a resoluo do problema. O que os diferencia a forma de descrever e simbolizar esses passos. At o momento todos os algoritmos feitos foram atravs da Descrio Narrativa. Descrio Narrativa ou Linguagem Natural: A Descrio Narrativa consiste em analisar o enunciado e escrever os passos utilizando uma linguagem natural, usada diariamente pelas pessoas. Vantagem: no necessrio aprender nenhum conceito novo, pois a lngua natural (portugus) j conhecida. Desvantagem: a ambigidade da linguagem coloquial, o uso de adjetivos ou a falta de clareza quanto as frmulas matemticas. A lngua natural abre espao para vrias interpretaes (dependendo da pessoa que o ler), o que posteriormente dificultar a transcrio desse algoritmo para programa.

Fluxograma: O Fluxograma consiste em analisar o enunciado e escrever os passos utilizando smbolos grficos predefinidos. Vantagem: o entendimento de elementos grficos mais fcil que o entendimento de textos. Desvantagem: necessrio aprender a simbologia grfica do fluxograma e as correes so mais trabalhosas por se tratar de representao grfica.

Pseudocdigo (portugus estruturado - portugol - pseudolinguagem): O Pseudocdigo consiste em analisar o enunciado e escrever os passos por meio de regras pr-definidas. As regras usadas neste material so estruturadas de acordo com a programao na linguagem C. Vantagem: a passagem do algoritmo para qualquer linguagem de programao quase imediata, bastando conhecer as palavras reservadas da linguagem de programao que ser utilizada. Ser como uma traduo, j que ser criada a estrutura do algoritmo baseada na linguagem. Desvantagem: necessrio aprender as regras do pseudocdigo.

Prof Angelina V.S.Melar 14

PseudocdigoComo j foi mencionada acima a passagem do pseudocdigo para uma linguagem de programao mais rpida e a probabilidade de erros menor. Regras de criao do Pseudocdigo 1. Todos os programas tm um comeo, um meio e um fim. Dessa forma, deve ser indicado o incio e o fim, internamente as aes que sero executadas. 2. Deve ser usado o recurso de endentao, que deslocamento horizontal, transmitindo o sentido de hierarquia de execuo. 3. Deve ser feito uso de termos nicos que definem uma ao, como: escreva, leia, se..ento. 4. Deve ser feito uso do conceito de variveis, assim como sua declarao. Exemplo de Problema: Receba um nmero real e verifique se este positivo, negativo ou nulo Descrio Narrativa 1 Receber um nmero 2 Se o nmero for maior que zero, ento, mostre uma mensagem alertando que o nmero positivo. 3 Se o nmero for menor ou igual 0 ento, deve aparecer uma mensagem avisando que o nmero negativo ou nulo. Pseudocdigo Incio real num; escreva (Digite um nmero); leia (num); se (num > 0) ento escreva (Nmero positivo); seno escreva (Nmero negativo ou nulo); Fim Qual das formas anteriores voc escolheria para construir um algoritmo? Qual desses exemplos mostra de forma mais clara as aes?

Prof Angelina V.S.Melar 15

FluxogramaO fluxograma um tipo de Algoritmo que representa graficamente (figuras geomtricas) os passos necessrios para a resoluo do problema. Para cada passo efetuado, seja o de entrada, o de processamento, o de sada ou condio tem-se um smbolo de representao. Algumas empresas adotam smbolos padronizados no fluxograma. Com a representao por smbolos grficos fica mais rpida a visualizao da lgica empregada para resolver o problema.Smbolo Nome Terminal Processamento Conexo Direo do Fluxo Deciso Processamento Prdefinido Teclado de Linha Entrada/Sada Documento ou Relatrio Exibio Conector de Pgina Subrotina Finalidade Indica o incio, continuidade ou fim Indica operao, clculo ou atribuio Utilizado para ligar pontos do fluxograma Utilizado para indicar a seqncia da execuo, conecta os smbolos Indica a tomada de uma deciso ou comparao. Podendo provocar desvios na seqncia lgica de execuo Utilizado nas estruturas de repetio Indica a entrada de dados por via teclado Pode ser usado tanto para entrada quanto para a sada de informaes Indica operao de sada via impressora Indica as sadas de informaes por dispositivos visuais Usado para indicar a sequncia em outra folha/pgina Especfica a chamada de uma subrotina

Prof Angelina V.S.Melar 16

O fluxograma para ser feito com xito, mostrando claramente os processos, deve seguir algumas regras: _ ser bem confeccionado; _ ser legvel; _ ter smbolos bem dimensionados e alinhados; _ ter setas que indiquem a direo do fluxo das informaes; _ a direo dos lados para as condies devem ser fixos; _ o fluxo deve comear de cima para baixo e da esquerda para a direita; _ no pode haver encontro das linhas de indicao do fluxo. _ as informaes escritas dentro dos smbolos devem ser claras, resumidas e bem entendidas.Estrutura a ser usada

Veja os smbolos a serem usados e uma explicao mais detalhada de suas finalidades.TERMINAL: A principal representao desse smbolo indicar o incio e o fim de uma srie de procedimentos. Quando usarmos este smbolo devemos identificar sua funo escrevendo dentro dele as palavras INCIO, FIM. DIREO DE FLUXO: Essas setas indicam a direo do prximo passo a ser executado, que pode estar a direita, a esquerda, em baixo ou em cima. Ele conecta os smbolos e o fluxo de execuo, ou seja a sequncia da ao a ser executada.

Existem vrios smbolos que representam a entrada de dados, mas como a maioria dos programas a serem feitos tero os dados digitados via teclado usaremos o smbolo do trapzio.TECLADO DE LINHA:

Receber SALARIO

PROCESSAMENTO: O smbolo do retngulo deve ser usado toda vez que existir

qualquer tipo de processamento; seja um clculo, uma atribuio de valores as variveis, ou mesmo alterao de qualquer dado.B=6 C=A+BSENHA = MARTH

EXIBIO: O smbolo de Exibio um smbolo grfico que representada sada,e serve para mostrar uma mensagem, um resultado.

Prof Angelina V.S.Melar 17

CONEXO: Algumas vezes o espao reservado para fazer o fluxograma pequeno e temos que dividi-lo em partes, usando o smbolo grfico do conector.

INCIO

K

1

A=3

B=6

C=A+B

K

1

FIM

Diagrama de ChapinO Diagrama de Chapin utiliza poucos smbolos e no precisa de nenhum conhecimento especfico. A desvantagem de uso ocorre quando precisa de muito espao na horizontal e fica mais difcil a compreenso. Veja os exemplos abaixo: a) Incio Escreva Mensagem Fim b) Incio Escreva Digite seu nome Leia NOME pelo teclado Escreva Bom Dia + NOME Fim c) Incio Leia A e B no teclado A maior que B? Sim Escreva A maior que B Fim No Escreva B maior que A

Prof Angelina V.S.Melar 18

Paradigmas de Programao forma de programarAs Linguagens de Programao adotam um estilo (padro) de desenvolvimento. Esse estilo que possui caractersticas comuns identificam a linguagem, podendo ser: programao no estruturada, programao estruturada, programao orientada objetos/eventos, programao lgica. De acordo com o Paradigma de Programao ser desenvolvida a Lgica de Programao.1. Programao No Estruturada:

Nessa programao a sequncia de aes que sero executadas so seqenciais, obedecendo uma numerao de linhas. O nico modo de fazer desvios usando o V Para (codificando GOTO). Essa linguagem no possui estruturas de controle de repetio como Faa..Enquanto (while) e no permite a estratgia de modularizao. Exemplo de linguagem no estruturada: Assembly e BasicAlgoritmo No Estruturado: 1. V para DESVIO2 2. DESVIO1. 3. Se precisar comprar ento 4. V para DESVIO3 5. V para DESVIO5 6. DESVIO3. 7. Procure a chave do carro 8. Se achou ento 9. V para DESVIO 2 10. V para DESVIO 4 11. DESVIO2.

2. Programao Estruturada (Procedural): Em 1965 Edward Dijkstra apresentou um artigo que sugere a programao estruturada e a eliminao de comandos de desvio. Esse paradigma foi desenvolvido por Bohm e Jacopine em 1966, onde eles demonstraram que a lgica pode ser expressa atravs de algumas estruturas bsicas. Possuem as estruturas: linear (seqencial), deciso (condio ou escolha), de iterao (repetio ou lao) Em 1967, Floyd sugeriu o uso de comentrios intercalados. Em 1970, Nicklaus Wirth sugeriu o processo de decomposio (refinamento sucessivo das etapas). A linguagem estruturada foi desenvolvida em grande parte pela m legibilidade causada pelas instrues de controle de algumas linguagens no estruturadas. Na programao no estruturada se usava muito a instruo de desvio GOTO para criar estruturas de laos (iteraes). Segundo Rinaldi, o que caracteriza a programao estruturada a possibilidade de diviso de tarefas em rotinas ou blocos independentes entre si. A primeira regra para fazer um programa a decomposio lgica do problema em partes independentes. o Exemplo: Prof Angelina V.S.Melar 19

Rotina: Calculo do desconto de IR Bloco de verificao da faixa das alquotas Nesse paradigma o programa tem uma seqncia de instrues executadas linearmente e seus dados tratados de forma independente das funes, diferente da Programao Orientada a Objetos. Na programao estruturada permitido incluir sentenas em qualquer parte da linha. A linguagem C no totalmente estruturada em blocos, porque no permite criar uma funo dentro da outra. 3. Programao Orientada a Objetos Nessa programao existe a definio de classes, encapsulamento, herana, que est relacionada com a reutilizao e padronizao de cdigo. A orientao a objetos vem propiciar o aumento de produtividade, diminuio do custo de desenvolvimento e manuteno (manuteno evolutiva e no corretiva). As classes so criadas para representar (categorizar) um conjunto de entidades (objetos) que possuem as mesmas caractersticas e comportamento (ou mesmo similares) dentro de um contexto. Quando voc for escolher uma linguagem de programao, considere tambm a: FORMA DE EXECUAO (Compilador ou Interpretador) e o NVEL DE PROGRAMAO (baixo, alto)

Modularidade4. Estratgia de Decomposio ou Dividir para Conquistar A decomposio uma estratgia de resoluo de problemas. A idia dividir o problema em problemas menores (subproblemas), at que cada parte (subdiviso) seja pequena o bastante para que a soluo seja facilmente encontrada. Segundo Villas, o termo Dividir para Conquistar veio da guerra, onde mais fcil vencer grupos isolados de inimigos do que todos os inimigos juntos. A decomposio de um problema reduz a complexidade do mesmo, pois a complexidade tambm dividida. O foco da ateno fica isolado, de forma que se concentra em um problema por vez. Quando se tem todos de uma vez, o desenvolvimento da lgica se dispersa e no se chega a nenhum resultado. A soluo mais rpida, j que a complexidade menor que ao original. Como exemplo, podemos destacar o exemplo Folha de Pagamento de uma empresa. Supondo que o objetivo principal gerar o demonstrativo de um funcionrio. Inicialmente parece ser bem complexo, mas se voc analisar com calma tem como dividir esse problema, em problemas menores, como o de calculo de descontos e clculos de benefcios.

Esse processo deve ser feito da seguinte maneira: 1. Divida o problema em suas partes principais no caso da folha, descontos, benefcios seria um subproblema. 2. Analise a diviso e veja a coerncia da divisoProf Angelina V.S.Melar 20

3. Se uma diviso ainda estiver complexa, decomponha novamente. os descontos podem ser divididos por especialidade 4. Reavalie tudo novamente. Essa decomposio continua tambm conhecida como refinamento sucessivo. Porque parte de um problema complexo e abrangente que sucessivamente dividido em problemas mais simples e especficos. A tcnica de Refinamento Sucessivo tambm pode se chamar Top-down (de cima para baixo), uma vez que parte de um problema mais abrangente (abstrato) at atingir um nvel mais detalhado e especfico. Normalmente essa tcnica a mais fcil de compreender. Automvel inteiro peas separadas parafusos Existe a tcnica Bottom-up (de baixo para cima), que o inverso dessa. Essa parte dos conceitos mais detalhados e especficos e vai agrupando em nveis mais abrangentes (abstratos), at atingir o nvel desejado. Potenciao multiplicar somar o Segundo Rinaldo, a modulao uma tcnica de resoluo de problemas, onde se divide o problema maior (principal) em problemas menores. A soluo do problema maior ocorre em decorrncia da soluo dos menores.5. Mdulos Cada subproblema um mdulo ou podemos dizer que um subalgoritmo ou subproblema que realiza tarefas especficas. Em termos funcionais, existem dois tipos de mdulos:1. Procedimento: um mdulo que executa uma tarefa especfica, que pode ou no gerar

vrias sadas usando as variveis globais ou locais. Ele no retorna valores para o mdulo que o chamou.2. Funo: um modulo que ir gerar uma nica sada e que ser devolvida para a funo principal ou mdulo que o chamou.

Resumo das vantagens:

Subdiviso dos algoritmos complexos: facilita o entendimento; Estruturao de algoritmos: facilita deteco de erros e a documentao do sistema Modularizao de sistemas: facilita a manuteno e reutilizao do algoritmo

Prof Angelina V.S.Melar 21

SEGUNDA PARTE LINGUAGEM C

Prof Angelina V.S.Melar 22

Linguagem CA linguagem C foi desenvolvida por programadores para programadores. Ela se popularizou rapidamente devido a sua velocidade, segurana e eficincia. Com ela possvel desenvolver desde um simples programa (uma calculadora) at um sistema operacional.Origens da linguagem C A linguagem C foi criada por Dennis Ritchie em 1972. Sua origem foi atravs da linguagem BCPL, desenvolvida por Martin Richards, que influenciou Ken Thompson a criar o B, que levou a linguagem C. Com a popularizao dos microcomputadores houve um aumento no desenvolvimento de implementaes em C, criando discrepncias entre elas. Para resolver essa situao, o rgo americano de padronizao (American National Standards Institute), em 1983, criou C padro ANSI, estabelecendo uma definio padronizada da linguagem C. A maioria dos compiladores so compatveis com esse padro. A linguagem C++ foi construda sobre os fundamentos da linguagem C e d suporte para a Programao Orientada a Objetos. Existem vrios ambientes de desenvolvimento para a linguagem C, como: DEV-C++, Visual C++, Turbo C, CodeBlocks. O ambiente a ser usado o Dev-C++, cujo compilador a implementao Mingw do GCC (Gnu C Compiler). Resumo histrico 1966 BCPL (Martin Richards) 1970 - B (Ken Thompson) 1972 C (Dennis Ritchie) 1978 Livro The C Programming Language (Brian Kernigham e Dennis Ritchie) 1983 - C padro ANSI - rgo americano de padronizao (American National Standards Institute) O padro ANSI definiu o contedo da biblioteca padro C, palavras reservadas, estrutura da linguagem (prottipo da funo). 1985 - C++ ( o C projetado para suportar Programao Orientada a Objetos). Caractersticas e Vantagens: Facilidade para aprendizagem de outras linguagens de programao, inclusive as orientadas a objetos Constitudo por funes Linguagem de programao estruturada Ferramenta poderosa de desenvolvimento (pode desenvolver um editor de texto, um aplicativo comercial, um programa para microcontrolador) Portabilidade- em relao a mudana do cdigo para plataforma Windows ou Linux Linguagem compiladora

Prof Angelina V.S.Melar 23

Processo de Compilao e Ciclo de Vida do Programa6. Linguagem C Compiladora ou Interpretadora?

Uma linguagem de programao pode ser compiladora ou interpretadora. O que as distingue a forma com que elas executam o programa. O interpretador l o cdigo fonte linha a linha, executando-as em seguida. J o compilador, l o cdigo fonte inteiro e se este no tiver erros de sintaxe, ser convertido em um cdigo de mquina, fazendo com que o processador consiga entend-lo e execut-lo. Se forem feitas alteraes no programa, este ter que ser compilado novamente, gerando um novo cdigo de mquina. Um computador s pode executar programas em linguagem de mquina. Cada programa executvel uma seqncia de instrues que o processador interpreta e executa as operaes correspondentes. O cdigo fonte a traduo dos comandos do pseudocdigo para as respectivas instrues da linguagem de programao (por exemplo, linguagem C). Essas instrues depois so traduzidas para a linguagem da mquina (que a linguagem interna que o computador entende). O arquivo objeto somente gerado quando o arquivo fonte no possui erro de sintaxe.7. Ciclo de Vida do Programa Criao do programa Para se fazer um programa deve-se escrever uma sequncia correta de instrues que devero se executados pelo computador. Para se chegar nessa sequncia deve-se desenvolver o Algoritmo. Essa lgica deve ser desenvolvida numa linguagem natural, parecida com a do ser humano, que pode ser a Descrio Narrativa e o Pseudocdigo. Depois de solucionado o problema e escrito o algoritmo em pseudocdigo, este deve ser passado para uma linguagem de programao, ou seja, codificado. Na nossa disciplina ser usada a linguagem de programao C. O programa codificado e digitado se chama Arquivo Fonte. Este deve ser salvo com a extenso .C. Se no for digitada a extenso, ser assumir a extenso .cpp que padro do ambiente de desenvolvimento (cpp significa c plus plus ou c++). Para executar esse programa necessrio compil-lo e link-lo. Na compilao as instrues (linhas) so verificadas e interpretadas pela mquina (CPU), se no houver erros de sintaxe, ser gerado o arquivo executvel (extenso .exe). O linkeditor (linker) une os cdigos dos arquivos de bibliotecas usados pela linguagem C com os arquivos fontes criados pelo programador. Para ver o programa funcionando basta digitar seu nome ou dar um duplo clique no cone do programa, de acordo com o ambiente que voc estiver (texto ou grfico). Os erros de lgica s podem ser detectados pelo programador depois de gerado o arquivo executvel.

Prof Angelina V.S.Melar 24

Resumo das etapas da criao de um programa 1. Necessidade de um programa 2. Enunciado do problema 3. Descrio das idias numa linguagem natural Descrio Narrativa Algoritmo 4. Criao da sequncia correta de instrues Pseudocdigo - de acordo com o mtodo da linguagem a ser usada (estruturada) 5. Codificao para uma linguagem de programao Linguagem C 6. Processo de compilao Verificao dos erros de sintaxe, gerao do arquivo objeto, unio com as bibliotecas 7. Criao do arquivo executvel

O ciclo de criao de um programa em C pode ser analisado abaixo, na seqncia de figuras abaixo.arquivo fonte arquivo objeto arquivo fonte ... arquivo objeto arquivo biblioteca

Linkedio

arquivo executvel

Prof Angelina V.S.Melar 25

Ambiente de Desenvolvimento DEV-C++1. Ambiente integrado O DEV-C++ um ambiente integrado de desenvolvimento para a linguagem de programao C e C++, que inclui um local para digitao do programa (editor de texto), um compilador (gcc - Gnu C Compiler), um linkeeditor e janela de visualizao do executvel. Nesse ambiente possvel desenvolver aplicaes console (Console Application), cuja interface texto ou aplicaes grficas (GUI Application) que usam janelas e elementos visuais como interface. Pode-se digitar o programa em outro editor de texto, como o Bloco de Notas, o Word, devendo ter o cuidado de salv-lo como um arquivo texto, sem qualquer tipo de formatao. O DEV-C++ pode ser adquirido gratuitamente pelo site http://www.bloodshed.net/devcpp.html. A verso mencionada nesta apostila a verso 4.9.8.0, em portugus.

2. Configurando o ambiente e o editor As configuraes padres do compilador, do ambiente e do editor de texto podem ser alteradas atravs do menu Ferramentas. Se o seu ambiente est em ingls mude-o para portugus atravs do menu Tools (ferramentas) opo Environment Options (Opes do Ambiente) guia Interface escolha o portugus. Procure personalizar o seu ambiente de trabalho, criando atalhos e facilidades no processo de digitao. Por exemplo: Menu Ferramentas Opes do Editor Ative a opo Destacar as chaves e os parnteses. Na guia Display ative a opo Nmeros das linhas. No menu Exibir desabilite a exibio do Navegador de classes/projetos clicando apenas uma vez nessa opo.

Prof Angelina V.S.Melar 26

3. Configuraes para o Windows Vista/7 Para que o Dev funcione corretamente no Windows Vista, algumas configuraes devem ser feitas: No menu Ferramentas escolha a opo Opces do Compilador na guia Diretrios, em Binrios deve ser adicionado o caminho C:\DevCpp\libexec\gcc\mingw32\3.2 (se no houver). Na guia Programas deve ser colocado C:\Dev-Cpp\bin\ em cada linha. Por exemplo, a primeira linha fica assim: C:\Dev-Cpp\bin\gcc.exe 4. Digitao do programa Para a digitao do programa no DEVC++ necessrio seguir os seguintes passos: 1. No menu escolha a opo Arquivo (File); 2. Escolha a opo Novo e depois Arquivo Fonte ou se preferir a tecla de atalho e simultaneamente; 3. Aparecer uma nova janela, com o ttulo: (*) Sem Ttulo 1, onde deve ser feita a digitao do programa fonte. 4. Dependendo da verso, ou mesmo da configurao pr-definida no editor, aparece um programa inicial. Pode-se apag-lo ou deix-lo, aproveitando as linhas de cdigo j digitadas. 5. Gravao do programa Aps a digitao do programa, ele dever ser salvo antes de ser executado, de acordo com as etapas abaixo: 1. No menu Arquivo escolha a opo Salvar ou use a tecla de atalho e simultaneamente. 2. Escolha o diretrio de trabalho, digite o nome do arquivo fonte e pressione o boto Salvar. Observe que a extenso padro do DEV-C++ o .cpp. Ao salvar o arquivo fonte, cuidado para no salva-lo com nome invlido (com espao entre as palavras, iniciado com nmero.

Toda vez que voc pressionar o F9 para compilar e executar o Dev estar salvando automaticamente seu programa.6. Compilao e execuo do programa Existem diversas maneiras de ver se o programa est sem erros e funcionando, entre elas: 1. Escolhendo a opo Executar (Execute) do menu e dentro dela a opo Compilar e Executar (Compile and Run); ou 2. Pressionando a tecla de funo ou na barra de ferramentas a opo Compilar e Executar. Se voc quiser apenas verificar se existem erros no programa, poder inicialmente compil-lo (atravs do menu Executar, opo Compilar) e futuramente execut-lo (atravs do menu Executar, opo Executar).

Prof Angelina V.S.Melar 27

7. Criando um cdigo fonte padro

Uma boa forma de configurar o editor criar um modelo inicial de programa fonte, ou seja, toda vez que for iniciado um novo arquivo ir aparecer o modelo que voc definiu. As linhas de comandos e bibliotecas mais comuns ficam digitadas neste modelo. Para criar o modelo de cdigo padro escolha a opo Ferramentas, depois Opes do Editor e a guia Cdigo. Na parte inferior clique no Cdigo Fonte Padro e digite seu cdigo fonte.Os caracteres especiais acentos, cedilha nesse ambiente console so convertidos.

Prof Angelina V.S.Melar 28

Estrutura do Programa na Linguagem CUm programa codificado na linguagem C tem uma sintaxe e estrutura um pouco diferente de um programa escrito em outra linguagem, como Pascal. Em C, se trabalha com vrias funes e bibliotecas. Um programa precisa ter necessariamente uma funo principal (main), que tem as instrues e funes iniciais do programa. Veja o exemplo abaixo:

1. Estrutura bsica Um programa feito na linguagem C constitudo basicamente de: Documentao do programa: comentrios que o programador considera importante, como objetivo do programa. Cabealho: Diretivas de pr-processamento, onde sero definidas as constantes e includos os arquivos de cabealho. Declarao e inicializao de variveis globais. Blocos de instrues: um bloco principal (funo main) e outros blocos de rotinas (outras funes chamadas a partir da main()). 2. Diretivas As diretivas do pr-processador iniciam com o smbolo # e cada diretiva deve ser escrita em linha distinta. As diretivas instruem o compilador a execuo de uma ao dentro do cdigofonte do programa em C. As diretivas do padro C ANSI a serem usadas so: #include, #define. O pr-processador do C um programa que examina o arquivo fonte e executa as devidas modificaes com base nas diretivas. Como por exemplo, ao encontrar a diretiva #include ele faz um desvio, localiza a funo na biblioteca e adiciona seu cdigo ao cdigo do arquivo fonte.

Prof Angelina V.S.Melar 29

#include Essa diretiva quando lida faz a incluso de um arquivo de cabealho ao arquivo-fonte. Exemplo: #include arquivo de cabealho: stdio.h

STD standard padro I input O output Funes padres de entrada e sada Funes associadas: scanf(), printf()

#define Essa diretiva define um identificador (constante simblica) e uma string que o substituir toda vez que for encontrado no cdigo-fonte. Estrutura: #define identificador string

Exemplo:

#define EXIBA printf #define TEXTO \nProgramao de Computadores na Fatec main() { EXIBA(TEXTO); }

Ao ser executada a diretiva #define, o compilador associa a palavra EXIBA a palavra printf e toda vez que aparecer a palavra EXIBA ele a substituda por printf e a palavra TEXTO ser substituda por \nProgramao de Computadores.

3. Arquivos de Cabealho (header) Cada funo definida na biblioteca C tem seu respectivo arquivo de cabealho (como citado acima), ou seja, se voc utilizar uma funo de entrada -scanf()- ter que incluir seu respectivo arquivo de cabealho (stdio.h) no incio do programa. Esse arquivo possui a definio de tipo e o prottipo da funo. Os arquivos com a extenso .h, so chamados de arquivos de cabealho, ou header files. Arquivo de cabealho stdio.h conio.h/conio.c math.h stdlib.h time.h string.h Finalidade

Suporta entrada e sada com arquivos Suporta E/S pelo console Possui diversas funes matemticas Declaraes miscelneas Funes de horrio do sistema Funes de string

Dica: O arquivo de cabealho feito pelo programador colocados entre . Exemplo: #include funccondicao.h Prof Angelina V.S.Melar 30

4. Biblioteca Uma biblioteca uma coleo de funes. Um arquivo de biblioteca armazena o nome de cada funo, mais as informaes necessrias para o processo de linkagem. Quando o programa se referencia a uma funo, o linkeditor procura a funo na biblioteca (que possuem vrias) e adiciona a parte do seu cdigo ao programa. As funes padres existentes na biblioteca do compilador C foram definidas pela ANSI. Algumas empresas criaram funes novas e acrescentaram ao compilador, como por exemplo, a Borland, acrescentou ao Turbo C a biblioteca CONIO (Console Input/Output). 5. Bloco de instrues e Funo MAIN() Todos os programas na linguagem C comeam executando o contedo descrito na funo principal (main) e finalizam com o trmino dessa funo. Essa funo determina a execuo e ordem de execuo das demais funes que existirem. As funes possuem um conjunto de instrues (bloco de comandos) com uma tarefa especfica, como por exemplo, uma funo para calcular um desconto ou logaritmo de um nmero. O contedo de uma funo delimitado por chaves { }- incio e fim. O cdigo que estiver dentro das chaves ser executado seqencialmente quando a funo for chamada. 6. Projeto Pode ser criado um projeto em C, onde podem existir vrios programas (arquivos fontes), mas um nico arquivo executvel gerado pelo compilador. Nos projetos sempre haver um arquivo com a funo principal (main()) que indicar o incio do projeto. Espaos

7. Regras de Digitao e Dicas da Estrutura em C em branco so desconsiderados D preferncia para um cdigo limpo, fcil de entender, com alinhamento e endentao. Como no exemplo que segue: Com espaos Sem espaos (correto e incompreensvel) (correto e compreensvel) #include #include main() { .} main() { . }

H

diferenciao de letras maisculas e minsculas (case sensitive) A linguagem C case sensitive, ou seja, diferencia letra maiscula da minscula. Exemplo: NOME diferente de Nome que diferente de nome. As palavras-chaves de C so minsculas. (else palavra-chave, mas ELSE ou Else no so). Os parnteses aps o nome de uma funo, como a funo main() obrigatrio. As chaves { } servem para delimitar um bloco de instrues. As variveis devem ser declaradas no incio.

Prof Angelina V.S.Melar 31

No

C para indicar o final de uma instruo deve ser usado o ;(ponto-e-vrgula). Se for necessrio podem ser digitadas vrias instrues numa mesma linha. Como por exemplo: printf Exemplo da Estrutura ; printf de um Programa em C;

Cuidado com as palavras reservadas, exemplo: include, printf, main. Na linguagem C tem 32 palavras, sendo que 27 criadas pelo Dennis Ritchie e 5 do padro ANSI. 8. Comentrios Para facilitar a compreenso coloque comentrios ao decorrer do cdigo. Esses comentrios podem ser feitos de duas maneiras: usando duas barras para comentrios de uma nica linha barra asterisco para comentrios de mais de uma linha.

Exemplos: a) Comentrio de uma linha #include //Essa linha inclui a biblioteca que tem funes de entrada e sada O comentrio tambm pode ser iniciado no comeo da linha soma = n1 / n2; //o operador de diviso a barrab) Comentrio com vrias linhas /* Autor: Julia Melar Data: 15/07/2007 Sistema: Cadastro de Fornecedores */

Prof Angelina V.S.Melar 32

VariveisOs dados armazenados no computador podem ser apresentados de duas formas diferentes: como constantes ou variveis.1. O que so variveis? Os dados fornecidos pelos dispositivos de entrada ou aqueles dados processados so armazenados numa rea da memria do computador chamada de varivel. A varivel uma posio reservada da memria que usada para armazenar um valor (tipo de dado) temporariamente. Esse valor pode ser alterado a qualquer momento durante a execuo do programa. Essas variveis so utilizadas como reas de trabalho, ou seja, como uma lousa, onde podemos escrever, modificar e apagar quantas vezes for necessrio. Cuidado: cada varivel armazena um nico contedo por vez, quando for inserido um novo valor, o anterior apagado. Memria Variveis

2. Mas em que parte da memria vo os dados? Cada dado ser armazenado em uma posio diferente da memria, essa posio um endereo fsico da memria RAM. Todos esses endeeos precisam ser identificadas, ou seja, ter um nome de referncia para cada alocao feita na memria. O nome (identificador) da varivel torna-se o seu endereo. Imaginem como voc encontraria uma pessoa sem ter seu endereo ou telefone? Imagine ter que ser saber endereos fsicos: 10CF, 2A00? Identificadores Os identificadores so os nomes dados para as variveis, constantes e funes. A melhor forma de nomear verificar qual ser seu contedo e definir o nome de acordo com ele. Por exemplo, se for definir uma varivel para armazenar o resultado da soma identifique como soma. Imagine as variveis como gavetas etiquetadas, cada uma com um nome, voc somente deve colocar contedos (objetos) nas gavetas de acordo com a identificao e tipo definido para ela. Em C existem algumas regras para a formao dos identificadores: _ o primeira caracter tem que ser obrigatoriamente uma letra ou um sublinhado; _ o nome pode ser formado por nmeros, s que estes no podem ser colocados na primeira posio. _ no pode ter caracteres especiais ou espao, com exceo do caracter _ (underline); _ as letras maisculas e minsculas so tratadas diferentemente (case sensitive). _ no pode ser igual a uma palavra reservada da linguagem. _ no pode ter acento e cedilha () __ somente os 31 caracteres so vlidos Prof Angelina V.S.Melar 33

3. Declarao de varivel

A declarao de variveis obrigatria em quase todas as linguagens de programao, onde nela feita a definio do nome/local de armazenamento (ligada ao endereo fsico) e quanto de espao ser reservado para o contedo a ser armazenado (tipo de dado). A declarao da varivel deve ser feita obrigatoriamente antes da sua utilizao, podendo ser declaradas em lugares diferentes: dentro da funo (varivel local), fora da funo (varivel global), ou dentro de um bloco de instrues.No se esquea que ao definir o tipo de varivel est se determinado a quantidade de espao (bytes) que ser alocado na memria e o intervalo de valores que ela poder armazenar. Observao:

No pseudocdigo o smbolo significa atribuio. Na linguagem C ela representada com o smbolo =.

Exemplos de Declarao de Varivel: tipo_de_varivel nome_varivel, nome_varivel; Pseudocdigo C Dicas em C real salario; float salario; inteiro num_filho; int num_filho; caracter sexo; char sexo; real porc_aum 5.5; float porc_aum =5.5; Pode ser atribudo um contedo a varivel quando ela for declarada. inteiro qtd_pao, qtd_leite; int qtd_pao, qtd_leite; Podem ser declaradas diversas variveis do mesmo tipo ao mesmo tempo.

Prof Angelina V.S.Melar 34

ConstantesConstantes so dados com valores fixos que no podem ser alterados durante a execuo do programa. Dentro de um programa podem existir vrias constantes, como por exemplo, o ano atual, o valor de PI. As constantes podem ser definidas sem identificador, sendo inseridas diretamente. como na expresso matemtica: VARIVEL CONSTANTEX +Y+3

O X e o Y seriam as variveis do programa, pois so as incgnitas e contm um valor sujeito a alterao, j o nmero 3 uma constante, o seu valor j conhecido e no poder ser alterado. Em todas as execues ele sempre ser 3. Exemplos: A) Data_atual = 1990 Valor_aumento = 1000 Porc_desconto = 0.10 PI = 3.141592

B) #include #include const int ANO_ATUAL = 1990; main() { // ANO_ATUAL = 300; //no permite mudana de valor printf("%i", ANO_ATUAL); _sleep(2000); }

Prof Angelina V.S.Melar 35

Tipos de dadosQuando colocamos o termo tipos de dados bsicos nos referimos aos tipos primitivos da linguagem. Cada linguagem tem seus tipos primitivos e a partir deles podem criar novos. Lembre-se que o computador processa dados. Pense que quando se agrega valor a um dado tem-se uma informao. Exemplo: 22 de maro dado, no informa nada, mas se colocarmos o Dia da gua, que ocorre no dia 22 de maro, ele tem outro valor, traz uma informao muito importante, de conscientizao e valorizao do meio de sobrevivncia da espcie humana. Quando voc define o tipo de varivel o computador reserva (aloca) um espao (quantidade de bytes) de acordo com o esse tipo. Mesmo que o valor recebido e armazenado seja menor que o espao reservado o computador ainda conserva o mesmo tamanho pr-definido, havendo um desperdcio de memria. Defina de forma correta o tipo de dado, para que no ocorra falta de memria durante a execuo do programa ou lentido de processamento. Na linguagem C os tipos primitivos so: caracter (char), inteiro (int), real (float e double) e sem valor (void). possvel em C manusear dados numricos nas bases binria, octal, decimal e hexadecimal.

1. Numrico O tipo numrico armazena apenas valores numricos, que podem ser: inteiros ou reais. Numrico Inteiro - int Contm nmeros que no possuem a parte decimal, podendo ser positivos, negativos ou nulos. A representao desse tipo no pseudocdigo ser int, abreviao de inteiro. Na linguagem C int, abreviao de integer. Pseudocdigo Codificao em C int num= -4; int num1 = 6000, num2; Numrico Real- real So os nmeros positivos, negativos ou nulos que possuem a parte fracionria (parte decimal). O separador decimal o ponto e no a vrgula (padro americano). O tipo real pode ser representado pelo real simples ou duplo, a diferena est na preciso e no nmero de casas decimais. O real simples identificado como float na linguagem C e tem at 6 dgitos de casas decimais. Se for necessria uma preciso dupla necessrio usar o tipo double, que suporta at 11 digitos. No pseudocdigo ser definido apenas como real. Pseudocdigo Codificao em C real salario= 350.50; float n1=20.0, n2 = -15.50; float n1=0.0, n2, soma; 2. Literal/ Cadeia de Caracteres Na linguagem C no existe o tipo literal, tambm conhecido como alfanumrico, string, que aceita armazenar vrios caracteres. Quando houver necessidade do armazenamento de um nome dever ser feito uso de uma matriz de caracteres. Prof Angelina V.S.Melar 36

3. Lgicas As variveis definidas como lgicas (booleanas) podem guardar apenas um dos dois estados: Verdadeiro ou Falso, sempre armazenando apenas um dgito. Na linguagem C no existe um tipo especfico para a representao de valores lgicos. O dgito 0 representa o valor lgico falso e 1 representa o valor lgico verdade (todo valor diferente de 1 falso) . Pseudocdigo lgico estado_lampada; Codificao em C while (1) //loop infinito 4. Caracter O tipo char usado para armazenar um caracter da tabela ASCII, que possui letras (a..z, A..Z), nmeros (0..9) e caracteres especiais (, ^, &, =, #, :). Na maioria dos ambientes no pode ser usado para clculo, mesmo tendo armazenado um nmero. Quando for um nico caracter colocamos seu contedo obrigatoriamente entre apostrofe(). Quando for uma cadeia de caracteres, colocamos entre aspas ().

Pseudocdigo caracter sexo; caracter opo = a;

Codificao em C char sexo = f; char flag = !;

Exemplo de programa: main() { char a='1', b=1; printf("%c - %c", a, b); _sleep(2000); } Perceba que a varivel a armazena o smbolo 1 e a varivel b armazena o primeiro smbolo da tabela ASCII que a carinha. printf("\n%c - %c - %i - %i\n", a, b, a,b); //Resultado:1 carinha 49 1 1 //caracter 1 e o primeiro smbolo na ASCIII - o smbolo 1 a carinha //o smbolo 1 na ASCII tem seu decimal o 49 //o 1 inteiro o 1 na exibio definida como inteiro5. Espao Alocado de Memria No se esquea que cada byte ocupa 8 bits (de 0 a 7). Cada bit possui dois estados ( 0 ou 1 )- base 2. Ento, um byte possui 28 = 256 combinaes possveis. Ento o tipo caracter que ocupa 1 byte pode armazenar 256 combinaes diferentes de bits.Se a cada 8 bits pode-se ter a representao de um nmero inteiro, ento, o char pode armazenar valores de 0 a 255. Nmero Decimal 49 Caracter 1 (ASCII) Bit 7 6 5 4 3 2 1 0 Base Decimal 128 64 32 16 8 4 2 1 Estado - valor 0 0 1 1 0 0 0 1 Prof Angelina V.S.Melar 37

Um tipo que armazena 2 bytes pode ter 28 x 28 combinaes diferentes de bits, que equivale a 65538. O que armazena 4 bytes pode ter 28 x 28 x 28 x 28 combinaes diferentes, que equivale a 2.147.483.647 (+- 2 bilhes de combinaes).Tipo de Varivel char int float double void Qtd de bytes 1 4 4 8 0 Qtd de bits 8 32 32 64 0 Exemplo de valores f 1 14 -23 15.655 10.0 -14.7688665

6. Modificadores de Tipos Os modificadores de tipos so usados para modificar o tipo primitivo, fazendo com que ele aceite outra faixa de valores, aceitando nmeros negativos e positivos. O tipo signed faz com que o tipo represente os nmeros positivos e negativos. O unsigned somente aceita os nmeros positivos. A representao de nmeros negativos feita tomando o bit MSB (Most Significant Bit), onde msb=1 o sinal negativo e msb=0 o sinal positivo. Como utilizado bit para representao de sinal os valores a serem representado so metade da faixa padro. Por exemplo, o tipo char que vai de 0 a 255 do tipo signed (s positivos), para aceitar tipos negativos tem que ser unsigned e seus valores vo de -128..0..+127. O padro C padro ANSI define que os tipos so signed e no compilador CCS, MikroC o padro unsigned. O tipo short (reduz) e long (amplia) so usados para aumentar ou diminuir a faixa de valores dos tipos bases.

a)

Exemplo: unsigned char n1= 255; char n2= 255; //padro signed printf("Unsigned %i - signed %i", n1, n2); Resultado: 255 e -1

Dica: Pode-se definir valores em outras bases (diferente da decimal): int hex = 0x80 128 em decimal int oct = 012 10 em decimal Valor = 50 Decimal Valor = 050 Octal Valor = 0x50 Hexadecimal Valor = 0b01010000 Binrio

Prof Angelina V.S.Melar 38

7. Tabela ASCII (American Standard Code for Information Interchange) Cada combinao de byte pode representar internamente um smbolo (letra, dgito numrico ou caracter especial). Veja no final dessa apostila a explicao detalhada da ASCII. FATEC F A T E C 70 65 84 69 67 01000100 01000001 01010010 01000101 01000011

Exemplo de Cdigo que mostra a ASCII Estendida Unicode Latim I Suplementar (8 bits) main() { int tab; printf("Caracter Decimal Hexadecimal\n"); for(tab=0;tab> 2 00011000

Exemplo:

a)

int v1=100, v2; v2= v1 & 15;

100 decimal = 0 1 1 0 0 1 0 0 & 15 decimal 00001111 ____________ 00000100

4 decimal

O estado zero do bit far com que o bit resultante seja 0

Prof Angelina V.S.Melar 47

1. Funo Rand() e SRand() A funo rand() usada para gerar nmeros aleatrios. Os nmeros gerados aleatoriamente vo de 0 a 32767. main() { int num; num = rand(); printf("%i", num); _sleep(2000); } Para haver a delimitao dos nmeros gerados.rand()%10 + 1; // ajustado para gerar nmeros entre 1 e 10 (soma 1 pois comea no 0)

main() { int num; num = rand()%10+1; printf("%i", num); _sleep(2000); } A funo srand() permite a gerao de nmeros diferentes a cada nova execuo. srand((unsigned int)time((time_t *)NULL)); #include #include #include main() { srand((unsigned int)time((time_t *)NULL)); int num; num = rand()%10+1; printf("%i", num); _sleep(2000); } //srand(time(NULL));

Prof Angelina V.S.Melar 48

Estrutura de Controle Linear/ SequencialNesta estrutura a execuo das instrues linear, seqenciais, ou seja, onde uma ao deve ser executada aps a outra. No existe desvio na execuo. O conjunto de passos executado num fluxo contnuo do comeo ao fim. A execuo comea de cima para baixo, da esquerda para a direita Nessa estrutura temos as entradas, os processamentos e as sadas.Entrada: a leitura de dados feita atravs de dispositivos de entrada (teclado, mouse, arquivo, entre outros). Essa leitura feita e depois o dado transportado para a memria principal (RAM). A entrada no pseudocdigo denominada como leia. O dispositivo de entrada a ser utilizado o teclado. Pseudocdigo: inteiro num; leia (num) ; Ser reservado na memria RAM um endereo para num. Depois ser feita a leitura do teclado e armazenado o valor na varivel num. Processamento: o processamento pode ser realizado atravs de uma atribuio, ou uma expresso matemtica, que resultar num valor. O processamento pode ser realizado com as entradas. O resultado gerado tambm poder ser armazenado na memria. A atribuio no pseudocdigo representada pela seta ( )e o operador em C para atribuio o igual ( = ). Pseudocdigo: num 4; Varivel num recebe o valor 4 ou atribudo 4 a varivel num Codificao em C num = 4; Sada: pode ser a exibio de uma mensagem, ou a recuperao de um contedo que est na memria e ser transmitido para um dispositivo de sada (monitor, impressora, caixa de som, entre outros). A sada no pseudocdigo denominada como escreva ou exiba. O dispositivo de sada a ser utilizado o monitor. Pseudocdigo: Escreva (Informe um nmero); Escreva (Salrio calculado , sal); Bloco de instrues/comandos Um bloco de comandos ou instrues determina o conjunto de aes a serem executadas. Ele serve para definir os limites de existncia de uma varivel, ou seja, o escopo de uma varivel. Podemos ter diversas variveis declaradas no decorrer do algoritmo/programa, podendo ter duas com o mesmo nome, mas valores diferentes, dependendo do bloco em que foram declaradas. As aes dentro do bloco so separadas pelo ponto e vrgula ( ; ). Servindo para organizar e determinar a execuo ou encerramento de uma ao.

Prof Angelina V.S.Melar 49

Funes de Entrada e Sada Formatada1. Funo de Sada - printf() A funo printf() realiza a sada de dados em vrios formatos, de acordo com a configurao feita pelo programador. O prottipo da funo est no arquivo de cabealho STDIO.H. Com essa funo possvel exibir mensagens, resultados de clculos, endereos de memria. O prottipo do printf() : printf(string_de_controle, lista_de_argumentos); Na string de controle definido tudo que ser exibido na tela: cadeia de caracteres, o formato das variveis (usando-se o comando de formato - %) e os caracteres de controle (usando o smbolo \). Na lista de argumentos definem os formatos que sero exibidos os valores. Comandos de Formato mais usados Cdigo Formato um nico caracter %c %d inteiros decimais com sinal %i inteiros decimais com sinal %f ponto flutuante decimal double %lf %s string cadeia de caracteres hexadecimal sem sinal %x %u inteiro decimal sem sinal ponteiro %p octal %o %e float exponencial ponto flutuante curto %g %% % possvel especificar o tamanho dos campos que sero exibidos. Como nos exemplos abaixo: %4d _ _ 3 3 %7.2f _ _ _ 5.3 0

7 possveis no total, sendo fixadas 2 para o nmero de casas decimaisComando printf("%8i", 10); Exibio ( 10) Explicao As posies definidas a mais so preenchidas com espao em branco e o valor alinhado direita do campo. Se o tamanho do campo for precedido por um - (menos), ento, o valor ser alinhado esquerda do campo. Se o tamanho do campo for precedido com o 0 (zero), ento as posies excedentes 50

printf("%-8i", 10);

(10

)

printf("%08i", 10);

(0000010)

Prof Angelina V.S.Melar

printf(%.1f,1910.10)

1910.1

so preenchidas com zeros. Deve ser colocada a quantidade de casas decimais a serem exibidas junto com o comando de formato, como no exemplo %.1f

printf(O resultado da soma :); soma =4.51; printf(O resultado : %6.2f, soma); printf (Mostra o smbolo %% %%") printf ("Um tipo caractere %c e um tipo inteiro %i",A',20) printf ("%s uma string","Este") printf ("%s%d%%","Juros de ",10)

O resultado da soma O resultado da soma 4.51 %% Um tipo caractere A e um tipo inteiro 20 Este um exemplo string Juros de 10%

2. Funo de Entrada scanf() A funo scanf() usada para fazer entrada de dados. Essa funo captura o valor digitado no teclado e armazen-o em uma varivel. Os valores capturados so convertidos para o formato interno apropriado. O prottipo dessa funo est no arquivo de cabealho STDIO.H.

Sua estrutura e: scanf(string_de_controle, &lista_de_argumentos); Primeiro se define o tipo de varivel a ser recebido Deve ser colocado o operador & (endereo de memria) antes de cada uma das variveis da lista de argumentos (exceto para strings). Deve ser colocado o mesmo nmero de argumentos e de string de controle. Num tipo string, o espao em branco finaliza a entrada. Podem ser recebidos vrios valores ao mesmo tempo, usando como separador de entrada um espao em branco ou o caracter dois pontos ( : ). Os especificadores %d, %f, %e pulam automaticamente os brancos que precedem os valores numricos.Comandos de Formato mais usados Cdigo Formato %c caracter %d , %i inteiros decimais com sinal %f , %e, %g ponto flutuante decimal %s string de caracteres Exemplo:

float nota1, nota2; scanf(%f, &nota1); scanf(%f, &nota2); scanf(%f%f , &nota1, &nota2); int hora, minuto; scanf(%i:%i, &hora,&minuto);

ou

Prof Angelina V.S.Melar 51

1. Funo de Entrada de caracter getch() e getchar() As funes getch() e getchar() esto na biblioteca conio.c. Elas so usadas para a entrada de um caracter. A diferena entre elas que a getchar() espera aps o caracter digitado a tecla enter e o getch() no.

#include #include #include main() { char caracter; caracter=getch(); printf ("Voce pressionou a tecla %c que equivale ao numero %i Asc",caracter, caracter ); _sleep(2000); }

ExemplosExemplo 1 Faa um programa que receba dois nmeros inteiros e efetue as operaes: adio, subtrao, multiplicao, diviso, resto da diviso e exponenciao. Pseudocdigo Incio inteiro n1, n2, soma, subtr, mult, divisao, expo, resto; escreva (Informe primeiro nmero); leia (n1); escreva (Informe segundo nmero); leia (n2); soma n1+ n2; subtr n1 - n2; mult n1 * n2; divisao n1 / n2; resto n1 mod n2; expo = (n1, n2); escreva (Soma:, soma); escreva (Subtracao:, subtr); escreva (Multiplicacao:, mult); escreva (Divisao:, divisao); escreva (Resto da diviso:, resto); escreva (Exponenciao:, expo); Fim Codificao em C #include #include #define escreva printf

main() { int n1, n2, soma, subtr, mult, divisao, expon, resto; escreva ("Informe 2 numeros"); scanf("%i%i", &n1, &n2); soma= n1+ n2; subtr= n1 - n2; mult= n1 * n2; divisao= n1 / n2; resto= n1 % n2; escreva ("Soma: %i - Subtracao: %i \n", soma, subtr); escreva ("Multiplicacao: %i \n", mult); escreva ("Divisao: %i Resto da diviso: %i\n", diviso, resto); _sleep(8000); }

Prof Angelina V.S.Melar 52

Exemplo 2 1) Calcular a idade atual e daqui a 30 anos de uma pessoa.INCIO

Descrio Narrativa: ANO_NASC Receber o ano de nascimento Receber o ano atual Receber Subtrair o ano atual do ano de nascimento para saber a idade ANO_ATUAL Somar o valor da idade com 30 para saber quantos anos ter daqui 30 anos Mostrar idade atual IDADE = ANO_ATUAL - ANO_NASC Mostrar idade daqui a 30 anos. Pseudocdigo Inicio inteiro ano_nasc, ano_atual, idade, idade30; Escreva (Digite o ano atual); Leia (ano_nasc); Escreva (Digite o ano de nascimento); Leia (ano_atual); Idade ano_atual ano_nasc; Idade30 idade +30; Escreva (A sua idade , idade); Escreva (Daqui a 30 anos voc ter:,Idade30); FimLinguagem C #include #include main() { int ano_nasc, ano_atual, idade, idade30; printf(\nDigite o ano atual); scanf(%i,&ano_nasc); printf(\nDigite o ano de nascimento); scanf(%i,&ano_atual); idade = ano_atual ano_nasc; idade30= idade +30; printf(A sua idade %i, idade); printf(Daqui a 30 anos voc ter: %i,idade30); } Linguagem Pascal Program idade; Var ano_nasc, ano_atual, idade, idade30: integer; begin write(Digite o ano atual); readln(ano_nasc); write(Digite o ano de nascimento); readln(ano_atual); idade := ano_atual ano_nasc; idade30 := idade +30; writeln(A sua idade , idade); writeln(Daqui a 30 anos voc ter:, idade30); end

Receber

IDADE30 = IDADE + 30

Mostrar IDADE

Mostrar IDADE30

FIM

Prof Angelina V.S.Melar 53

Teste de Mesa

MEMRIA VALORES SIMULADOSANO_NASC ANO_ATUAL

1980IDADE

1998IDADE30

1980 1998

18

48

ENTRADA

SADA

PROCESSAMENTOSIDADE = ANO_ATUAL - ANO_NASC IDADE = 1998 1980 IDADE = 18 IDADE30 = IDADE + 30 IDADE30 = 18 + 30 IDADE30 = 48

18 48

Prof Angelina V.S.Melar 54

Exerccios Resolvidos e Propostos01) Uma loja de telefone celular paga aos seus vendedores um salrio fixo mais uma comisso de R$ 50,00 por cada aparelho vendido. Faa o pseudocdigo e fluxograma que receba o nome do vendedor, o nmero de aparelhos vendidos e calcule o salrio total do vendedor. Entrada: nome do vendedor nmero de aparelhos vendidos valor do salrio fixo (mesmo no sendo pedido no enunciado, o valor do salrio fixo deve ser recebido para o clculo do salrio total) Processamento: calcular o valor da comisso _ quantidade de aparelhos vendidos * 50 calcular o salrio total _ o valor da comisso + o valor do salrio fixo Sada: mostrar o salrio total do vendedor Pseudocdigo INCIO caracter nome; inteiro quant; real sal_bruto, comis, sal_total; escreva (Nome do Funcionrio:); leia nome; escreva (Quantos aparelhos foram vendidos); leia quant; escreva (Qual o valor do salrio fixo); leia sal_bruto; comis quant * 50; sal_total sal_bruto + comis; escreva (O salrio final :, sal_total); FIM Fluxograma:INCIO

Receber NOME_VEND

Receber QUANT

Receber SAL_BRUTO

COMIS = QUANT * 50

SAL_TOTAL = SAL_BRUTO + COMIS MostrarSAL_TOTAL

FIM

Prof Angelina V.S.Melar 55

Operador Relacional e Lgico1. Operadores Relacionais Os operadores relacionais so utilizados em expresses de lgicas, para comparao e testes condicionais de valores de constantes ou contedo de variveis. Eles podem ser usados numa expresso que tambm tenha operadores aritmticos. Esses operadores relacionais geram um resultado lgico (Verdadeiro ou Falso) quando aplicados nas expresses. Operador (pseudocdigo) Significado C Igual == = Maior > > Menor < < Menor ou igual = Diferente de != A precedncia de execuo : =, !=, == Expresso em pseudocdigo 3=5 15 > 5 5+ 6 = 11 7 < 4-5 s = n Expresso em C 3==5 15 > 5 5 + 6 = = 11 7 < 4-5 s = = n Resultado 0 - Falso 1- Verdadeiro 1- Verdadeiro 0 - Falso 0 - Falso

Na linguagem C no existe o tipo lgico (booleano) com os valores true e false (verdadeiro ou falso). Ao verificar uma expresso, o compilador compara e retorna o valor zero ou um. O valor zero representa o falso e, qualquer valor diferente de zero, no caso o valor um, representa o verdadeiro. 2. Operadores Lgicos As expresses lgicas so aquelas que operam com valores lgicos e resultam tambm num valor lgico. Elas podem ser utilizadas em testes de variveis, tomada de deciso e expresses matemticas. A funo do operador lgico NO pode modificar valores e expresses, pois ele serve para negar a expresso. Operador NO E OU Operao Negao Conjuno Disjuno Prioridade 1 2 3 C ! && ||

Prof Angelina V.S.Melar 56

3. Tabela Verdade: o conjunto das possibilidades combinatrias dos operadores lgicos. E OU NO VeV=V V ou V = V No F = V VeF=F V ou F = V No V =F FeV=F F ou V = V FeF=F F ou F = FExemplos: Pseudocdigo No ( Idade = 5 ) num1 5 num2 6 num1 > 7 E num2 > 5 C ! ( Idade = = 5 ) num1 = 5; num2 = 6; num1> num2>5 7 Explicao Nessa expresso temos o resultado Falso, pois o operador lgico NO negou a expresso contida dentro do parnteses. O resultado dessa expresso Falso, pois o operador E exige que as duas condies sejam verdadeiras para o resultado ser Verdadeiro. Veja && que a primeira condio est indicando que o Nmero1 maior que 7, mas isso no verdadeiro, pois o valor do Nmero1 5, e 5 menor que 7. A segunda condio verdadeira, pois 6 maior que 5. O resultado dessa expresso Verdadeiro, pois o operador OU indica que apenas uma das condies precisa ser verdadeira para o resultado ser Verdadeiro. Observem a diferena do operador OU com o operador anterior E.

num1 5 num2 6 num1> 7 OU num2> 5

num1 = 5; num2 = 6; num1>7 || num2>5

4. Prioridade dos Operadores A prioridade de execuo pode ser diferente em algumas linguagens de programao Prioridade Operador 1 Parnteses 2 Aritmticos 3 Relacionais 4 LgicosExerccio: Descubra se as expresses abaixo so falsas ou verdadeiras: a) 5 + 6 = 10 b) 5 mod 2 = 2 c) 15 5 + 5 d) 33 > 3 OU carol = carolina e) 16 > 5 * 2 f) 20 < 2 g) 56 > 45 + 4 h) feijo = feijoada i) 56 < = 4 j) 70 > = 3 ** 2 k) 5 >= 5 E 4 = 5 l) 12 + 1 = 13 OU 4 + 2 = 7 m) 18 > 7 E 19 < 7 n) 90 = 3 OU 80 > 5

Prof Angelina V.S.Melar 57

Estrutura de Deciso /Condicional/ SeleoTodas as complexidades de um problema no podem ser passadas no computador baseadas apenas numa estrutura linear, pois esta estrutura no prev a possibilidade de desvios de instrues. Para o desenvolvimento de programas mais completos estudaremos a partir de agora uma nova estrutura, a de deciso. As condies, ou verificaes e testes esto presentes em quase todos os programas, devido grande flexibilidade e poder de ao que tais estruturas proporcionam. As decises so representadas pelas expresses relacionais/lgicas e Algoritmos (Descrio Narrativa) Estrutura Linear INCIO Pegar o doce Tirar da embalagem Comer o doce FIM essas podem ter dois resultados, a do Verdadeiro ou a do Falso. Conforme o resultado um dos caminhos deve ser executado, sendo obrigatrio existir o do verdadeiro, mas no o do falso. Na verdade a deciso uma condio ou expresso lgica que testada e verificada, podendo ser verdadeira ou falsa. Se depois de avaliada a condio e o resultado for verdadeiro, ento, os passos a serem executados so diferentes daquele em que se o resultado fosse falso. Existem diversas estruturas condicionais: simples, composta encadeada, mltipla escolha.

Estrutura Condicional INCIO Pegar o doce Tirar da embalagem SE o doce estiver estragado ento Jogar fora o doce SENO Comer o doce FIMINCIO

INCIO

PEGAR O DOCE

PEGAR O DOCE

TIRAR DA EMBALAGEM

TIRAR DA EMBALAGEM

COMER O DOCE

FFIM COMER O DOCE

EST ESTRAGADO?

VJOGAR FORA O DOCE

FIM

Prof Angelina V.S.Melar 58

No exemplo acima podemos ver facilmente a importncia da estrutura de deciso. Na primeira estrutura, a linear, existe apenas trs procedimentos e no h verificao das informaes. Na segunda estrutura foi possvel fazer a verificao de possveis falhas na seqncia de processos, onde, foi constatada a falta do procedimento que verificasse se o doce estava ou no estragado.

Exerccio ResolvidoElabore um programa que receba dois nmeros e no final mostre o maior nmero digitado. Entrada: Receber dois nmeros Processamento