24
APOSTILA TURBO C CONCEITOS DE ALGORITMOS Podemos utilizar a seguinte definição para algoritmo: Algoritmo são passos ordenados em conjunto, que soluciona um problema. Primeiramente, precisamos entender o que é uma ação. Entende-se por ação um evento que acorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido. Quando consideramos um evento como uma seqüência de subações, falamos de um processo seqüencial. Para descrever um evento usaremos inicialmente a forma de relato de um observador. Por exemplo: 1) Fazer suco de laranja. pegar uma jarra no armário pegar as laranjas na cesta espremer as laranjas 2) Trocar pneu tirar o pneu furado colocar o pneu cheio Um algoritmo é a descrição de um comportamento, expresso em termos de eventos bem definidos e finitos de ações “primitivas”, os quais podem ser executados. Um algoritmo é, em outras palavras, uma norma executável para estabelecer um certo efeito desejado, que na prática será um conjunto de comandos que, quando executados, resultam na solução de um certo tipo de problema. No cotidiano encontramos constantemente algoritmos, instruções para uso, receitas de cozinha, indicações de montagem, etc. Vamos agora ao computador: trata-se de uma máquina capaz de seguir uma certa espécie de algoritmo, chamado programa. Ele possui uma memória, capaz de armazenar dados, e uma unidade aritmética, que é capaz de modificar os dados que estão na memória. Além disso, comunica-se com o mundo exterior através de operações de entrada e saída. Outro exemplo: 3) Calcular a média obter quatro notas calcular a média

APOSTILA TURBO C

Embed Size (px)

Citation preview

Page 1: APOSTILA TURBO C

APOSTILA TURBO C CONCEITOS DE ALGORITMOS

Podemos utilizar a seguinte definição para algoritmo: Algoritmo são passos ordenados em conjunto, que soluciona um problema. Primeiramente, precisamos entender o que é uma ação. Entende-se por ação um evento que acorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido.

Quando consideramos um evento como uma seqüência de subações, falamos de um processo seqüencial. Para descrever um evento usaremos inicialmente a forma de relato de um observador.

Por exemplo:

1)       Fazer suco de laranja.pegar uma jarra no armáriopegar as laranjas na cestaespremer as laranjas

2)       Trocar pneutirar o pneu furadocolocar o pneu cheio

Um algoritmo é a descrição de um comportamento, expresso em termos de eventos bem definidos e finitos de ações “primitivas”, os quais podem ser executados. Um algoritmo é, em outras palavras, uma norma executável para estabelecer um certo efeito desejado, que na prática será um conjunto de comandos que, quando executados, resultam na solução de um certo tipo de problema.

No cotidiano encontramos constantemente algoritmos, instruções para uso, receitas de cozinha, indicações de montagem, etc.

Vamos agora ao computador: trata-se de uma máquina capaz de seguir uma certa espécie de algoritmo, chamado programa. Ele possui uma memória, capaz de armazenar dados, e uma unidade aritmética, que é capaz de modificar os dados que estão na memória. Além disso, comunica-se com o mundo exterior através de operações de entrada e saída.

Outro exemplo:

3)       Calcular a médiaobter  quatro notascalcular a médiamostrar a média

Refinando:obter  N1, N2, N3, N4média é calculada somando-se as quatro notas e dividindo por quatromostrar a média calculada

REFINAMENTOS: Reduzem a complexidade do algoritmo e o torna mais legível. Técnica utilizada para que o algoritmo fique completo e possa ser entendido por outra pessoa. Exemplo: Como trocar um pneu furado

Page 2: APOSTILA TURBO C

DOCUMENTAÇÃO: Comentários colocados junto ao algoritmo com a finalidade de esclarecer os comandos utilizados no algoritmo. Utilizaremos símbolos especiais para escrever comentário ( {comentário} ).

ITENS FUNDAMENTAISA partir de agora veremos um conjunto particular de regras e convenções para o desenvolvimento de algoritmos.

CONSTANTES:

