Вы находитесь на странице: 1из 24

Notas de Aula Tcnicas de Programao I

1. CONCEITOS INICIAIS
Desde os primrdios, o homem vem tentando resolver seus problemas com maior rapidez e o menor esforo possveis, procurando automatizar as tarefas rotineiras. Isso possibilitou o aparecimento de instrumentos como a roda, roldana, alavanca, carro e at o computador. No entanto as tarefas que devem ser realizadas pelo computador, de forma automtica, tm de ser anteriormente pensadas e colocadas em uma seqncia de aes para, posteriormente, serem inseridas na mquina. A essa seqncia de aes denomina-se Programa e fase de formular solues que gerem programas denomina-se Lgica de Programao. Programar basicamente Construir Algoritmos. A meta principal de qualquer programador resolver problemas por meio de solues lgicas para obter resultados eficientes (corretos) e eficazes (com qualidade). Porm, se as solues no forem bem planejadas (passo a passo), com certeza essa meta no ser atingida. Antes de iniciarmos o estudo, vamos rever alguns conceitos bsicos: Software o conjunto dos programas que comandam o funcionamento do Hardware. Programas so feitos a partir de algoritmos, seqncias de instrues/comandos para se atingir um objetivo. Depois de pronto, o algoritmo convertido para uma linguagem de programao. O produto dessa converso um programa.

Programar um computador no uma tarefa to difcil. Difcil programar as nossas cabeas. O computador, na realidade, uma rplica bastante simplificada de nossa mente, com apenas uma diferena essencial: a AUTO-PROGRAMAO. Ao longo de nossas vidas, aprendemos coisas a partir de alguns elementos fundamentais como cores, smbolos, sons, cheiros, e sentimentos. Esses elementos vo se combinando atravs de um processo conhecido como aprendizado. O processo de aprendizado nada mais do que uma auto-programao de nossas mentes. Algum diz para nosso crebro o que ele tem que fazer ao se deparar com uma situao especfica, tal como: dobrar uma esquina, parar ao perceber o sinal vermelho, escovar os dentes ao acordar, em fim tudo o que fazemos regido por programas que, um dia, ns mesmos desenvolvemos. Se somos capazes de desenvolver programas para um aparelho to complexo e genial como o nosso crebro, por que no um simples computador?

1.1 O Software Voc j percebeu uma coisa: um sistema de computao constitui-se de duas partes, sendo uma fsica (circuitos) e uma lgica. Toda a parte lgica do sistema recebe um nome genrico: SOFTWARE. Fazem parte do Software: o programa, o sistema operacional, os dados, o compilador, o assembler, o interpretador etc. Existem trs tipos de software: bsico (do fabricante), utilitrios (de apoio) e aplicativos (do usurio). Software Bsico: o conjunto dos programas bsicos que o fabricante do computador desenvolve para utilizar toda a sua potencialidade. Exemplos tpicos so os sistemas operacionais e seus complementos, compiladores e interpretadores. Software Utilitrio: So programas desenvolvidos por empresas ou profissionais liberais especializados, para auxiliar na execuo de tarefas repetitivas e exaustivas.

3 Existe uma infinidade de utilitrios, mas podemos agrup-los em famlias de acordo com a rea de atuao: editores de texto, planilhas eletrnicas, bases de dados, geradores de grficos, simuladores, ferramentas operacionais e integrados. Software do usurio ou customizado: So programas dedicados para fins especficos. So desenvolvidos especialmente para empresas ou particulares que solicitem a um programador ou Software Houses. Cada programa aplicado para resolver um problema ou para realizar uma determinada tarefa e nada mais. No so adaptveis e geralmente so exclusivos de quem solicitou, devido s particularidades e que atendem. Podem ser: folhas de pagamentos, contabilidade, faturamento, controle de estoque, agenda, marcao de consultas, etc.

1.2 Programa A seqncia lgica de instrues que determina ao computador o que ele deve fazer chamada de PROGRAMA. No devemos confundir programa com dados: enquanto o programa define o modo de trabalho do computador, os dados so elementos que sero manipulados. O programa uma estrutura esttica com uma funo especfica. O ato de executar as instrues chama-se PROCESSO, que uma estrutura dinmica. PROGRAMA = seqncia de instrues PROCESSO = seqncias de aes

1.2.1 Estrutura de um programa De modo geral, um programa consiste numa seqncia de instrues que tratam um conjunto de dados com o objetivo de obter certos resultados de sada a partir de certos dados iniciais ou dados de entrada. Do ponto de vista de funcionalidade, um programa estruturado nas seguintes partes: Entrada de dados = Formada por todas as instrues que obtm os dados utilizados pelo programa de um dispositivo externo, armazenando-os na memria principal do computador. Aqui se incluem as instrues que fazem a depurao ou validao dos dados. Processamento = Conjunto de instrues que resolvem o problema a partir dos dados introduzidos, deixando os resultados na memria central. O dispositivo fsico carregado de efetuar essa tarefa recebe o nome de processador. Sada de resultado = constituda pelas instrues que fazem com que os dados resultantes do processo sejam enviados para fora atravs de algum dispositivo externo. 1.3 Linguagens de Programao No comeo para se controlar um computador era preciso muita tcnica na configurao de circuitos, pois o computador s compreende as instrues em binrio, e assim para se converter de forma eficaz a representao do pensamento humano era necessrio muito esforo e pacincia. S que, na busca da evoluo do processo, concebeu-se formas facilitadoras de se comunicar com as mquinas. Temos que uma linguagem de programao um conjunto de smbolos (comandos, identificadores, caracteres ASCII, etc.) e regras de sintaxe que permitem a construo de sentenas que descrevem de forma precisa aes compreensveis e executveis para o computador.

