Professional Documents
Culture Documents
Antes de iniciar o estudo da linguagem C propriamente dita, faz-se necessrio lembrar os conceitos bsicos da programao de sistemas. Podemos dizer que programao, consiste na traduo do pensamento lgico necessrio para o cumprimento de uma determinada tarefa, em uma seqncia de comandos que podem ser interpretados e executados por uma mquina. A tarefa de programao constitui-se basicamente num processo de identificao e soluo de problemas. Para chegar ao programa propriamente dito necessrio passar pelos seguintes procedimentos: a) Exposio do problema: necessrio descrever detalhadamente o problema a ser resolvido pelo programa; b) Anlise da soluo: deve-se elaborar a ou as solues que melhor resolvem o problema em questo. c) Codificao da soluo: tendo-se idia da soluo do problema necessrio a descrio seqencial passo a passo da soluo que melhor resolve o problema. d) Traduo do cdigo: basta agora de posse do algoritmo traduzir essa seqncia em comandos que possam ser corretamente interpretados pela linguagem de programao utilizada; e) Depurao: o processo de verificao e teste do programa deforma a localizar e solucionar todas as eventuais falhas e erros de codificao que tenham acontecido em quaisquer fases anteriores.
Algoritmos
O Algoritmo trata-se de um conjunto lgico e finito de aes ( instrues ) que resolvem um determinado problema. Antes de utilizarmos uma linguagem de computador, necessrio organizar as aes a serem tomadas pela mquina de forma organizada e lgica, sem nos atermos s regras rgidas da Sintaxe de uma linguagem.
Fluxogramas
So as representaes grficas de um algoritmo atravs do uso de smbolos preestabelecidos. Assim sendo Fluxogramas so elementos grficos utilizados para estabelecer a seqncia de operaes necessrias para o cumprimento de determinada tarefa e, conseqentemente, a resoluo de um problema.
-1-
-1-
Introduo Linguagem C
A seguir, veremos alguns elementos a serem utilizados na construo de fluxogramas. Inicio ou terminao: utilizado para representar o inicio ou trmino do programa ou algoritmo. Processo ou Ao: este smbolo utilizado para descrever a realizao de uma determinada tarefa. Entrada de dados manual: este smbolo utilizado para descrever a entrada de dados via teclado(digitao). Tomada de deciso: este smbolo utilizado para representar um ponto de tomada de deciso, ou teste condicional. A tomada de deciso levar a um resultado verdadeiro ou falso. Em um dos casos o fluxo desviado, e no outro o programa seguira seu fluxo normal. Sada de dados no vdeo (exibir): este smbolo utilizado para descrever a exibio de uma mensagem na tela do microcomputador.
Conector: normalmente utilizado para indicar a descontinuidade na representao do fluxo(onde segue o fluxograma). Entrada e sada de dados: este smbolo utilizado para descrever a Entrada e sada de dados em geral.
-2-
Introduo Linguagem C
Vejamos um exemplo do fluxograma de um programa para a soluo de um problema simples: somar dois nmeros (A e B ) e armazenar o resultado em C.
Exerccios de fluxogramas
1. Desenvolva o fluxograma de um programa que leia duas notas digitadas, calcule a mdia aritmtica delas e apresente o resultado.
2. Desenvolva o fluxograma de um programa que leia duas notas digitadas, que somente aceite notas at cem, calcule a mdia aritmtica delas e apresente o resultado. 3. Desenvolva o fluxograma de um programa que leia duas notas digitadas, calcule a mdia aritmtica delas e apresente o resultado, junto com a classificao do aluno de aprovado,reprovado ou em recuperao. Mdia 70 ou acima = aprovado Mdia inferior a 50 = reprovado Mdia entre 50 a 69 = em recuperao
-3-
Introduo Linguagem C
1. Introduo
A linguagem C uma linguagem de alto nvel, genrica. Foi desenvolvida por programadores para programadores tendo como meta caractersticas de flexibilidade e portabilidade. O C uma linguagem que nasceu juntamente com o advento da teoria de linguagem estruturada e do computador pessoal. Assim tornou-se rapidamente uma linguagem popular entre os programadores. O C foi usado para desenvolver o sistema operacional UNIX, e hoje esta sendo usada para desenvolver novas linguagens, entre elas a linguagem C++ e Java. 1.1 Caractersticas do 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. O C uma linguagem estruturalmente simples e de grande portabilidade. O compilador C gera cdigos mais enxutos e velozes do que muitas outras linguagens. 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.
1.1.2 Histrico 1970: Denis Ritchie desenha uma linguagem a partir do BCPL nos laboratrios da Bell Telephones, Inc. Chama a linguagem de B. 1978: Brian Kerningham junta-se a Ritchie para aprimorar a linguagem. A nova verso chama-se C. Pelas suas caractersticas de portabilidade e estruturao j se torna popular entre os programadores. ~1980: A linguagem padronizada pelo American National Standard Institute: surge o ANSI C. ~1990: A Borland International Co, fabricante de compiladores profissionais escolhe o C e o Pascal como linguagens de trabalho para o seu Integrated Development Enviroment (Ambiente Integrado de Desenvolvimento): surge o Turbo C. ~1992: O C se torna ponto de concordncia entre tericos do desenvolvimento da teoria de Object Oriented Programming (programao orientada a objetos): surge o C++.
-4-
Introduo Linguagem C
Um programa em linguagem C formado por uma ou mais funes. Cada funo um bloco de cdigo delimitado que deve ter um nome e executa um conjunto de operaes. Uma funo denominada main obrigatria em todos os programas, pois o seu ponto de entrada, isto , o programa comea a ser executado no incio da funo main e termina ao final desta funo. Normalmente a funo main inicia com a declarao int main(void) e tem seu corpo delimitado por um par de chaves { }.Ao concluir a funo main, com o comando return, a execuo do programa finalizada, sendo que pelo padro ANSI, esta funo deve retornar 0 (zero) se o programa foi finalizado com sucesso, ou um valor maior que zero caso ele tenha sido finalizado por uma situao de erro. Alm da funo main, o programa pode possuir outras funes, como ser visto adiante, sendo que estas devem ser, direta ou indiretamente, chamadas pela funo main. Na codificao de um programa, deve-se observar que o compilador C diferencia letras maisculas de minsculas, portanto TESTE diferente de teste, que por sua vez diferente de Teste. Todas as palavras reservadas da linguagem devem ser digitadas em letra minscula. /* prog01.c Exemplo de programa em C */ #include <stdio.h> int main(void) { printf("Programa C muito simples\n"); getchar(); /* Aguarda pressionar Enter */ return(0); }
-5-
Introduo Linguagem C
Exemplo: #include<stdio.h>
Ela 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. 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 do C:
Funes de entrada e sada (I/O) Funes de tratamento de strings Funes matemticas Funes de uso genrico Funes de teste e tratamento de caracteres
1.2.3. Comentrios
Os comentrios servem principalmente para documentao do programa e so ignorados pelo compilador, portanto no iro afetar o programa executvel gerado. Os comentrios iniciam com o smbolo /* e se estendem at aparecer o smbolo */. Um comentrio pode aparecer em qualquer lugar no programa onde possa aparecer um espao em branco e pode se estender por mais de uma linha.
-6-
Introduo Linguagem C
Exemplo:
int main( ) { bloco de instrues return(0); }
-7-
Introduo Linguagem C
Exemplo: int i; int x,y,z; char letra; float nota1,nota2,media; double num;
No exemplo acima, i, x, y e z foram declaradas variveis inteiras. Assim elas podem armazenar valores inteiros de -32768 at 32767. Do mesmo modo letra foi declarada como varivel caractere podendo receber valores de -128 at 127 ou caracteres do conjunto padro ASCII. As variveis nota_1, nota_2 e media foram declaradas como ponto flutuante tipo float e num como ponto flutuante tipo double. A declarao de variveis feita, em geral, dentro de uma rotina. Por exemplo, a rotina principal main(). Deste modo se diz que est se fazendo uma declarao de variveis locais. Variveis locais podem ser referenciadas apenas dentro da rotina dentro da qual foi declarada, neste caso a rotina main(). Exemplo: Observe o uso da declarao de variveis no trecho de programa abaixo: #include<stdio.h> void main( ) { float raio, rea; raio = 2.5; rea = 3.14 * raio * raio; } // declarao de variveis
-8-
Introduo Linguagem C
No exemplo anterior, as variveis rea e raio foram declaradas como variveis locais tipo float. Assim o processador faz a alocao de dois espaos (endereos) de 4 bytes cada para armazenar as informaes, um para cada varivel. Na terceira linha, o processador coloca no endereo alocado para raio o valor 2.5. Depois, na quarta linha, o processador coloca o resultado da conta (19.625) no endereo de rea. possvel fazer a declarao de variveis fora de uma rotina. Neste caso diz-se que se fez a declarao de variveis globais. Obs.: Neste ltimo exemplo a funo principal no retorna valor em seu final, assim sendo declara-se void main( ) (no vai return no final).
-9-
Introduo Linguagem C
2.Trabalhando no Turbo C
Abaixo so citados os passos seqncias para trabalhar no Turbo C, passos estes que devem ser seguidos cada vez que voc for utilizar o laboratrio de linguagem C.
1.
Ao entrar no ambiente de edio de programas fazer a indicao dos diretrios de trabalho para o compilador. Acessar o comando Options opo Diretories.
2.
Direcionar o diretrio de trabalho para dentro de sua pasta(no caminho especificado). Comando File opo Change diretory
- 10 -
Introduo Linguagem C
3.
Aps estar no ambiente de edio(entrando pelo cone na rea de trabalho), acessar o comando File e a opo New.( para editar um novo programa)
4.
Salvar o programa nomeando-o. Atravs do comando File opo Save as .Por exemplo : C:\TC\PRG\411\PRG1.C . (O programa a ser digitado assumir o nome de PRG1.C.) No esquecer de salvar seguidamente enquanto edita.
5.
Ao final da edio do programa deve-se compilar o mesmo. Comando Compile opo Compile . caso exista erro de edio sero apontados pelo compilador.
- 11 -
Introduo Linguagem C
6. Ao final da compilao caso no haja erro algum o programa poder ser executado. Comando Run opo Run
7.
Feito isto basta alternar da janela de edio para o ambiente DOS para verificar o efeito do programa na tela do monitor. Comando File opo Dos shell.
- 12 -
Introduo Linguagem C
As principais funes para entrada e sada (leitura e escrita) de valores, em C, esto definida em < stdio.h >.O nome deste arquivo originou-se do termo ingls "standard input/output", que significa "entrada e sada padro".
- 13 -
Introduo Linguagem C
- 14 -
Introduo Linguagem C
Formato
%d %f % lf %c %s int float double Um caractere Uma string..
Tipo
As variveis que sero lidas devem ser precedidas do smbolo &, exceto para strings. Qualquer caractere inserido na string de formato que no um especificador considerado separador, isto , delimita o contedo que ser atribudo a cada uma das variveis lida. Exemplo: #include <stdio.h> int main( ){ int dia, mes, ano; float temp, far; printf("Informe a temperatura (Celsius): "); scanf("%f", &temp); printf("Informe a data (dd/mm/aaaa): "); scanf("%d/%d/%d", &dia, &mes, &ano); far=(9.0 / 5.0 * temp + 32.0); printf("Em %02d/%02d/%04d a temperatura foi %.1f (fahrenheit)\n", dia, mes, ano, far); fflush(stdin); getchar(); return(0); }
Exerccio de aplicao:
Desenvolva o fluxograma e a codificao de um programa que leia dois nmeros digitados, calcule a soma deles e apresente o resultado na tela.
- 15 -
Introduo Linguagem C
4. Estruturas de Controle
Estruturas de controle permitem controlar a seqncia das aes lgicas de um programa. Basicamente, existem dois tipos de estruturas de controle: estruturas de repetio e estruturas de deciso. A estrutura de repetio permite que um bloco de instrues seja executado repetidamente uma quantidade controlada de vezes. A estrutura de deciso permite executar um entre dois ou mais blocos de instrues. Neste captulo estudaremos em detalhe as instrues do C que permitem implementar estas estruturas.
4.1.Condio de controle
Em todas as estruturas, existe pelo menos uma expresso que faz o controle de qual bloco de instrues ser executado ou quantas vezes ele ser executado: o que chamamos de condio de controle. Uma condio de controle uma expresso lgica ou aritmtica cujo resultado pode ser considerado verdadeiro ou falso. A Linguagem C no possui, entretanto, variveis ou constantes lgicas, possui somente expresses numricas, assim quando uma expresso numrica se encontra em uma condio de controle, ela ser considerada falsa se seu valor for igual a zero, e verdadeira se seu valor for diferente de zero. Exemplo: Observe nas condies abaixo, seu valor numrico e seu significado lgico. Considere as variveis int i = 0, j = 3; condio valor numrico significado lgico (i == 0) 1 verdadeiro (i > j) 0 falso (i) 0 falso (j) 3 verdadeiro
- 16 -
Introduo Linguagem C
condio
bloco
Figura 5.1: Fluxograma da estrutura de deciso if... Sintaxe: Deciso com um bloco: if(condio){ bloco } bloco um conjunto de instrues. Se a condio verdadeira, o bloco executado. Caso contrrio, o bloco no executado. Exemplo: No trecho abaixo, se o valor lido for maior que 10, ento o seu valor redefinido como 10. Observe que o bloco constitui-se de um nica instruo. onde: condio uma expresso lgica ou numrica.
printf("Digite o nmero de repeties: (mximo 10)"; scanf("%d",&iten); if(iten > 10){ iten = 10;}
Este fato deve ficar claro pois, nas estruturas que estudaremos, quando for dito que uma condio falsa ou verdadeira quer se dizer que seu valor e igual a zero ou diferente de zero.
- 17 -
Introduo Linguagem C
Exerccio de aplicao:
Desenvolva o fluxograma e a codificao de um programa que leia dois nmeros digitados, somente aceite nmeros positivos, calcule a soma deles e apresente o resultado na tela.
- 18 -
Introduo Linguagem C
Significado maior que menor que maior ou igual a (no menor que) menor ou igual a (no maior que) igual a no igual a (diferente de)
Sintaxe: A sintaxe das expresses lgicas : expresso_1 operador expresso_2 onde expresso_1 e expresso_2 so duas expresses numricas quaisquer, e operador um dos operadores relacionais. Exemplo: If (DADO<= 25) goto ent1:
Desenvolva o fluxograma e a codificao de um programa que leia duas notas digitadas, calcule a mdia aritmtica delas e apresente o resultado, junto com a classificao do aluno de aprovado,reprovado ou em recuperao. Mdia igual ou acima de 70 = aprovado Mdia inferior a 50 = reprovado Mdia entre 50 a 70 = em recuperao
- 19 -
Introduo Linguagem C
condio?
bloco 1
bloco 2
Fluxograma da estrutura de deciso if...else Sintaxe: Deciso de dois blocos: if(condio){ bloco 1;} else{ bloco 2;} onde: condio uma expresso lgica ou numrica. bloco 1 e bloco 2 so conjuntos de instrues. Se a condio for verdadeira o bloco 1 executado. Caso contrrio, o bloco 2 executado. Exemplo: No trecho abaixo, se o valor de raiz*raiz for maior que num o valor de raiz ser atribudo a max, caso contrario, ser atribudo a min. if(raiz*raiz > num) { max = raiz;} else{ min = raiz; }
- 20 -
Introduo Linguagem C
Operadores lgicos:
Smbolo && || ! Operador E OU NO Significado Lgica And (todas as condies) Lgica Or (basta uma das condies) Lgica de negao
Exemplo: If (Nota1<0 || Nota1>100) goto ent1; Se Nota1 for menor que zero ou se Nota1 for maior que cem v para ent1; Desenvolva o fluxograma e a codificao de um programa que leia trs valores para os lados de um tringulo, considerando lados como A,B e C. Verificar se os lados fornecidos realmente formam um tringulo. Caso verdadeiro dever ser indicado qual o tipo de tringulo formado: issceles, escaleno ou eqiltero. Condies para tringulo: Tringulo uma figura geomtrica (polgono) composta por trs lados, sendo que cada lado menor que a soma dos outros dois lados. Classificao: Issceles = Possui dois lados iguais e um diferente. Equiltero= Possui todos os lados iguais. Escaleno= Possui todos os lados diferentes entre si.
- 21 -
Introduo Linguagem C
5.Lendo Valores
getche( )
Usada para a entrada de variveis char , l um caractere e exibe na tela o caractere digitado. Esta definida em conio.h. Letra = getche(); /* o que foi digitado assumido pela varivel Letra */
getch( )
Usada para a entrada de variveis char , l um caractere e no exibe na tela o caractere digitado. Esta definida em conio.h. Letra = getche(); /* o que foi digitado assumido pela varivel Letra sem mostrar*/
gets( )
Usada para a entrada de variveis string , recebe uma string digitada. Esta definida em conio.h. printf(Digite seu nome: ); gets(nome); Obs.: Para que se guarde uma string necessrio que se crie um vetor com um limite de caracteres para o contedo(tamanho mximo). Isto feito durante a declarao de variveis. Exemplo: { float Soma,soma, _1; int a,b,c; char nome[80]; // contedo de nome um conjunto de at 80 caracteres
Deve ser utilizada para a entrada de variveis numricas(int, float e double). O modo de utilizar semelhante funo printf, porm colocar obrigatoriamente o smbolo & em frente ao nome da varivel sendo lida. Est definida em stdio.h . scanf(%d, & A) ;
scanf( )
- 22 -
Introduo Linguagem C
Exemplo de aplicao: /* Programa de exemplo de aplicao de gets,getch e scanf #include<stdio.h> #include <conio.h> main( ) { char varc; int vari; float varf; char nome[80];
*/
clrscr( ); //Limpa a tela e posiciona o cursor no incio da primeira linha printf(Digite seu nome: ); gets(nome); printf(Digite um nmero inteiro: ); scanf (%d, & vari); printf(Digite um nmero real: ); scanf (%d, & varf); printf(Digite um caractere: ); varc=getche( ); printf( \n %s, voc digitou %d, %f e %c,nome, vari, varf, varc); getch( ); }
- 23 -
Introduo Linguagem C
Estrutura switch...case
A estrutura switch...case uma estrutura de deciso que permite a execuo de um conjunto de instrues a partir pontos diferentes conforme o resultado de uma expresso inteira de controle. O resultado deste expresso comparado ao valor de cada um dos rtulos, e as instrues so executadas a partir desde rtulo. A figura abaixo mostra o fluxograma lgico desta estrutura.
expresso
conjunto 2
...
rotulo N
conjunto N rotulo D
conjunto D
- 24 -
Introduo Linguagem C
Sintaxe: Esta estrutura possui a seguinte sintaxe: switch(expresso){ case rtulo_1:{ conjunto_1 } case rtulo_2:{ conjunto_2} ... case rtulo_n:{ conjunto n} default:{ conjunto d} onde: expresso uma expresso inteira. rtulo_1,rtulo_2,...rtulo_n e rtulo_d so constantes inteiras. conjunto 1, conjunto 2, ..., conjunto n e conjunto d so conjuntos de instrues. O valor de expresso avaliado e o fluxo lgico ser desviado para o conjunto cujo rtulo igual ao resultado da expresso e todas as instrues abaixo deste rtulo sero executadas. Caso o resultado da expresso for diferente de todos os valores dos rtulos ento conjunto (default) executado. Os rtulos devem ser expresses constantes inteiras diferentes entre si. O rtulo default opcional. Esta estrutura particularmente til quando se tem um conjunto de instrues que se deve executar em ordem, porm se pode comear em pontos diferentes. Exemplo: O trecho abaixo ilustra o uso da instruo switch em um menu de seleo. Neste exemplo, o programa iniciar o processo de usinagem de uma pea em um ponto qualquer dependendo do valor lido. N1: printf(Digite 1 para somar, 2 para calcular a mdia ou 3 para sair ); scanf (%d, & varf); switch(varf) { case 1 : printf(realizando a soma); goto soma; break; case 2 : printf(calculando a mdia); goto media; break; case 3 : printf(AT LOGO!); goto fim; break; default : clrscr( ); goto n1; break; } soma: media: fim: }
- 25 -
Introduo Linguagem C
Desenvolva o fluxograma e a codificao de um programa que aceite um nmero pelo teclado e realize a converso entre sistemas de numerao (binrio,octal,decimal e hexadecimal), e apresente o resultado na tela a partir do seguinte quadro de opes: Este programa realiza a converso entre sistemas de numerao. Faa sua opo: 1 Converter decimal em hexadecimal. 2 Converter decimal em octal. 3 Converter hexadecimal em decimal. 4 Converter octal em decimal 5 Converter octal em hexadecimal 6 Para sair Deseja realizar nova converso (S/N)? Obs.: Consultar especificadores de formato com printf
- 26 -
Introduo Linguagem C
Escrita formatada em cores cprintf( ): Esta funo utilizada em conjunto com as definies de cor de texto (textcolor) e de cor de fundo (textbackground) . Esta funo permite que sejam mostradas na tela mensagens coloridas. Cor
Preto Azul Verde Cian Vermelho Magenta Marrom Cinza Claro Cinza Escuro Azul Claro Verde Claro Cian Claro Vermelho Claro Magenta Claro Amarelo Branco Piscante Azul Piscante
Constante
Valor
Fundo
O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. ---------------------
Letra
O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k. O.k.
BLACK 0 BLUE 1 GREEN 2 CYAN 3 RED 4 MAGENTA 5 BROWN 6 LIGHTGRAY 7 DARKGRAY 8 LIGHTBLUE 9 LIGHTGREEN 10 LIGHTCYAN 11 LIGHTRED 12 LIGHTMAGENTA 13 YELLOW 14 WHITE 15 BLINK 128 Obs.: cor piscante = cor +128 BLUE+BLINK 129
Nota-se pela tabela acima que nem todas as cores so vlidas como cor de fundo. Convm salientar que tais funes esto definidas em conio.h
- 27 -
Introduo Linguagem C
clrscr( ):Esta funo limpa a janela de tela e posiciona o cursor na primeira linha e
primeira coluna da janela(canto superior esquerdo).
clreol( ): A funo clreol() (clear to end of line) limpa uma linha desde a posio do
cursor at o final da linha mas no modifica a posio do cursor. Ambas preenchem a tela com a cor de fundo definida pela funo textbacground(). funes
Posiciona Cursor
gotoxy(coluna,linha):Esta funo permite o posicionarmos o cursor em qualquer posio da tela. Sendo que a tela possui 80 colunas e 25 linhas. Logo gotoxy(1,1) at gotoxy(80,25) so vlidos. Devemos lembrar que este comando dever anteceder o printf ou o cprintf para que a mensagem esteja posicionada onde desejarmos.
#include <conio.h> int main( ) { clrscr(); gotoxy(14, 4); cprintf("The function CLREOL clears all characters from the\r\n"); cprintf("cursor position to the end of the line within the\r\n"); cprintf("current text window, without moving the cursor.\r\n"); cprintf("Press any key to continue . . ."); gotoxy(14, 4); getch( ); clreol( ); getch( ); return 0; }
- 28 -
Introduo Linguagem C
dos.h
sound( ): ativa o alto-falante do PC com uma freqncia (Hz). nosound( ): desativa o alto-falante. delay( ) :realiza uma pausa (aguarda intervalo de tempo) de durao tempo
(milisegundos).
Lao for
- 29 -
Introduo Linguagem C
Desenvolva o fluxograma e a codificao de um programa que leia duas notas digitadas, calcule a mdia aritmtica delas e apresente o resultado, junto com a classificao do aluno de aprovado, reprovado ou em recuperao. Quando aprovado o resultado dever ser apresentado em letras verdes sobre um fundo amarelo. Caso a classificao seja de em recuperao dever ser anunciado em letras amarelas piscantes sobre fundo preto acompanhado de sirene 1,5kHz durante 3s. Estando o aluno reprovado dever ser anunciado em letras vermelhas sobre fundo branco acompanhado de sirene bitonal de 1k e 3kHz durante 3s. Antes de encerrar o programa dever aparecer a opo de
- 30 -
ouport(porta,dado),outportb(porta,dado);
Introduo Como a maioria j sabe o computador possui portas de comunicao com o mundo externo, entre estas encontramos Portas de Comunicao serial e a Porta Paralela. A porta paralela no e usada somente como uma impressora, voc pode desenvolver um circuito eletrnico e acopl-lo a essa porta e, atravs de um programa especfico, enviar-lhe sinais digitais para control-lo. Enviando dados para porta paralela outport(porta,dado) Envia uma word(16bits) para uma porta do computador conforme a especificao do endereo . Porta Paralela Lpt1 Lpt2 Lpt3 Endereo 0x378 0x379 0x37A Sentido comunicao Output Input Output / Input
Obs.: A especificao do endereo da porta pode ser feita indiretamente atravs de uma constante a ser declarada atravs da diretiva #define . Exemplo: # include<stdio.h> # include<conio.h> #define lpt1 0x378 int main( ){ outport (lpt1, 0xFFFF); // Todos os bits em nvel alto. } outportb(porta,dado) Envia um byte(8bits) para uma porta do computador conforme a especificao do endereo . Exemplo: # include<stdio.h> # include<conio.h> #define Lpt1 0x378 int main( ){ outportb (lpt1, 0x80); // Apenas o bit7 em nvel alto. return 0;}
Introduo Linguagem C
ACESSANDO O MUNDO EXTERNO ATRAVS DA PORTA PARALELA Neste circuito temos oito leds conectados em catodo comum, desta forma enviarmos atravs da porta paralela um bit em nvel alto, o led correspondente acender.
Por exemplo: Dado 0xFF Dado 0x00 Dado 0x80 Dado 0x01 Todos Leds acesos Todos Leds apagados Led7 aceso Led0 aceso
Desenvolva o fluxograma e a codificao de um programa que acenda seqencialmente os oito leds ligados a porta paralela com intervalo de 500ms entre cada ativao, e com espaos igual ao tempo ligado.
- 33 -
Desenvolva o fluxograma e a codificao de um programa que acenda seqencialmente leds ligados porta paralela com diferentes intervalos entre cada ativao. Sendo que este programa dever oferecer ao usurio quatro opes de diferentes programas a partir da seguinte tela de abertura. Cada programa dever rodar 10vezes e retornar ao menu de abertura: PROGRAMA DE ACIONAMENTO SEQUENCIAL DE LEDS Digite o intervalo de tempo: ______ Faa a sua opo de programa: 1- programa de acionamento do led0 ao led7 2- programa de acionamento do led7 ao led0 3- programa de acionamento de fora para dentro 4- programa de acionamento de dentro para fora 5- sair
Introduo Linguagem C
inport(porta)
L uma word(16bits) de uma porta do computador conforme a especificao do endereo . Porta Paralela Lpt1 Lpt2 Lpt3 Endereo 0x378 0x379 0x37A Sentido comunicao Output Input Output / Input
Obs.: A especificao do endereo da porta pode ser feita indiretamente atravs de uma constante a ser declarada atravs da diretiva #define .
L um byte(8bits) de uma porta do computador conforme a especificao do endereo . Exemplo: # include<stdio.h> # include<conio.h> #define Lpt2 0x379 #define Lpt1 0x378 int main( ) { unsigned int A,b; for(b=1;b<100; b++){ A= inportb(Lpt2); // L o contedo da porta Lpt2 e associa o valor a varivel A gotoxy(25,12); printf(O contedo de Lpt2 0x%X,A); gotoxy(35,16); printf(%d,b); delay(300); } return (0) ;}
inportb(porta)
- 35 -
S6
S5
S4
S3
Paper end
11
10
12
13
15
Error
1
busy
Ack
Slot out
1 126 0x7E
Introduo Linguagem C
Desenvolva o fluxograma e a codificao de um programa que acenda seqencialmente leds ligados porta paralela com diferentes intervalos entre cada ativao. Sendo que este programa dever rodar quatro opes de diferentes programas a partir da leitura dos bits da porta paralela (Lpt2). Cada programa dever rodar 10vezes e retornar ao menu de abertura:
PROGRAMA DE ACIONAMENTO SEQUENCIAL DE LEDS Digite o intervalo de tempo: ______ Deseja executar o programa novamente(S/N)?
- 37 -