Valores que não se modificam ao longo da execução do algoritmo.Uma constante pode ser um valor numérico, um valor lógico ou literal.Constante numérica: valor numérico com ou sem parte fracionária

Exemplos:a)            10

b)           7,8*102

c)            3,14d)           –0,38

VARIÁVEIS:

Uma variável na matemática é a representação simbólica dos elementos de um certo conjunto. Nos algoritmos, a cada variável corresponde uma posição de memória e o seu conteúdo pode variar durante a execução do algoritmo.As variáveis são identificadas por um nome ou identificador.

Formação de identificadores:

Um identificador é formado por 1 ou mais caracteres, sendo que o primeiro deve, obrigatoriamente, ser uma letra e os seguintes letras ou dígitos. Não são permitidos símbolos especiais com exceção do sublinhado ( _ ).

Exemplos de identificadores válidos:a) Ab) NOTAc) X5d) A32Be) TOT_NOTA

Exemplos de identificadores não válidos:a) 5B       b) E(13)c) A*Bd) X-Y

Declaração de variáveis:

Usamos declarar variáveis em um algoritmo para que seja reservado área na memória para armazenar a informação. Além disso, indicamos o tipo de informação que a variável irá conter.

TIPOS BÁSICOS : numérico, lógico e literal

Sintaxe:DECLARE  lista-de-identificadores  TIPO  onde:DECLARE: palavra-chaveLista-de-identificadores: variáveis que serão utilizadas no algoritmo

Page 3: APOSTILA TURBO C

TIPO: qual o conteúdo que a variável terá

Obs.: Palavra-chave tem um significado próprio, independente do algoritmo. Não pode ser usada como identificador e sempre aparecerá sublinhada.

COMENTÁRIOS : É um texto, ou simplesmente uma frase, que aparece sempre delimitado por chaves {comentário}, com o objetivo de explicar o algoritmo.

Exemplo:declare NOTA numérico  {Declaração de variáveis}

EXPRESSÕES ARITMÉTICAS:

Formadas por operadores aritméticos e operandos que são constantes e/ou variáveis do tipo numérico.

Operações básicas:Adição: (+)Subtração: (-)Multiplicação: (*)Divisão: (/)

Exemplos:a) X + Yb) 2 * NOTAc) A * B + Cd) SOMA / N

EXPRESSÕES LÓGICAS:

Alguma ação durante a execução do algoritmo pode estar sujeita a uma condição. Esta condição é representada por uma expressão lógica.Os operadores são lógicos e os operandos são relações, constantes e/ou variáveis do tipo lógico.

RELAÇÕES:

Comparação realizada entre dois valores do mesmo tipo básico.

Operadores relacionais:               = (igual a)               <> ou (diferente de)               > (maior que)               < (menor que)               >= ou (maior ou igual a)               <= ou (menor ou igual a)

O resultado é sempre um valor lógico (Falso ou Verdadeiro)Operadores lógicos: Conectivos que também são operadores em expressões lógicas.e (é verdadeiro ambas as proposições são verdadeiras)ou (é verdadeiro pelo menos uma das proposições é verdadeira)

Exemplos:

Page 4: APOSTILA TURBO C

a)       A + B = 0 e C <> 1b)       TESTE ou A * B > 1

Observe o uso da tabela verdade:

P Q p e q 

p q p ou q

V V V V V V

V F F V F V

F V F F V V

F F F F F F

Onde p e q: são proposições.

V: verdadeiro                       F: falso

INTRODUÇÃO À LINGUAGEM C

DEFINIÇÕES BÁSICAS

Programa - Conjunto de instruções distribuídas de maneira lógica, com a finalidade de executar satisfatoriamente determinada tarefa.

Linguagem de Programação - Conjunto de instruções possíveis utilizadas pelo homem para se comunicar com a máquina.

Compilador - Programa que traduz programas em linguagem de alto nível para linguagem de máquina.

Erro de compilação - Erro no programa em linguagem de alto nível que é detectado pelo compilador.

Erro de execução - Erro cometido em um programa que não é detectado até que o programa seja executado.