LINGUAGEM DE PROGRAMAO = SMBOLOS + REGRAS DE SINTAXE Uma linguagem de programao uma notao formal para descrio de algoritmos que sero executados por um computador. Como todas as notaes formais, uma linguagem de programao tem dois componentes: Sintaxe e Semntica. A sintaxe consiste em um conjunto de regras formais, que especificam a composio de programas a partir de letras, dgitos, e outros smbolos. Por exemplo, regras de sintaxe podem especificar que cada parntese aberto em uma expresso aritmtica deve corresponder a um parntese fechado, e que dois comandos quaisquer devem ser separados por um ponto-e-vrgula. As regras de semntica especificam o significado de qualquer programa, sintaticamente vlido, escrito na linguagem. 1.3.1 Tipos de Linguagens de Programao Existem diversas linguagens de programao, cada uma com suas caractersticas especficas e com nveis de complexidade e objetivos diferentes: a) Linguagem de Mquina: nica compreendida pelo computador. Especfica de cada computador. b) Linguagens de Baixo Nvel: Utilizam mnemnicos para representar instrues elementares Ex.: Assembly c) Linguagens de Alto Nvel: Utiliza instrues prximas da linguagem humana de forma a facilitar o raciocnio. Ex.: Delphi, Java, C, C++

1.4 O ambiente de programao O cdigo-fonte editado e armazenado em um arquivo, em C a extenso desse arquivo termina com a letra c minscula (ex: teste.c). Em seguida, o programador executa o comando para compilar o cdigo-fonte. O compilador traduz o programa C para linguagem de mquina (cdigo-objeto). Neste caso o arquivo possui a extenso .obj ou .o (ex: teste.obj). Em um sistema C, o pr-processador executado automaticamente antes do compilador. O pr-processador obedece comandos especiais chamados de diretivas do prprocessador, que indicam que manipulaes devem ser realizadas no programa antes da compilao, tais como a incluso de outros arquivos no cdigo-fonte a ser compilado e a substituio de textos. O C insere algumas diretivas de compilao (todas iniciam com #), indicando ao pr-processador algumas manipulaes a serem feitas para que comandos possam ser executados. A prxima fase chamada de link-edio (ou edio de ligaes). Programas em C tipicamente contm chamadas a funes definidas em outros locais, tais como as bibliotecas padres ou bibliotecas de um projeto particular. O cdigo-objeto produzido contm buracos devido a essas chamadas. O linker liga o cdigo-objeto com o cdigo dessas chamadas para produzir o cdigo executvel (sem buracos). No final temos um arquivo executvel (ex: teste.exe). Antes que um programa possa ser executado, ele deve ser colocado na memria principal. Esta tarefa realizada pelo loader que transfere o cdigo-executvel do disco para a memria. Finalmente, o computador, sob o controle da CPU, executa o programa, instruo por instruo. Para carregar e executar um programa, basta digitar o nome do cdigo-executvel e pressionar Enter, ou dar um duplo clique em cima do cone do cdigo executvel.

5 Qualquer problema computacional pode ser solucionado executando uma srie de aes em uma ordem especfica. Uma especificao para solucionar um problema em termos de aes a serem executadas e a ordem nas quais essas aes devem ser executadas denominada um algoritmo. Em outras palavras, um algoritmo uma seqncia ordenada e sem ambigidade de passos que levam soluo de um dado problema. Compilador: um programa interno do computador que traduz nosso programa escrito em linguagem de alto nvel (chamado programa-fonte, pois ele a origem do processo) para um programa equivalente escrito em linguagem de mquina (chamado de programa objeto). Interpretador: um programa residente de alguns computadores (neste caso j vem gravado de fbrica), tambm encontrado em disco. Transforma cada comando de um programa escrito em linguagem de alto nvel para o computador executar em linguagem de mquina. A diferena entre compilador e interpretador est na maneira de traduzir: - O compilador traduz o programa todo para depois executar apenas o traduzido, ento torna a execuo mais rpida. - O interpretador traduz e envia para execuo, instruo por instruo e o programa permanece na forma fonte.

2. Histria da Linguagem C
O C nasceu na dcada de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C derivado de uma outra linguagem: o B, criado por Ken Thompson. O B, por sua vez, veio da linguagem BCPL, inventada por Martin Richards. O C uma linguagem de programao genrica que utilizada para a criao de programas diversos como processadores de texto, planilhas eletrnicas, sistemas operacionais, programas de comunicao, programas para a automao industrial, gerenciadores de bancos de dados, programas de projeto assistido por computador, programas para a soluo de problemas da Engenharia, Fsica, Qumica e outras Cincias, etc. Como exemplos podemos citar os sistemas operacionais como o Windows, Unix, Linux, entre outros. Ela foi criada para ser to pequena quanto possvel, porm mesmo com seu conjunto de comandos reduzido extremamente flexvel e poderosa. O programador pode abusar dessa flexibilidade, criando programas desorganizados e de difcil compreenso. Sua sintaxe sucinta e no restringe as maneiras como um resultado pode ser alcanado, permitindo fazer o que quiser para obter esses mesmos resultados com a gerao mnima de cdigo e uso da memria, tornando a linguagem muito rpida mas tambm muito frgil. Essa fragilidade exposta no sentido que a linguagem C no faz a verificao de tipos, erros nos ndices de matrizes, nem verificao de erros com a utilizao de ponteiros, necessitando de um cuidado especial quanto a esses itens. A linguagem C possui essa caracterstica, de que o programador sabe exatamente o que quer e a maneira correta de instruir a linguagem. O C mescla estruturas de linguagem de alto nvel com o estilo de comandos de baixo nvel (muito similares ao Assembly). Sendo assim, possibilita a criao de aplicaes de forma extremamente rpida, possui programao de forma estruturada, cdigo enxuto, possibilidade de modularizao e de escrever cdigo quase de forma coloquial, muita velocidade no produto final e grande economia de memria. A Linguagem C, dada a sua simplicidade e flexibilidade, tornou-se ao longo do tempo uma das linguagens de programao mais usadas, sendo utilizada na criao e desenvolvimento de softwares e sistemas operacionais que se tornaram famosos em todo mundo, como por exemplo o Sistema Operacional Windows. Entretanto, a Linguagem C atinge

6 seus limites a partir do ponto em que os programas escritos na linguagem atingem um certo tamanho, entre 25.000 e 100.000 linhas, devido problemas de gerenciamento do cdigo. Para resolver este problema, em 1980, enquanto trabalhava nos laboratrios da Bell, em Murray Bill, New Jersey, Bjarne Stroustrup acrescentou vrias extenses linguagem C e chamou inicialmente esta nova linguagem de C com classes. Em 1983, o nome adotado para esta nova linguagem foi C++. Muitas modificaes foram feitas na Linguagem C++ para que ela pudesse suportar a programao orientada a objetos (POO). 2.1 Caractersticas da Linguagem C O C uma linguagem de alto nvel com uma sintaxe bastante estruturada e flexvel tornando sua programao bastante simplificada. Programas em C so compilados, gerando programas executveis. O C compartilha recursos tanto de alto quanto de baixo nvel, pois permite acesso e programao direta do microprocessador. Com isto, rotinas cuja dependncia do tempo crtica, podem ser facilmente implementadas usando instrues em Assembly. Por esta razo o C a linguagem preferida dos programadores de aplicativos. Embora estruturalmente simples (poucas funes intrnsecas) o C no perde funcionalidade pois permite a incluso de uma farta quantidade de rotinas do usurio. Os fabricantes de compiladores fornecem uma ampla variedade de rotinas prcompiladas em bibliotecas. O C uma linguagem estruturalmente simples e de grande portabilidade. O compilador C gera cdigos mais enxutos e velozes do que muitas outras linguagens. Portabilidade: entre mquinas e sistemas operacionais, ou seja, um cdigo escrito em linguagem C poder ser executado em diferentes mquinas independentemente da sua configurao fsica (hardware) e do sistema operacional residente. A linguagem C estruturada, com isso desencoraja a utilizao dos goto's desvios incondicionais -, que geram os chamados cdigos "macarronada". O "goto" substitudo por diversos tipos de laos e desvios, tais como: while, dowhile, for; if-then-else, switch, que permitem ao programador exercer um controle lgico mais eficaz sobre os cdigos fontes de seus programas. Cdigo compacto e rpido, quando comparado ao cdigo de outras linguagem de complexidade anloga. A linguagem C Case-Sensitive. importante saber que as letras maisculas e minsculas so tratadas como caracteres distintos. Por exemplo, em algumas linguagens, os nomes de variveis count, Count e COUNT so trs maneiras de se especificar a mesma varivel. Entretanto na linguagem C, sero trs variveis diferentes. Ento, quando voc digitar programas em C seja cuidadoso na utilizao correta das letras. Sendo assim, para criarmos um programa em C temos que prestar ateno no uso de maisculas e minsculas, pois elas fazem diferena. Se declarar uma varivel com o nome soma ela ser diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for, por exemplo, s podem ser escritos em minsculas pois seno o compilador no ir interpret-los como sendo comandos, mas sim como variveis. 2.2 Estrutura de um programa em C Um programa em C constitudo de: Um cabealho contendo as diretivas de compilador onde se definem o valor de constantes simblicas, declarao de variveis, incluso de bibliotecas, declarao de rotinas, etc. Um bloco de instrues principal e outros blocos de rotinas.

Documentao do programa: comentrios. So escritos entre os smbolos: /* */ Ex: /* Este e um exemplo de comentrio Programa exemplo desenvolvido em 10/10/2010 Alunos: X e Y Professora: Melissa Trabalho final */ Ou ainda podem ser utilizados para apenas uma linha atravs do smbolo // #include stdio.h void main{ // funo principal este um comentrio corpo do programa } Uso do Ponto-e-Vrgula: O ponto-e-vrgula usado para separar diferentes comandos dentro do seu cdigo em C. Durante o processo de compilao executado pelo compilador, o ponto-evrgula mostra ao compilador quando uma linha de comando termina e quando outra linha de comando se inicia. Ou seja, se voc esquecer do ponto-e-vrgula seu compilador ir acusar um erro pois ele no ir saber quando termina ou comea um determinado comando dentro do cdigo que voc digitou. 2.3 Palavras Reservadas Um programa fonte em C um texto no formatado escrito em um editor de textos usando um o conjunto padro de caracteres ASCII. A seguir esto os caracteres utilizados em C. Caracteres vlidos: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJ KLM NOPQRSTUVWXYZ 1234567890 + - */\= |&!?#%( ) { } []_ .,:< > Caracteres no vlidos: @$ Palavras-Chaves (reservadas) de C auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned for signed void continue default goto sizeof volatile do if static while

8 2.3 A utilizao de bibliotecas A linguagem C muito compacta. Muitas das funes que fazem parte de outras linguagens no esto diretamente includas na linguagem C. Temos como exemplo as operaes de entrada/sada, a manipulao de strings e certas operaes matemticas. A funcionalidade correspondente a estas e outras operaes no faz parte integrante da linguagem, mas est includa em uma biblioteca externa, bastante rica e standard. Todas essas operaes so executadas por via da chamada de funes externas definidas nessa biblioteca standard. Qualquer programador poder desenvolver a sua prpria biblioteca de funes, podendo at substituir algumas das funes standard, e tambm utilizar outras bibliotecas comerciais j existentes (ex. NAG, PHIGS, etc). 2.3.1 Diretivas de Compilao Em C, existem comandos que so processados durante a compilao do programa. Estes comandos so genericamente chamados de diretivas de compilao. Estes comandos informam ao compilador do C basicamente quais so as constantes simblicas usadas no programa e quais bibliotecas devem ser anexadas ao programa executvel. Eles podem conter vrias informaes, como declaraes de variveis, constantes, tipos definidos pelo usurio, funes teis para o uso nos programas, smbolos, macros e outras diretivas de incluso de arquivos. A diretiva #include diz ao compilador para incluir na compilao do programa outros arquivos. Geralmente estes arquivos contem bibliotecas de funes ou rotinas do usurio. A diretiva #define diz ao compilador quais so as constantes simblicas usadas no programa. Toda a diretiva, em C, comea com o smbolo # no incio da linha. A diretiva #include inclui o contedo de um outro arquivo dentro do programa atual, ou seja, a linha que contm a diretiva substituda pelo contedo do arquivo especificado. Sintaxe:

Ele serve para incluir alguns arquivos que contm declarao das funes da biblioteca padro, entre outras coisas. Estes arquivos, normalmente, possuem a extenso .h e se encontram em algum diretrio pr-definido pelo compilador. O .h significa um arquivo Header (cabealho). Sempre que o programa utilizar alguma funo da biblioteca-padro deve ser includo o arquivo correspondente. A tabela a seguir apresenta alguns dos principais .h da linguagem C: stdio.h - Funes de entrada e sada (I/O) string.h - Funes de tratamento de strings math.h - Funes matemticas ctype.h - Funes de teste e tratamento de caracteres stdlib.h - Funes de uso genrico A segunda forma, onde o nome do arquivo aparece entre aspas duplas, serve normalmente para incluir algum arquivo que tenha sido criado pelo prprio programador ou por terceiros e que se encontre no diretrio atual, ou seja, no mesmo diretrio do programa que est sendo compilado.

3. Variveis e Tipos de Dados


Programas servem essencialmente para manipular dados: fornecemos dados e esperamos que eles faam alguma coisa com eles. 3.1 Variveis Variveis so instncias onde o programa em execuo coloca os dados que esto sendo processados durante sua execuo. As variveis devem ser declaradas, ou seja, devem ser definidos nome, tipo e algumas vezes seu valor inicial.

As variveis so classificadas em variveis locais e globais. Variveis globais so aquelas declaradas fora do escopo das funes. Variveis locais so aquelas declaradas no incio de um bloco e seus escopos esto restritos aos blocos em que foram declaradas. A declarao de variveis locais deve obrigatoriamente ser a primeira parte de um bloco, ou seja, deve vir logo aps um caractere de abre chaves, '{'; e no deve ser intercalada com instrues ou comandos.

As Variveis so o aspecto fundamental de qualquer linguagem de computador. Uma varivel uma posio de memria, com um nome para referenciar o seu contedo, que usada para guardar um valor que pode ser modificado pelo programa. 3.1.1 Nomes de Variveis As variveis no C podem ter qualquer nome se duas condies forem satisfeitas: o nome deve comear com uma letra ou sublinhado _ e os caracteres subsequentes devem ser letras, nmeros ou sublinhado _. H apenas mais duas restries: o nome de uma varivel no pode ser igual a uma palavra reservada; nem igual ao nome de uma funo declarada pelo programador, ou pelas bibliotecas do C.

Variveis de at 32 caracteres so aceitas. Mais uma coisa: bom sempre lembrar que o C "case sensitive" e portanto deve-se prestar ateno s maisculas e minsculas. Dicas quanto aos nomes de variveis... uma prtica tradicional do C, usar letras minsculas para nomes de variveis. Isto facilita na hora da leitura do cdigo; Quando se escreve cdigo usando nomes de variveis em portugus, evita-se possveis conflitos com nomes de rotinas encontrados nas diversas bibliotecas, que so em sua maioria absoluta, palavras em ingls.

10 EXERCCIOS 1. Indique os nomes de variveis que so vlidos. Justifique os nomes invlidos. a) tempo b) nota_final c) us$ d) char e) 2dias f) teste 1 g) raio.do.circulo h) ModoOperaao i) ,Caderno j) Soma k) MeDidA l) variavelquearmazenaovalornumerico m) variavel_que_armazena_o_valor_numerico n) Per.feito o) Absoluto,e,magnfico p) _char_ q) _reservado r) UNSIGNED_ s) Single t) Master_Type

3.1.2 Tipos de Variveis

11 O uso importante de signed modificar char ou int nas implementaes em que esse tipo no tem sinal. Algumas implementaes podem permitir que unsigned seja aplicado aos tipos de ponto flutuante. EXERCCIOS 1. Que tipo de varivel se usa para guardar: a) 2000 b) 'a' c) -2.3 d) '2' e) Marcelo da Silva Gomes f) - 88.456 g) 6.78 h) - 98.33 i) Maria j) 1234 k) -33 l) 25

3.1.3 Declarao e Inicializao de Variveis As variveis no C devem ser declaradas antes de serem usadas. A forma geral da declarao de variveis : <tipo_da_varive> <nome da varivel>; Exemplos:

possvel declarar uma lista de variveis do mesmo tipo, apenas separando seus nomes vrgula. Por exemplo, as declaraes: char nome,endereco,matricula; int telefone,idade,ano; float pi,salario,media,nota_1; So duas variveis do tipo char (ch e letra), trs do tipo long int (count, aux e teste). Vale ressaltar aqui que o tipo default do C o int, portanto quando vamos declarar variveis int com algum dos modificadores de tipo, basta colocar o nome do modificador de tipo. Assim um long int basta para declarar um long. E ainda uma varivel do tipo float (pi).

12