Variável - Símbolo que representa uma posição de memória.

Tempo de compilação : Os eventos ocorrem enquanto seu programa esta sendo compilado.

Tempo de execução: Os eventos ocorrem quando seu programa esta sendo executado.

Page 5: APOSTILA TURBO C

Biblioteca: É um arquivo contendo as funções padrão que seu programa poderá usar.

Código fonte: É o texto de um programa que o usuário pode ler, comumente chamado de programa.

Um programa de computador nada mais é que a codificação de um algoritmo numa linguagem de programação. Linguagens como C, Pascal, BASIC, ALGOL, Clipper, COBOL, etc., são chamadas de procedurais, devido ao fato das instruções serem executadas de forma seqüencial, enquanto que as linguagens baseadas no conceito de eventos como C++, Visual BASIC, Visual Objects, utilizam outra estratégia de programação (Programação Orientada ao Objeto), a ser vista em outro módulo do curso.

Simulação ou Teste de Mesa

Por melhor que seja o conhecimento do Analista/Programador, este só poderá ter certeza que sua “estratégia” foi bem sucedida após testar o programa num computador.

Bons programadores tem poucas surpresas quando testam seus programas, fazendo normalmente umas poucas correções para que o programa funcione de maneira adequada.

Programadores iniciantes criam uma estratégia (algoritmo) muitas vezes ineficiente e normalmente “correm” para o computador visando testar o programa e acabam por perder um tempo enorme. Não é raro ouvirmos de iniciantes a frase “Nunca conseguirei fazer um programa ...”. Certamente, não conseguirá mesmo, caso não tenha uma estratégia definida.

Imagine uma “tarefa” muito simples, como por exemplo fritar um ovo. Caso você não soubesse “operar” o fogão provavelmente não conseguiria acendê-lo. Se nunca tivesse visto alguém quebrar um ovo, provavelmente não conseguiria fazê-lo sem perder parte de seu conteúdo. A fritura seria algo desastroso, caso você desconhecesse a utilidade do óleo. E o sabor seria frustrante, caso o tempero utilizado fosse açúcar.

O Programador iniciante que não simula seu algoritmo, se compara ao cozinheiro desastrado descrito acima. E como simular?

Basta “agirmos” como se fossemos o próprio computador, ou seja devemos “fingir” que nosso raciocíneo é baseado no conteúdo de variáveis. De fato, usualmente antes de tomarmos alguma decisão analisamos uma série de fatores (as tais variáveis dos programas). Desta forma, caso fizermos uma análise apurada sobre os conteúdos das variáveis, poderemos “descobrir” a função de cada programa.

Primeiramente vamos resolver o problema como aprendemos no primeiro grau.Supondo M = 120 e N = 28.Dividendo = 120 28 8Divisor = 28 8 4 MDCQuociente = 4 3 2Resto = 8 4 0

Page 6: APOSTILA TURBO C

Simulação:M N K Impresso Instruções Comentários120 28 Declarações e Leituras

8 Enquanto n <> 0k = m - m / n * n

Cálculo do Resto

28 8 m = n; n = k Novos Divisor e Dividendos

4 Enquanto n <> 0k = m - m / n * n

Voltando ao TesteCálculo do Resto

4 0 m = n; n = k Novos Divisor e Dividendos

Enquanto n <> 0 N é Zero

4 Achou MDC!

Observação Final: Obviamente caso você se sinta seguro a resolver diretamente o problema na linguagem diretamente no computador, faça isto. Porém se surgirem dificuldades, não se esqueça de fazer o algoritmo e a simulação. Lembre-se do cozinheiro desastrado, que se tivesse consultado uma simples receita (todo algoritmo não passa de uma receita sofisticada), poderia ao menos fritar o ovo!

Linguagem C

Desenvolvida nos laboratórios Bell na década de 70, a partir da Linguagem B (criada no final dos anos 60 por Ken Thompson), que foi reformulada por Brian Kernighan e Dennis M. Ritchie e posteriormente renomeada para C.