4. Operadores
A linguagem C muito rica em operadores internos. Um operador um smbolo que diz ao compilador para realizar manipulaes matemticas e lgicas especficas. A linguagem C possui trs classes gerais de operadores: aritmticos, relacionais e lgicos e bit-a-bit. 4.1 Operador de atribuio O operador = atribui um valor ou resultado de uma expresso contida a sua direita para a varivel especificada a sua esquerda. Exemplos: a = 10; b = c * valor + a; a = b = c = 1; /*Aceita associao sucessiva de valores*/

4.2 Operadores Aritmticos So aqueles que operam sobre nmeros e expresses, resultando valores numricos. So eles:

Destes, apenas devemos salientar o uso de dois operadores, pois os demais funcionam conforme as regras bsicas da matemtica: Diviso ( / ): O operador de diviso informa o resultado inteiro apenas quando os dois operandos so inteiros. Ex: 7 / 2 -> 3, j 7.0 / 2 -> 3.5 Resto ( % ): Este operador s pode ser usado com operandos inteiros. Ex: 7 % 2 -> 1 e 7.0 % 2 -> erro!

4.3 Operadores Relacionais Operam sobre expresses, resultando valores lgicos de TRUE (verdadeiro) ou FALSE (falso). So eles:

13

4.4 Operadores Lgicos Operam sobre expresses, resultando valores lgicos de TRUE (verdadeiro) ou FALSE (falso). So eles:

Exemplos:

Uma expresso relacional ou lgica retornar falso para o valor lgico falso e verdadeiro para o valor lgico verdade. Fornecendo dois valores ou expresses lgicas, representadas por expresso1 e expresso2, podemos descrever as quatro operaes lgicas a seguir: expresso1 && expresso2 verdadeiro somente se ambas, expresso1 E expresso2, forem verdadeiras. Se uma for falsa, ou se ambas forem falsas, a operao E tambm ser falsa. expresso1 || expresso2 verdadeiro se tanto a expresso1 como a expresso2 forem verdadeiras. As operaes OU s resultam em valores falsos se ambas, expresso1 e expresso2, forem falsas.

14 4.5 Avaliando Expresses Expresses que apresentam apenas um nico operador podem ser avaliadas diretamente. No entanto, medida que as mesmas vo tornando-se mais complexas com o aparecimento de mais de um operando na mesma expresso, necessria a avaliao da mesma passo a passo, tomando um operador por vez. A seqncia destes passos definida de acordo com o formato geral da expresso, considerando-se a prioridade (precedncia) de avaliao de seus operadores e a existncia ou no de parnteses na mesma. As seguintes regras so essenciais para a correta avaliao de expresses: Deve-se observar a prioridade dos operadores, conforme mostrado nas tabelas de operadores: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relao precedncia, ento a avaliao se faz da esquerda para a direita. Os parnteses usado em expresses tem o poder de roubar prioridade dos demais operadores, forando a avaliao da subexpresso em seu interior. Entre os quatro grupos de operadores existentes, a saber, aritmtico, lgico, literal e relacional, h uma certa prioridade de avaliao: os aritmticos e literais devem ser avaliados primeiro; a seguir, so avaliadas as subexpresses com operadores relacionais e, por ltimo os operadores lgicos so avaliados.

EXERCCIOS PROPOSTOS 1. Qual o valor final das variveis v1 e v2 no final das operaes abaixo:

2. Quais as operaes necessrias para intercambiar os valores de 3 variveis a, b e c de modo que a fique com o valor de b; b fique com o valor de c e c fique com o valor de a? 3. Se X possui o valor 15 e foram executadas as seguintes instrues: X <- X + 3 X <- X - 6 X <- X / 2 X <- 3 *X Qual ser o valor armazenado em X?

15

5. Comandos de Entrada/Sada
5.1 A funo printf ( ) uma funo de E/S que no faz parte do padro de linguagem C, ela providenciada pelo compilador C pois todos os sistemas tem uma verso de printf ( ). Esta funo escreve na tela um texto entre aspas duplas. Pertence a uma biblioteca do compilador e deve ser linkeditada em nossos programas. Funo uma coleo de comandos identificada por nome. Utilizar o nome de uma funo em um comando chamar a funo e executar suas instrues; ou seja, os parnteses em printf ( ) indicam que estamos utilizando uma funo e no interior desses parnteses esto as informaes passadas pelo programa main ( ) funo printf(). Esta informao chamada de argumento de printf ( ). O controle, ento, passado para a funo printf que imprimir na tela do monitor de vdeo, e quando encerra a execuo desta, o controle transferido novamente para o programa. A sintaxe para a funo printf ( ) :

A expresso de controle pode conter caracteres que sero, por sua vez, demonstrados na tela do computador e comandos de formato ( cdigos de formatao ) que indicam a forma em que os argumentos devem ser impressos. A funo printf( ) pode ter um nico ou vrios argumentos. Obs: Os argumentos so separados por vrgula ( , ). Exemplo: /* primeiro exemplo */ main( ) { printf(O resultado do jogo foi %d x %d,2,0); } Na primeira linha do programa temos um comentrio sugerindo um ttulo ou nome do programa. Todo comentrio fica a critrio do programador, sendo assim no obrigatrio o uso deste. A funo main( ) a seguir inicia a parte executvel. A chave de abertura utilizada para que o compilador possa ler as instrues. Em seguida a funo printf( ) passa a ter o controle. O texto a ser impresso est compreendido entre aspas duplas e o cdigo de formatao %d indica que ser impresso um nmero decimal. Este nmero decimal o 2 que se encontra na lista de argumentos. A linha de instruo finalizada por um ponto-vrgula ; fato este fundamental para concluir uma linha de instruo. A chave de fechamento encerra o corpo do programa e o texto impresso no monitor de vdeo ser: O resultado do jogo foi 2 x 0. Obs: Como a barra invertida \ tem uso especial na linguagem C, devemos associar duas barras invertidas \\ para representar uma. void main ( ) { printf (\n\tisto um teste.); }

16 O programa acima pula uma linha (\n), posiciona o cursor na prxima coluna de tabulao (\t). Faa o teste voc mesmo. 5.2 Cdigos de impresso formatada A tabela abaixo mostra os cdigos para impresso formatada de texto.

OBS: Quando deseja-se imprimir um nmero com casas decimais , utilizamos o comando de formato %f. Exemplo: Desejamos imprimir apenas com 3 casas decimais o nmero 87,3466798. Ento digitamos: printf (O nmero %.3f, 87.3466798); A sada ser: 87.347 O computador arredonda o nmero! Exemplo: O nmero 156,55479832 pode ser arredondado para: ................. 156,5547983 ou ................. 156,554798 ou ................. 156,55480 ou ................. 156,5549 ou ................. 156,555 ou ................. 156,6 ou ................. 157

5.3 Funo system( ) A funo system executa um comando do sistema. Ela muito utilizada em comandos de limpeza de tela, por exemplo: system("cls"); O comando mais usado por ns ser o system(pause);

5.4 Funo scanf( ) A funo scanf() permite que os dados sejam lidos do teclado e armazenados em uma varivel. O prottipo para scanf( ) est em stdio.h, e sua sintaxe :

17

A expresso de controle contm especificadores de formato de entrada que so precedidos por um sinal de % (porcentagem) e informam scanf() o tipo de dado a ser lido na ordem da esquerda para a direita, com os argumentos da lista. Exemplos: int idade; char sexo; ... scanf(%d, &idade); scanf(c, &sexo);

Exerccios 1. Durante o carnaval um hotel da cidade teve sua lotao mxima atingida, ou seja, todos os 345 quartos ficaram ocupados. Sabendo que o hotel tem os seguintes tipos de quartos: 150 quatos do tipo standart, 145 quartos do tipo luxo e 50 quartos do tipo super-luxo. Faa um programa que leia o valor da diria de cada um dos quartos e no final informe quanto o hotel lucrou no feriado de carnaval (feriado de carnaval de sbado a tera-feira). 2. O consumidor deseja calcular quanto ir gastar na compra de supermercado da semana. Sabendo que ele ir comprar os produtos da cesta bsica, faa um programa que pergunte a quantidade (em Kg) e o valor do produto. No final o programa deve apresentar a conta ao consumidor. Caso ele no queria algum dos produtos da lista, basta digitar 0 (zero) na quantidade. Os itens da cesta bsica so: carne, leite, feijo, arroz, farinha, batata, tomate, po, caf, banana, acar, leo e manteiga. 3. Joo est querendo trocar de automvel e para isso foi a uma concessionria avaliar as possibilidades. Para ajudar Joo na escolha, faa um programa que leia o preo do automvel, o valor da entrada que Joo pretende dar, a taxa de juros (iremos considerar juros simples mensal) e em quantas parcelas ele deseja pagar. No final o programa deve apresentar o valor da parcela a ser paga. 4. Uma empresa de compras coletivas ganha 20% sobre o total de vendas de determinado anncio. Faa um programa que leia qual o valor do produto anunciado e quantas pessoas compraram o anncio. O programa deve informar o total de vendas, qual o valor que o anunciante ir receber e quanto sobrou para a empresa de compras coletivas. 5. Uma empresa tem para um determinado funcionrio uma ficha contendo a matrcula, nmero de horas trabalhadas e o n de dependentes de um funcionrio. Considerando que: a) A empresa paga 16,90 reais por hora e 150 reais por dependentes. b) Sobre o salrio so feito descontos de 8,5% para o INSS e 5% para IR. Faa um programa para ler a matrcula, nmero de horas trabalhadas e nmero de dependentes de um funcionrio. Aps a leitura, escreva O funcionrio de matrcula ???, possui os seguintes dados: - salrio bruto, os valores descontados para cada tipo de imposto e finalmente qual o salrio lquido do funcionrio.

18

6. Estrutura Condicional
6.1 A Declarao If A declarao if usada quando necessrio testar em um programa duas ou mais condies. Isto permite ao programador o desenvolvimento de programas complexos. A forma geral da declarao if : if (condio) { comandos; } else { comandos; } A clusula else opcional. Se condio for verdadeira (qualquer coisa diferente de 0), o bloco que forma o destino de if ser executado; caso contrrio o bloco que forma o destino de else ser executado (desde que exista else). Lembre-se que somente o cdigo associado a if ou o cdigo associado a else ser executado, nunca os dois. O destino dos dois, if e else, pode ser um comando simples ou um bloco de comandos. Ex: Faa um programa que leia a idade de um nadador e o classifique entre as categorias abaixo: Categoria Idade Infantil A 5 - 7 anos Infantil B 8 - 10 anos Juvenil A 11- 13 anos Juvenil B 14- 17 anos Snior maiores de 18 anos Obs: S pode ser usado o comando if.