Podendo ser considerada como uma linguagem de médio nível, pois possui instruções que a tornam ora uma linguagem de alto nível e estruturada como o Pascal, se assim se fizer necessário, ora uma linguagem de baixo nível pois possui instruções tão próximas da máquina, que só o Assembler possui.

De fato com a linguagem C podemos construir programas organizados e concisos (como o Pascal), ocupando pouco espaço de memória com alta velocidade de execução (como o Assembler). Infelizmente, dada toda a flexibilidade da linguagem, também poderemos escrever programas desorganizados e difíceis de serem compreendidos (como usualmente são os programas em BASIC).

Devemos lembrar que a linguagem C foi desenvolvida a partir da necessidade de se escrever programas que utilizassem recursos próprios da linguagem de máquina de uma forma mais simples e portável que o assembler.

Page 7: APOSTILA TURBO C

Uma análise superficial dos programas escritos em C e Clipper (Aula 01 - Algoritmos Estruturados), nos permite perceber que a linguagem C supera em muito em dificuldade o programa análogo em Clipper. Ora, então porque não desenvolvermos programas somente em Clipper?

A inúmeras razões para a escolha da linguagem C como a predileta para os desenvolvedores “profissionais”. As características da Linguagem C servirão para mostrar o porquê de sua ampla utilização.

Características da Linguagem C Portabilidade entre máquinas e sistemas operacionais. Dados compostos em forma estruturada. Programas Estruturados. Total interação com o Sistema Operacional. Código compacto e rápido, quando comparado ao código de outras linguagem de

complexidade análoga.

Aplicações Escritas em C

Atualmente, nos USA, C é a linguagem mais utilizada pelos programadores, por permitir, dadas suas características, a escrita de programas típicos do Assembler, BASIC, COBOL e Clipper, sempre com maior eficiência e portabilidade, como podemos constatar pelos exemplos abaixo relacionados:

Sistema Operacional: UNIX (Sistema Operacional executável em micro computadores e em mainframes).

Montadores: Clipper (O utilitário de banco de dados mais usado no Brasil). Planilhas: 1,2,3 e Excel (A planilha eletrônica com maior volume de vendas

mundial). Banco de Dados: dBase III, IV e Access (o gerenciador de base de dados mais

utilizado no mundo). InfoStar: O Editor de Texto mais utilizado nos USA no Sistema Operacional UNIX. Utilitários: FormTool (Editor de formulário mais vendido no mundo). Aplicações Gráficas: Efeitos Especiais de filmes com Star Trek e Star War. Linguagens como o Power Builder e o Visual Basic, respectivamente as linguagens

mais utilizadas nos EUA e no Brasil. No Brasil utilizada por empresas especializadas na elaboração de vinhetas e outros

efeitos especiais. C comparado a outras linguagens

Devemos entender Nível Alto como sendo a capacidade da linguagem em compreender instruções escritas em “dialetos” próximos do inglês (Ada e Pascal, por exemplo) e Nível Baixo para aquelas linguagens que se aproximam do assembly, que é a linguagem própria da máquina, compostas por instruções binárias e outras incompreensíveis para o ser humano não treinado para este propósito. Infelizmente, quanto mais clara uma linguagem for para o humano (simplicidade >) mais obscura o será para a máquina (velocidade <).

Page 8: APOSTILA TURBO C

FUNÇÃO main()

A linguagem C assim como Pascal é uma linguagem estruturada.

Uma linguagem é chamada estruturada quando é formada por blocos chamados de funções. Um programa em C é formado por uma coleção de funções. Em um programa bem escrito cada função executa apenas uma tarefa. Cada função tem um nome e uma lista de argumentos que a mesma receberá.

A execução do programa escrito em C sempre começa pela função principal main( ).

EXEMPLO - 1

void main( ) {

int idade;clrscr( );printf (“ Digite sua idade “); scanf (“ %d”,&idade );printf ( “Sua idade é %d”,idade );getch( );

}

Estudando cada linha:

void main ( ) especifica o nome e o tipo da função ( nesse caso void ){ inicio da função mainint idade declara uma variável de nome idade e tipo inteiroclrscr( ) função predefinida para limpar a telaprintf (“ Digite sua idade “) imprime a mensagem entre aspas na tela scanf (“ %d”,&idade ) lê via teclado um valor que e colocado em idadegetch ( ) função predefinida , espera uma tecla ser pressionada

Page 9: APOSTILA TURBO C

} fim da função main

OPERADORES

C é uma linguagem rica em operadores. Alguns são mais usados do que outros como é o caso do operador de atribuição e dos operadores aritméticos, a seguir mostramos tabelas contendo os operadores aritméticos, relacionais e lógicos.

OPERADORES MATEMÁTICOS

OPERADOR ACAO- subtração+ adição* multiplicação/ divisão

% resto da divisão-- decremento++ incremento

OPERADORES LOGICOS

OPERADOR ACAO&& and | | or ! not

OPERADORES RELACIONAIS

OPERADOR ACAO> maior que< menor que

>= maior ou igual<= menor ou igual== igual a!= diferente de

VARIÁVEIS

Uma variável é um espaço de memória reservado para armazenar um certo tipo de dado e tendo um nome para referenciar o seu conteúdo.Duas variáveis globais não podem ter o mesmo nome, uma variável local pode ter o mesmo nome de uma variável local de outra função.

Page 10: APOSTILA TURBO C

DECLARANDO VARIAVEIS

tipo lista_variaveis;

TABELA CONTENDO OS TIPOS E TAMANHOS DE VARIAVEIS VÁLIDAS EM C

TIPO EXTENSAO DO BIT ESCALAchar 8 -128 a 127int 16 -32768 a 32767

unsigned int 16 0 a 65535signed int 16 -32768 a 32767long int 32 -2147483648 a 147483648

float 32 3.4E-38 a 3.4E+38double 64 1.7E-308 a 1.7E+308

INICIALIZANDO VARIAVEIS

Inicializar uma variável significa atribuir um primeiro valor a essa variável. Variáveis globais são sempre inicializadas com zero. Exemplo: int k = 5;

char op = ‘f’;float num = 21.5;char nome[20] = “Fernanda”;

FUNÇÕES DE ESCRITA E LEITURA DE TELA

FUNÇAO printf( )

- Função predefinida no arquivo STDIO.H, e serve para imprimirmos um determinado dado na tela.

- Sintaxe printf(“string de controle”,variável); - Exemplo:

int k=25;printf(“%i”,k);

FUNCAO scanf( )

- Função predefinida no arquivo STDIO.H, e serve pra se ler um determinado dado via teclado.

Page 11: APOSTILA TURBO C

- Sintaxescanf(“string de controle”,&variável);

- Exemplo:char op;scanf(“%c”,&op);

TABELA CONTENDO CODIGOS DE FORMATAÇÃO PARA PRINTF E SCANF

CODIGO PRINTF SCANF%d imprime um inteiro decimal lê um inteiro decimal%f ponto decimal flutuante lê um numero com ponto flutuante%s string de caracteres lê uma string de caracteres%c um único caractere lê um único caractere%i decimal lê um inteiro decimal%p imprime um ponteiro lê um ponteiro%e notação cientifica lê um numero com ponto flutuante

TABELA CONTENDO FUNÇOES DE LEITURA VIA TECLADO

FUNCAO OPERACAOgetchar ( ) lê um caractere; espera por <enter>getche ( ) lê um caractere com eco; não espera por <enter>getch ( ) lê um caractere sem eco; não espera por <enter>

putchar ( ) imprime um caractere na telagets ( ) lê uma string via tecladoputs ( ) imprime uma string na tela

Observemos o Quadro de Operadores Especiais suportados por printf()

Código Significado\b Retrocesso (BackSpace)\f Salto de Página (Form Feed)\n Linha Nova (Line Feed)\r Retorno do Carro (cr)\t Tabulação Horizontal (TAB)\’ Caracter com apóstrofo\0 Caracter Nulo ou Fim de String (Seqüência)\x Representação de byte na base hexadecimalExemplo: printf(“\x41”); causa a impressão da letra A na tela.