6.2 Usando a Declarao Else possvel associar um else com qualquer if. Com esta declarao podemos acrescentar ao testecondicional vrias opes de escolha. Se a expresso condicional associada a if verdadeira, a instruo ou bloco de instrues associada ser executada. Se for falsa, ento a instruo ou bloco de instrues do else ser executada.

6.3 O Encadeamento If-Else-If Uma construo comum em programao o encadeamento if-else-if. O seguinte exemplo ilustra esta construo:

19 if (condio) { comandos; } else if (condio) { comandos; } else if (condio) { comandos; } else { comandos; } As expresses condicionais sero avaliadas de cima para baixo. Assim que uma condio verdadeira encontrada, o bloco associado a ela ser executado, e o resto do encadeamento ignorado. Se nenhuma das condies for verdadeira, ento o else final ser executado. Se o else final no estiver presente e todas as outras condies forem falsas, ento nenhuma ao ser realizada. Pode-se usar o encadeamento if-else-if para implementar o programa de converso de base numrica desenvolvido anteriormente. Na verso original, cada declarao if era avaliada sucessivamente, mesmo se uma das declaraes anteriores tivesse xito. Ainda que no haja grande significado neste caso, a avaliao redundante de todos os ifs no muito eficiente ou elegante. O seguinte programa resolve este problema. Nessa verso de encadeamento if-elseif, to logo uma declarao if satisfeita, o resto das declaraes ignorado. 6.4 Ifs Aninhados Um dos muitos aspectos que causam confuso na declarao if, em qualquer linguagem de programao, so os ifs aninhados. Um if aninhado uma declarao if que objeto de um if ou um else. Os ifs aninhados so incmodos por poderem dificultar saber qual else est associado a qual if. Considere este exemplo: if (x) if (y) printf (1); else printf (2); Em C, o else ligado ao if mais prximo dentro do mesmo bloco de cdigo que j no tenha uma declarao else associada a ele. Neste caso o else associado declarao if(y). Para fazer com que else seja associado declarao if(x), deve-se usar chaves para sobrepor a sua associao normal, como mostrado aqui: if (x) { if (y) printf (1); } else printf (2); O else agora est associado ao if(x), j que ele no parte do bloco de cdigo do if(y).

20 EXERCCIOS DE FIXAO
1. Faa um Programa que receba quatro notas de um aluno, calcule e imprima a mdia aritmtica das notas e a mensagem de aprovado para mdia superior ou igual a 7.0 ou a mensagem de reprovado para mdia inferior a 7.0. 2. Uma empresa decidiu dar uma gratificao de Natal aos seus funcionrios, baseada no nmero de horas extras e no nmero de horas que o funcionrio faltou ao trabalho. O valor do prmio obtido pela consulta na tabela a seguir, em que: H = (Nmero de horas extras) - (2/3 * (Nmeros de horasfalta)) H (minutos) Prmio ($) > 2400 1000 1801 at 2400 800 1201 at 1800 500 600 at 1200 200 <= 600 50 Faa um Programa que receba o nmero de horas extras e o nmero de horas-falta em minutos de um funcionrio. Imprima o nmero de horas extras em horas, o nmero de horas-falta em horas e o valor do prmio. 3. Uma empresa vende 3 marcas de notebooks: Acer, HP e Sony. Faa um programa que leia o preo individual e a quantidade vendida de cada uma das marcas no dia de hoje. No final o programa deve informar qual dos produtos trouxe mais lucro. 4. Uma companhia de seguros tem trs categorias de seguros baseadas na idade e ocupao do segurado. Somente pessoas com pelo menos 18 anos e no mais de 70 anos podem adquirir aplices de seguros. Quanto s Programas de ocupaes foram definidos trs grupos de risco. A tabela a seguir fornece as categorias em funo da faixa de idade e do grupo de risco: Idade Grupo de Risco 18 a 24 Baixo 25 a 40 Mdio 41a70 Alto Para o grupo de risco baixo, o valor do seguro o normal. Para o grupo de risco mdio, o valor do seguro acrescentado de 5%, e para o grupo de risco alto o valor tem um acrscimo de 10%.O valor do seguro calculado considerando 8% do valor total do bem (mais o acrscimo conforme o risco).Faa uma Programa que receba a idade do segurado e o valor do patrimnio a ser assegurado. O programa deve imprimir a idade do segurado, o grupo de risco ao qual ele faz parte e o valor final do seguro.

21

6. Estruturas de Repetio
6.1 O Lao de repetio for for a primeira de uma srie de trs estruturas para se trabalhar com loops de repetio. As outras so while e do. As trs compem a segunda famlia de comandos de controle de fluxo. Podemos pensar nesta famlia como sendo a das estruturas de repetio controlada. O loop for usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop. Sua forma geral : for (inicializao; condio; incremento) { <comandos>; } O for executa a inicializao incondicionalmente e testa a condio. Se a condio for falsa ele no faz mais nada. Se a condio for verdadeira ele executa os comandos, faz o incremento e volta a testar a condio. Ele fica repetindo estas operaes at que a condio seja falsa. Um ponto importante que podemos omitir qualquer um dos elementos do for, isto , se no quisermos uma inicializao poderemos omiti-la. Abaixo vemos um programa que coloca os primeiros 100 nmeros inteiros na tela: #include <stdio.h> void main(){ int count; for (count=1; count<=100; count++){ printf ("%d ",count); } system(pause); } OBS: Os operadores de incremento e decremento so unrios que alteram a varivel sobre a qual esto aplicados. O que eles fazem incrementar ou decrementar, a varivel sobre a qual esto aplicados, de 1. Ento x++; e x--; so equivalentes a x=x+1; e x=x-1; Estes operadores podem ser pr-fixados ou ps-fixados. A diferena que quando so pr-fixados eles incrementam e retornam o valor da varivel j incrementada. Quando so ps-fixados eles retornam o valor da varivel sem o incremento e depois incrementam a varivel. Ento, em: x=23; y=x++; teremos, no final, y=23 e x=24. Em x=23; y=++x; teremos, no final, y=24 e x=24.