Page 12: APOSTILA TURBO C

COMANDOS DE DECISÃO

Os comandos de decisão permitem determinar qual é a ação a ser tomada com base no resultado de uma expressão condicional.

COMANDO IF-ELSE

O comando if instrui o computador a tomar uma decisão simples.Forma geral:

if ( condição ) comando; else comando;

Exemplo:

/* programa do numero magico */

#include <stdio.h>#include <conio.h>

void main( ){

int magico, entrada; magico = random(20); //gera um numero entre 0 e 20 clrscr( ); printf( “Adivinhe o numero: ”); scanf(“%d”,&entrada); if (entrada == magico) printf (“ == Você acertou ==”); else printf (“ Você não acertou pressione qualquer tecla ); getch( );

}

COMANDO SWITCH CASE

O comando switch pode ser usado no caso de alternativas múltiplas.Forma geral:

switch( variável ) { case constante1: seqüência de comandos; break; case constante2: seqüência de comandos; break; case constante3: seqüência de comandos; break; . .

Page 13: APOSTILA TURBO C

default: seqüência de comandos; }

O comando switch ao avaliar a expressão entre parênteses, desviamos para o rótulo case cujo valor coincida com o valor da expressão. O comando break serve para sairmos do bloco mais interno ao qual o break aparece. O comando break garante a execução de apenas uma chamada dentro do switch.

Exemplo:

#include <stdio.h>void main ( ){

char opção;clrscr( );

printf(“A - imprime a letra f”); printf(“B - imprime a letra g”); printf(“C - imprime a letra h”); opção = getch( ); switch(opção) { case ‘a’: printf(“f”);break; case ‘b’: printf(“g”);break; case ‘c’: printf(“h”);break; }

}

LAÇOS

Laços são comandos da linguagem C úteis sempre que uma ou mais instruções devam ser repetidas enquanto uma certa condição estiver sendo satisfeita.

LAÇO WHILE

Um laço while é apropriado em situações em que o laço pode ser terminado inesperadamente, por condições desenvolvidas dentro do laço.

Forma geral

while ( expressão de teste) comando;

Exemplo:

Page 14: APOSTILA TURBO C

void imprime(char op){

int k=0;while ( k != 50 )

{if (op==’p’) if (k%2==0) printf(“%i”,k);if (op==’i’)

if (k%2!=0) printf(“%ik);k++;

}}

LAÇO DO WHILE

Este laço é bastante similar ao laço while e é utilizado em situações em que é necessário executar o corpo do laço pelo menos uma vez e depois avaliar a expressão de teste.

Forma geral

do{

comando ou bloco de comandos;

}while(expressão de teste);

Exemplo:

void main( ){

char op;int sair = 0;do{

op = getche( );switch(op){

case ‘s’: somatorio( );break;case ‘f’ : fibonacci( );break;case ‘q’: sair = 1;

}}while(sair!=1);

}

Page 15: APOSTILA TURBO C

LAÇO FOR

O laço for é geralmente usado quando queremos repetir algo um número fixo de vezes. Isto significa que utilizamos um laço for quando sabemos de antemão o número de vezes a repetir.Forma geral :

for ( inicialização; condição; incremento ) comando;

Exemplo:

/* programa que imprime os números de 1 a 100 */#include <stdio.h>#include <conio.h>void main ( ){

int x; for ( x=1;x<=100;x++) printf ( “%d”,x); getch( );

}

Exemplo2: void main( )

{float num;for (num=1;num<20;num++) raiz(num);

}void raiz( float n){

printf(“\nn = %f raiz quadrada = %f”,n,sqrt(n));}

FUNÇÕES

Um programa em C é formado por um conjunto de funções.

- Declarando uma função:tipo identificador(lista de parâmetros){

declaração de variáveis locais; comando ou bloco de comandos;

}

Page 16: APOSTILA TURBO C

Exemplo:

void quadrado(int p){

int k;k = p*p;printf(“%i”,p);

}void main( ){

int k=25;quadrado(k);getch( );

}

COMANDO return

Serve para retornarmos um valor calculado dentro de uma função quando chamada de alguma parte do programa.

Exemplo:

float calc_sin(float arg) {

float val;val = sin(arg);return(val);

}void main( ){

float valor;valor = calc_sin(50);printf(“%f”,valor);

}

FUNÇÕES RECURSIVAS

Uma função é dita recursiva quando se é definida dentro dela mesma. Isto é, uma função e´ recursiva quando dentro dela está presente uma instrução de chamada a ela própria.

// imprime uma frase invertida. Usa recursao#include <stdio.h>

Page 17: APOSTILA TURBO C

#include <conio.h>void inverte( )void main( ){

clrscr( );scanf( “%c”,’\n’);inverte( );getch();

}void inverte ( ){

char ch;if ((ch=getche( )) != ‘\r’ ) inverte( );scanf(“%c”,ch)

}

Atribuição (=) versus comparação (==)

Um erro comum e difícil de detectar provém do facto de uma atribuição ser considerada uma expressão em C e além disso qualquer expressão ter um valor lógico (TRUE ou FALSE). Assim a seguinte instrução é sintacticamente correcta mas frequentemente não é isso o que o programador pretende: if (a = b) { ... }; Na instrução de cima o valor de b é atribuído a a e o if é avaliado como verdadeiro se esse valor for diferente de 0. O que geralmente se pretende numa instrução como aquela será comparar o valor de a com o valor de b: if (a == b) { ... };

break e continue

As instruções break e continue permitem-nos controlar melhor a forma de execução dos ciclos:

break - termina imediatamente a execução de um ciclo ou da instrução switch continue - salta imediatamente para a avaliação da expressão de controle do ciclo

No exemplo seguinte pretende-se ler uma série de inteiros do teclado e fazer qualquer coisa com eles. No entanto se o valor lido for 0 terminamos a leitura, se o valor for negativo escrevemos uma mensagem de erro e terminamos o ciclo, e se for maior do que 100 ignoramos esse valor e passamos à leitura do seguinte.

while (scanf("%d", &value) && value != 0) {

Page 18: APOSTILA TURBO C

if (value < 0) {

printf("Valor ilegal\n"); break;

} if (value > 100) continue; ...; /* processar value */ ...; }

A função scanf() lê valores do teclado e coloca-os em variáveis. Retorna o número de caracteres lidos se tiver sucesso e 0 no caso contrário. Assim, se houver uma leitura, ela retorna um valor diferente de 0, que é interpretado como TRUE.

Include

Esta diretiva de compilação serve para especificar arquivos com definições de tipo, macro substituições e protótipos de funções que serão usadas no programa. Como C tem uma grande variedade destas funções e definições, é comum que elas estejam agrupadas em arquivos diferentes de acordo com a natureza das tarefas que executam.     A forma geral para esta diretiva é a seguinte:   #include <nome do arquivo>   ou   #include "nome do arquivo"     A diferença entre estas duas formas está no local onde o compilador vai procurar o arquivo no momento da compilação. No primeiro formato, o arquivo é procurado no diretório já definido pelo TURBO C como sendo aquele que contem os "header files", isto é, os arquivos com extensão .h que contém definições de tipos, dados e funções já prontas que vem com o TURBO C. O segundo formato é usado quando queremos que o TURBO busque o arquivo especificado no diretório atual do disco. Esta forma é usada normalmente quando queremos incorporar arquivos por nós criados e salvos no diretório atual.  

Aqui estão alguns arquivos já prontos e usados com maior frequência:    

Page 19: APOSTILA TURBO C

stdio.h rotinas padrão de entrada e saída definidas pelos criadores da linguagem C.

alloc.h funções para gerenciamento de memória

float.h funções para tratar números de ponto flutuante

math.h funções matémáticas

stddef.h vários tipos de dados e macro substituições

stdlib.h várias rotinas muito usadas, conversão, sort, etc..

string.h rotinas p/ manipular strings e memória