22 Uma curiosidade: a linguagem de programao C++ tem este nome pois ela seria um "incremento" da linguagem C padro. A linguagem C++ igual linguagem C s que com extenses que permitem a programao orientada a objeto, o que um recurso extra. Exerccio: Faa um programa que receba a mdia final de 20 alunos e calcule a mdia geral da turma.

6.2 O Lao de repetio while O comando while tem a seguinte forma geral: while (condio) { <comandos>; } A estrutura while testa uma condio, se esta for verdadeira os comandos so executados. Ao final, faz-se o teste novamente, e assim por diante enquanto a condio for verdadeira. Assim como no caso do for, podemos fazer um loop infinito. Para tanto basta colocar uma expresso eternamente verdadeira na condio. Pode-se tambm omitir a declarao e fazer um loop sem contedo. Vamos ver um exemplo do uso do while. O programa abaixo executado enquanto i for menor que 100. Veja que ele seria implementado mais naturalmente com um for. #include <stdio.h> void main(){ int i = 0; while ( i < 100) { printf("%d",&i); i++; } system(pause); } O programa abaixo espera o usurio digitar a tecla 'q' e s depois finaliza: #include <stdio.h> void main(){ char Ch; Ch='\0'; while (Ch!='q') { scanf("%c", &Ch); } system(pause); } Exerccio: Refaa o exemplo n 1 (lao for) utilizando o lao while.

23 6.3 O Lao de repetio do-while A terceira estrutura de repetio que veremos o do-while de forma geral: do { <comandos>; } while (condio);

OBS: O ponto-e- vrgula final obrigatrio. A estrutura do-while executa os comandos pelo menos uma vez, depois ir testar a condio e, se esta for verdadeira, volta para a declarao. A grande novidade no comando do-while que ele, ao contrrio do for e do while, garante que os comandos sejam executados pelo menos uma vez. Um dos usos da estrutura do-while em menus, nos quais voc quer garantir que o valor digitado pelo usurio seja vlido, conforme apresentado abaixo: #include <stdio.h> void main(){ int i; do{ printf ("\n\nEscolha a fruta pelo numero:\n\n"); printf ("\t(1)...Mamao\n"); printf ("\t(2)...Abacaxi\n"); printf ("\t(3)...Laranja\n\n"); scanf("%d", &i); }while((i<1)||(i>3)); if (i == 1){ printf ("\t\tVoce escolheu Mamao.\n"); }else if (i == 2){ printf ("\t\tVoce escolheu Abacaxi.\n"); }else { printf ("\t\tVoce escolheu Laranja.\n"); } system(pause); } Exerccio: Refaa o exemplo n 1 (lao for) utilizando o lao do-while.

Exerccios prticos
1. Um corretor de imveis ganha 4% de comisso sobre o preo de imvel vendido. Durante os meses de maro e abril ele vendeu 15 imveis. Faa um programa que leia o preo de cada imvel e no final informe o total de comisso do corretor. 2. Crie um programa que leia as idades de n pessoas at que seja digitado a idade 0, a seguir calcule a porcentagem de adolescentes (idades entre 11 e 17 anos), porcentagem de crianas (menores de 10 anos), porcentagem de adultos (entre 18 e 60 anos) e porcentagem de idosos (acima de 60 anos). 3. Um consumidor efetuou a compra de 10 produtos. Dada a quantidade adquirida de cada produto e o preo unitrio, faa um programa que calcule e escreva o total (total = quantidade adquirida x preo unitrio), o desconto e o total a pagar (total a pagar = total - desconto), sabendo-se que:

24
se quantidade <= 5 o desconto ser de 5% se quantidade > 5 e quantidade <=10 o desconto ser de 10% se quantidade > 10 o desconto ser de 15% No final o programa ainda deve apresentar o valor total da compra efetuada pelo consumidor. 4. Dez times foram para a ltima rodada da copa florianpolis de juniores. Destes, seis ficaram empatados em primeiro lugar e o desempate ser por saldo de gols. Faa um programa que leia o saldo de gols de cada time e informe qual foi o campeo. OBS: deve ser usado lao de repetio. 5. Foi aberta 1 vaga para Eletroeletrnica em um concurso pblico. Se inscreveram 411 candidatos, porm pode ocorrer de nem todos terem comparecido na prova. O concurso possui 2 provas: Uma escrita (de conhecimentos gerais) e uma prova de ttulos. As duas provas valem 10 pontos, porm a prova escrita tem peso 9 e a prova de ttulos tem peso 1. O candidato com maior nota final (somando a nota da prova escrita e da prova de ttulos) ocupar a vaga. Faa um programa que leia o cdigo de inscrio do candidato e as notas das provas. O programa deve informar qual o candidato que conseguiu a vaga. OBS: lembre-se que podem haver desistentes e que as notas das provas no podem ser superior a 10.