54
Prof. Yandre Maldonado e Gomes da Costa Introdução à Linguagem C Prof. Yandre Maldonado - 1

Prof. Yandre Maldonado e Gomes da Costa - din.uem.bryandre/AEDEP/linguagemC-grande.pdf · Introdução à Linguagem C Prof. Yandre Maldonado - 11 • Comentários: podem ser incluídos

Embed Size (px)

Citation preview

Prof. Yandre Maldonado e Gomes da Costa

Introdução à Linguagem C

Prof. Y

andre Maldonado -

1

• Linguagem C:– Desenvolvida por Dennis Ritchie nos laboratórios

da AT&T Bell (EUA) no início dos anos 70;

– C é uma das linguagens de maior aceitação:• Portabilidade (Compiladores disponíveis para PC’s,

Mainframes, etc.)

• Muitos compiladores C produzem código bastante otimizado;

• Reúne tanto características de alto nível quanto de baixo nível (muitas vezes chamada de nível médio);

– Em 1983 foi criado o comitê ANSI-C;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

2

Algol(1960 – Europa)

Algol(1960 – Europa)

BCPL(Inglaterra)

BCPL(Inglaterra)

B(1970 – EUA)

B(1970 – EUA)

C(1972 – EUA)

C(1972 – EUA)

Introdução à Linguagem C

Prof. Y

andre Maldonado -

3

• C vs.C++

• Linguagem C: linguagem de programação imperativa estruturada;

• Linguagem C++:• Linguagem Orientada a Objetos;• Formadas pela linguagem C adicionada de um conjunto de instruções

voltados à OO;

• Quem sabe programar em C conhece a maior parte de C++;

C

C++

Introdução à Linguagem C

Prof. Y

andre Maldonado -

4

• Turbo C vs. Turbo Pascal• Termos básicos similares;• Algumas funções semelhantes;• C tem maior controle direto sobre o computador;• O C possui fraca verificação de erros;• A linguagem C é“case sensitive”;

“C é a linguagem de um programador”Herbert Schildt

“C é a linguagem de um programador”Herbert Schildt

Introdução à Linguagem C

Prof. Y

andre Maldonado -

5

• A linguagem C é utilizada na criação de diversos tipos de aplicação, tais como:• Sistemas Operacionais;• Processadores de Texto;• Planilhas Eletrônicas;• Sistemas Gerenciadores de BD;• Processadores Gráficos;• Problemas de Engenharia;• Compiladores;

“C é uma linguagem versátil”“C é uma linguagem versátil”

Introdução à Linguagem C

Prof. Y

andre Maldonado -

6

• C: linguagem de nível médio;

Alto nível:- Estruturada;- Modular;- Portátil;

Alto nível:- Estruturada;- Modular;- Portátil;

Baixo nível:- Linguagem de máquina;- Bits e bytes;- Endereços de memória;

Baixo nível:- Linguagem de máquina;- Bits e bytes;- Endereços de memória;

C

Introdução à Linguagem C

Prof. Y

andre Maldonado -

7

• Primeiros passos na Linguagem C:• C écase sensitive:

• Pode-se declarar quatro variáveis diferentes com os nomes Soma, soma, SOMA e SoMa, embora não seja recomendável na maioria das vezes;

• Todas as palavras reservadas da linguagem C devem ser descritas em letra minúscula, assim temos:

• for : palavra reservada que rotula a estrutura de repetição “para”;

• if : palavra reservada que rotula a estrutura de seleção “se”;

• For : poderia ser um nome de variável;• If : poderia ser um nome de variável;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

8

• Estrutura básica de um programa em C:

• Todo programa em C possui no mínimo uma função;

• A função main()é obrigatória e é a primeira a ser executada. É a função principal, o ponto de partida do programa que será criado;

• Por isso, a noção de função e de programa freqüentemente se confundem quando se programa em linguagem C;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

9

• Forma geral de um programa em C:

inclusão de arquivos de cabeçalhodeclaração de variáveis globaismain () → declaração da função principal (obrigatória). Os parênteses

indicam que trata-se de uma função{ → toda função começa com o símbolo “{“, equivale ao “início”

(begin) de um bloco de instruçõesdeclaração de variáveis locais...comandos;...} →toda função termina com o símbolo “}”, equivale ao “fim” (end) de

um bloco de instruções

• As instruções descritas no programa terminam sempre com “;”, como na linguagem Pascal.

Introdução à Linguagem C

Prof. Y

andre Maldonado -

10

• O menor programa possível em C seria:

main (){}

• É um programa vazio, que não contém instruções para executar;

• Formatação dos programas: é livre, mas convém manter a legibilidade;main (){}

main (){}

main(){}

main(){}

main(){}

main(){}

main (){ }

main (){ }

Bons exemplos Maus exemplos

Introdução à Linguagem C

Prof. Y

andre Maldonado -

11

• Comentários: podem ser incluídos em qualquer parte do programa.• Se ocupar apenas uma linha, basta que a mesma

seja iniciada com “//”;• Se ocupar mais de uma linha, o comentário deve

iniciar com o símbolo “/*” e terminar com o símbolo “*/”;

• Palavras reservadas da Linguagem C:

whilevolatilevoidunsignedunion

typedefswitchstructstaticsizeofsignedshort

returnregistermainlongintifgoto

forfloatexternenumelsedoubledo

defaultcontinueconstcharcasebreakauto

Introdução à Linguagem C

Prof. Y

andre Maldonado -

12

• Exercícios:

• Por que pode-se dizer que C é uma linguagem de nível médio?

• Fale sobre características positivas e negativas da linguagem C.

• Descreva a relação existente entre a linguagem C e C++.

Introdução à Linguagem C

Prof. Y

andre Maldonado -

13

• Instruções de programa:• printf()

• Função de E/S;• Para utilizá-la deve-se incluir no cabeçalho o

arquivo stdio.h (standard i/o);• Forma geral:

• printf(string_de_controle, lista_de_argumentos);

• Primeiro programa em C:#include <stdio.h>#include <conio.h>void main (){

printf (“Oi mundo.”);getch ();

}

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

printf (“Oi mundo.”);getch ();

}

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

clrscr();printf("oi mundo");getch ();

}

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

clrscr();printf("oi mundo");getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

14

• scanf()• Função de E/S;• Para utilizá-la deve-se incluir no cabeçalho o arquivo

stdio.h (standard i/o);• Forma geral:

• scanf(string_de_controle, lista_de_argumentos);

• Expressão de controle “\n”: pode ser utilizada dentro da string de controlepara iniciar uma nova linha;

• Códigos de Formatação

Hexadecimal%x

Decimal sem sinal%u

Cadeia de caracteres%s

Octal%o

Ponto flutuante%f

Notação científica%e

Long%ld

Decimal%d

Caractere simples%c

SignificadoCódigo

Introdução à Linguagem C

Prof. Y

andre Maldonado -

15

• Tipos de variáveis:

0 a 6553516unsigned int

0 a 2558unsigned char

-3.4E+38 a 3.4E+3832long int

-1.7E+308 a 1.7E+30864double

-3.4E+38 a 3.4E+3832float

-32768 a 3276716int

-128 a 1278char

Sem valor0void

EscalaBitsTipo

Introdução à Linguagem C

Prof. Y

andre Maldonado -

16

• Declaração de variáveis:• tipo nome;

• Regras gerais:• Declarar antes do uso;• Incluir na declaração o nome e tipo da variável;• Na ocorrência de mais de uma variável de mesmo tipo, podemos

declará-las separando seus nomes por vírgulas em uma mesma linha;• Em C, não existe tipo booleano (lógico) e nem string (cadeia);

• O valor zero (0) é considerado falso e qualquer outro valor éconsiderado verdadeiro;

• Exemplos:int K;double valores;float quadro;char caracter;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

17

• Outras funções de E/S:• putchar()

• A função putchar() imprime uma variável do tipo caracter na tela;

• Arquivo de inclusão: <stdio.h>• Exemplo:

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

main(){

char letra;clrscr();letra='a';putchar(letra);getch();

}

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

main(){

char letra;clrscr();letra='a';putchar(letra);getch();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

18

• Outras funções de E/S:• getch()

• A função getch() lê um caractere do teclado sem ecoá-lo na tela (no turbo C);

• Arquivo de inclusão: <conio.h>• Exemplo:

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

main(){

char letra;clrscr();printf ("Digite um caracter: ");letra=getch();printf ("\nCaractere digitado: %c\n", letra);getch ();

}

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

main(){

char letra;clrscr();printf ("Digite um caracter: ");letra=getch();printf ("\nCaractere digitado: %c\n", letra);getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

19

• Outras funções de E/S:• getche()

• A função getche() lê um caractere do teclado e imprime o mesmo na tela;

• Arquivo de inclusão: <conio.h>• Exemplo:

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

main(){

char letra;clrscr();printf ("Digite um caracter: ");letra=getche();printf ("\nCaractere digitado: %c", letra);getch ();

}

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

main(){

char letra;clrscr();printf ("Digite um caracter: ");letra=getche();printf ("\nCaractere digitado: %c", letra);getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

20

• Programa para calcular a área de um círculo:

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

main (){

float R, Area;clrscr();printf ("Digite o raio da circunferencia: ");scanf ("%f",&R);Area = 3.14*R*R;printf ("A area do circulo e igual a: %f\n\n",Area);getch ();

}

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

main (){

float R, Area;clrscr();printf ("Digite o raio da circunferencia: ");scanf ("%f",&R);Area = 3.14*R*R;printf ("A area do circulo e igual a: %f\n\n",Area);getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

21

• Exercícios:• Faça um programa em C para calcular o

volume de um cilindro a partir dos valores da altura e do raio do mesmo.• Dica: V=h*π*R2;

• Faça um programa em C para calcular as raízes reais de uma equação do segundo grau do tipo ax2+bx+c=0.• Dica:

• ∆=b2-4*a*c; • x1=(-b+delta1/2)/(2*a);• x2=(-b-delta1/2)/(2*a);

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

void main (){

float R, H, V;printf ("Calculo do Volume de um Cilindro\n\n");printf ("Digite o valor do raio da base do cilindro: ");scanf ("%f", &R);printf ("Digite o valor da altura do cilindro: ");scanf ("%f", &H);V=3.14*pow(R,2)*H;printf ("\n\nO Volume do Cilindro ‚ igual a: %.2f", V );printf ("\n\n\nFim da execução!\n");getch();

}

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

void main (){

float R, H, V;printf ("Calculo do Volume de um Cilindro\n\n");printf ("Digite o valor do raio da base do cilindro: ");scanf ("%f", &R);printf ("Digite o valor da altura do cilindro: ");scanf ("%f", &H);V=3.14*pow(R,2)*H;printf ("\n\nO Volume do Cilindro ‚ igual a: %.2f", V );printf ("\n\n\nFim da execução!\n");getch();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

22

Volume do Cilindro

#include <stdio.h>#include <conio.h>#include <math.h>void main ()

{float a, b, c, delta, x1, x2;printf ("Calculo das ra¡zes reais da equacao do tipo

ax2+bx+c=0\n\n");printf ("Digite o valor do coeficiente a: ");scanf ("%f", &a);printf ("Digite o valor do coeficiente b: ");scanf ("%f", &b);printf ("Digite o valor do coeficiente c: ");scanf ("%f", &c);delta=b*b-4*a*c;x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf ("\n\nO valor de x1 ‚: %f", x1);printf ("\nE o valor de x2 ‚: %f", x2);printf ("\n\n\nFim da execução!\n\n");getch ();

}

#include <stdio.h>#include <conio.h>#include <math.h>void main ()

{float a, b, c, delta, x1, x2;printf ("Calculo das ra¡zes reais da equacao do tipo

ax2+bx+c=0\n\n");printf ("Digite o valor do coeficiente a: ");scanf ("%f", &a);printf ("Digite o valor do coeficiente b: ");scanf ("%f", &b);printf ("Digite o valor do coeficiente c: ");scanf ("%f", &c);delta=b*b-4*a*c;x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf ("\n\nO valor de x1 ‚: %f", x1);printf ("\nE o valor de x2 ‚: %f", x2);printf ("\n\n\nFim da execução!\n\n");getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

23

Raízes da Equação do 2º grau

Introdução à Linguagem C

Prof. Y

andre Maldonado -

24

j--;Decrementade um o operando--

i++;Incrementa de um o operando++

Resto=8%3;Módulo (retorna o resto da divisão)%

Comissão=lucro/4;Divisão/

nota=nota*2;Multiplicação*

N-=2; equivale a N=N-2;Aritmético de atribuição (subtração)-=

N+=3; equivale a N=N+3;Aritmético de atribuição (adição)+=

N%=5; equivale a p igual ao resto da divisão de p por 5;Aritmético de atribuição (módulo)%=

N/=4; equivale a N=N/4;Aritmético de atribuição (divisão)/=

Total=subtotal-desconto;Subtração-

A=A+1;Soma+

N*=2; equivale a N=N*2;Aritmético de atribuição (multiplicação)

*=

A=5; caracter=‘B’;Atribuição=

ExemploSignificadoOp.

Operadores:

Introdução à Linguagem C

Prof. Y

andre Maldonado -

25

• Alguns cuidados devem ser tomados quando se utiliza os operadores de incremento:• k=3*n++; é equivalente a k=(3*n); n=n+1;• k=3*++n é equivalente a n=n+1; k=3*(n);

Introdução à Linguagem C

Prof. Y

andre Maldonado -

26

• Outros operadores:• Relacionais:

• Lógicos:

Diferente!=

Igual==

Menor igual<=

Menor<

Maior igual>=

Maior>

SignificadoOp.

Lógico de negação!

Lógico OU||

Lógico E&&

SignificadoOp.

Introdução à Linguagem C

Prof. Y

andre Maldonado -

27

• Tabela de precedência de operadores:

Menor

Menor igual

Maior

Maior igual

<

<=

>

>=

Adição

Subtração

+

-

Multiplicação

Divisão

Resto

*

/

%

Incremento

Decremento

Lógico Não

++

--

!

TipoOp.

TipoOp.

Atribuição

Atribuição (mult.)

Atribuição (div.)

Atribuição (resto)

Atribuição (adição)

Atribuição (subt.)

=

*=

/=

%=

+=

-=

OU (lógico)||

E (lógico)&&

Igual

Diferente

==

!=

Menor

Menor igual

Maior

Maior igual

<

<=

>

>=

Introdução à Linguagem C

Prof. Y

andre Maldonado -

28

Introdução à Linguagem C

Prof. Y

andre Maldonado -

29

• Comandos de Decisão (Estruturas de Seleção)• if-else;• switch;

• Comando if-else• Estrutura geral ⇒

Esta estrutura de seleção écapaz de tomar uma decisãosimples, se a expressão deteste for verdadeira, o blocode instruções 1 será executado e o 2 ignorado. Se a expressão de teste for falsa acontecerá o contrário;

A palavra else pode ser omitida juntamente com o seu bloco de instruções (bloco 2). Neste caso, caso a expressão de teste seja falsa, a execução salta para a próxima instrução seguinte ao bloco 1;

if (expressão de teste){

instrução 1;instrução 2;...instrução n;

}else

{instrução 1;instrução 2;...instrução n;

}

if (expressão de teste){

instrução 1;instrução 2;...instrução n;

}else

{instrução 1;instrução 2;...instrução n;

}

Bloco 2

Bloco 1

Introdução à Linguagem C

Prof. Y

andre Maldonado -

30

• Exemplo de programa com if-else: dados dois valores inteiros X e Y descubra qual é o maior;

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

void main(){

int X, Y;

printf ("Digite um valor inteiro para X: ");scanf ("%d", &X);printf ("Digite um valor inteiro para Y: ");scanf ("%d", &Y);if (X>Y)

{printf ("O valor de X é maior que o de Y.\n");

}else

{printf ("O valor de Y é maior que o de X.\n");

}getch ();

}

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

void main(){

int X, Y;

printf ("Digite um valor inteiro para X: ");scanf ("%d", &X);printf ("Digite um valor inteiro para Y: ");scanf ("%d", &Y);if (X>Y)

{printf ("O valor de X é maior que o de Y.\n");

}else

{printf ("O valor de Y é maior que o de X.\n");

}getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

31

• O comando switch:• Instrução de seleção

múltipla;• Equivalente ao case

do Pascal;• Permite a seleção

exclusiva de um entre vários blocos de instruções;

• Forma geral ⇒

switch (expressão){case constante1:

instrução 1;...instrução n;break;

case constante2:instrução 1;...instrução n;break;

...case constante n:

instrução 1;...instrução n;break;

default:instrução 1;...instrução n;

}

switch (expressão){case constante1:

instrução 1;...instrução n;break;

case constante2:instrução 1;...instrução n;break;

...case constante n:

instrução 1;...instrução n;break;

default:instrução 1;...instrução n;

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

32

• Observações referentes à sintaxe:• O corpo do switch deve estar entre chaves;• O corpo de cada case pode conter um número

qualquer de instruções, sendo que a última deve ser um break. Caso este break não apareça, todas as instruções que estiverem dentro do switch(inclusive dos demais case’s) que aparecerem na seqüência serão executadas;

• A instrução break causa a saída imediata do corpo do switch;

• Quando a instrução switch é executada, a expressão é avaliada e o controle é transferido diretamente para o grupo de instruções correspondentes ao valor de expressão;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

33

• Se nenhum case corresponder ao valor da expressão, o grupo de instruções declaradas em default serão executadas. Isto quando o default existir, pois ele éopcional;

• O padrão ANSI C determina que um switch possa ter pelo menos 257 comandos case;

• O comando switch só pode testar igualdade, enquanto que o if pode avaliar expressões lógicas e relacionais;

• Duas constantes case no mesmo switch não podem ter o mesmo valor;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

34

• Exemplo de programa com o comando switch:

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

void main (){

char op;

printf ("Escolha uma opcao: \n\n");printf (" 1 - Primeira opcao;\n\n");printf (" 2 - Segunda opcao;\n\n");printf (" 3 - Terceira opcao;\n\n");printf (" 4 - Quarta opcao;\n\n");op=getch();

switch (op){

case '1':printf ("Voce escolheu a primeira opcao!\n\n");break;

case '2':printf ("Voce escolheu a segunda opcao!\n\n");break;

case '3':printf ("Voce escolheu a terceira opcao!\n\n");break;

case '4':printf ("Voce escolheu a quarta opcao!\n\n");break;

default:printf ("Voce nao escolheu nenhuma das opcoes oferecida s!\n\n");

}getch ();

}

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

void main (){

char op;

printf ("Escolha uma opcao: \n\n");printf (" 1 - Primeira opcao;\n\n");printf (" 2 - Segunda opcao;\n\n");printf (" 3 - Terceira opcao;\n\n");printf (" 4 - Quarta opcao;\n\n");op=getch();

switch (op){

case '1':printf ("Voce escolheu a primeira opcao!\n\n");break;

case '2':printf ("Voce escolheu a segunda opcao!\n\n");break;

case '3':printf ("Voce escolheu a terceira opcao!\n\n");break;

case '4':printf ("Voce escolheu a quarta opcao!\n\n");break;

default:printf ("Voce nao escolheu nenhuma das opcoes oferecida s!\n\n");

}getch ();

}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

35

• Exercício:

Faça um algoritmo para calcular o valor total a pagar por um consumidor que abasteceu seu carro, sabendo que serão informados o tipo de combustível escolhido (G/A/D) e o número de litros consumido. Considere os seguintes preços por litro de combustível:

– Gasolina R$ 1,50;– Álcool R$ 0,90;– Diesel R$ 0,80.

Introdução à Linguagem C

Prof. Y

andre Maldonado -

36

• Comandos de Iteração(Estruturas de Controle de Repetições)

• Controle de Repetição por Contador:• Comando for;

• Controle de Repetição Lógico:• Iteração Pré-teste (equivalente ao while do Pascal):

• Comando while;

• Iteração Pós-teste (equivalente ao repeat do Pascal):

• Comando do-while;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

37

• Comando for:• Permite a repetição da execução de um bloco de

instruções controlada por um contador;• Forma geral:

for (inicialização; condição; incremento)bloco de instruções;

• Onde:• inicialização: é a atribuição do valor inicial ao

contador;• condição: estabelece a condição limite de parada para

a repetição do laço;• incremento: estabelece o valor segundo o qual o

contador deve variar;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

38

• Exemplo de uso do comando for: um programa que imprime os números de 1 a 20 na tela;

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

void main (){

int i;for (i=1;i<=20;i++)

printf ("Numero: %d\n",i);getch ();

}

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

void main (){

int i;for (i=1;i<=20;i++)

printf ("Numero: %d\n",i);getch ();

}

• Exercícios:1. Durante trinta dias de um determinado

mês, foram colhidas as temperaturas médias diárias de uma determinada região em graus celsius. Faça um algoritmo que calcule e informe a temperatura média do mês, e a temperatura mais alta do mês.

2. Faça um algoritmo que calcule o fatorial de um número inteiro fornecido pelo usuário.

Introdução à Linguagem C

Prof. Y

andre Maldonado -

39

Introdução à Linguagem C

Prof. Y

andre Maldonado -

40

• Comando while:• Permite a repetição da execução de um bloco de

instruções controlada por uma condição lógica;

• Forma geral:while (condição)

bloco de instruções;

• Onde:• condição: pode ser qualquer expressão (aritmática, lógica

ou relacional), e é verdadeira quando diferente de 0 (zero);• bloco de instruções: comando ou bloco de comandos que

devem ter a execução realizada enquanto a condição for verdadeira;

• A execução do laço while se encerra quando a condição for falsa, neste caso o controle de execução passa para a primeira linha que aparecer após o bloco de instruções;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

41

• Exemplo de uso do comando while: um programa que imprime na tela os números inteiros digitados pelo usuário, até que este digite um valor negativo;

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

{int n=0;while (n>=0)

{printf ("Digite um numero: ");scanf ("%d",&n);

}}

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

{int n=0;while (n>=0)

{printf ("Digite um numero: ");scanf ("%d",&n);

}}

Introdução à Linguagem C

Prof. Y

andre Maldonado -

42

• Comando do-while:• Permite a repetição da execução de um bloco de instruções

controlada por uma condição lógica. Esta condição étestada após a execução do bloco, isso significa que um laço do-while seráexecutado pelo menos uma vez;

• Forma geral:do {

bloco de instruções;} while (condição);

• Onde:• condição: pode ser qualquer expressão (aritmática, lógica ou

relacional), e é verdadeira quando diferente de 0 (zero);• bloco de instruções: comando ou bloco de comandos que devem

ter a execução realizada enquanto a condição for verdadeira;• A execução do laço do-while se encerra quando a condição for falsa,

neste caso o controle de execução passa para a primeira linha que aparecer após o comando do-while;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

43

• Exemplo de uso do comando do-while: um programa que imprime na tela os números inteiros digitados pelo usuário, até que este digite um valor negativo;

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

void main (){

int n;do {

printf ("Digite um numero: ");scanf ("%d",&n);

} while (n>=0);}

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

void main (){

int n;do {

printf ("Digite um numero: ");scanf ("%d",&n);

} while (n>=0);}

• Exercícios:1. Faça um algoritmo para calcular a soma entre os números de

um conjunto de números inteiros e positivos a ser fornecido pelo usuário utilizando os comandos while e do-while;

2. Faça um algoritmo que permita ao usuário inserir dados para as seguintes perguntas:• Idade (inteiro);• Altura (real);• Sexo (caracter, m ou f);Sabe-se que o número de entrevistados é indefinido, e depois

de inseridos os dados o algoritmo deverá informar:• O número de mulheres cuja idade está entre 20 e 35 anos;• O número de homens que tem mais de 1.80m de altura;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

44

• Agregados de Dados• Homogêneos: conjuntos (ou matrizes)

• Coleção de variáveis de mesmo tipo referenciadas por um nome comum;

• Cada elemento específico é acessado através de um índice;

• Os elementos ocupam posições contíguas de memória;• Equivalente ao array (vetor) em Pascal;

• Heterogêneos: estruturas• Reúnem uma coleção de variáveis que podem ser

referenciadas por um nome;• Maneira conveniente de se ter informações relacionadas

agrupadas;• Equivalente ao record(registro) em Pascal;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

45

• Vetores e Matrizes (Agregados Homogêneos)• Forma geral:

tipo nome_mat [tamanho];• Exemplo 1: uma vetor para armazenar até 10 valores inteiros:

int vetor_inteiro [10];• Exemplo 2: uma vetor para armazenar 20 caracteres

(equivalente a stringdo Pascal):char nome_pessoa [20];

• Em C, toda vetor tem 0 como o índice do seu primeiro elemento. Portanto, quando você escreve

char p[10];você está declarando uma vetor de caracteres que tem dez elementos, p[0] atép[9] .

Introdução à Linguagem C

Prof. Y

andre Maldonado -

46

• O seguinte programa carrega uma matriz de inteiros com os números de 0 a 99:

Introdução à Linguagem C

Prof. Y

andre Maldonado -

47

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

void main (){

int x[100];int i;for (i=0;i<100;++i)

x[i]=i;for (i=0;i<100;++i)

printf (" %d ,",x[i]);printf ("\n\n");getch();

}

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

void main (){

int x[100];int i;for (i=0;i<100;++i)

x[i]=i;for (i=0;i<100;++i)

printf (" %d ,",x[i]);printf ("\n\n");getch();

}

• Para a leitura de vetores de caracteres, pode-se utilizar a função gets(), da biblioteca <stdio.h>;• Forma geral:

gets(matriz_a_ser_lida);• Exemplo: ler uma cadeia de caracteres a ser digitada pelo

usuário na matriz nomedescrita a seguir:char nome[25];...gets(nome);

• Para escrever uma vetor de caracteres na tela, pode-se utilizar a função puts(), também presente na biblioteca <stdio.h>;• Forma geral:

puts(matriz_a_ser_escrita);

Introdução à Linguagem C

Prof. Y

andre Maldonado -

48

Introdução à Linguagem C

Prof. Y

andre Maldonado -

49

• O seguinte programa lê uma matriz de caracteres (string) digitada pelo usuário e posteriormente imprime na tela:

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

void main (){

char nome[25];printf ("Digite um nome: ");gets(nome);printf ("O nome que voce digitou e: ");puts(nome);

// ou printf ("O nome que voce digitou e: %s\n\n", nome);getch ();

}

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

void main (){

char nome[25];printf ("Digite um nome: ");gets(nome);printf ("O nome que voce digitou e: ");puts(nome);

// ou printf ("O nome que voce digitou e: %s\n\n", nome);getch ();

}

• Estruturas:• A palavra chave struct informa ao compilador que um modelo de

estrutura está sendo definido;• Forma geral:

struct identificador {tipo nome_da_variável;tipo nome_da_variável;tipo nome_da_variável;...}

• Exemplo:struct pessoa

{char nome[30];char endereco[40];char cidade[20];int idade;

};

Introdução à Linguagem C

Prof. Y

andre Maldonado -

50

A declaração mostrada ao lado apenas define a forma da estrutura, neste caso ainda não foi criada nenhuma variável, portanto ainda não houve gasto de memória.

A declaração mostrada ao lado apenas define a forma da estrutura, neste caso ainda não foi criada nenhuma variável, portanto ainda não houve gasto de memória.

Introdução à Linguagem C

Prof. Y

andre Maldonado -

51

• Declaração de Matrizes Bidimensionais• Para declarar uma matriz bidimensional de

inteiros de tamanho 10x10, pode-se fazer:

int matriz [10] [10];

• Para atribuir o valor 30 à célula de índices 5 (na primeira dimensão) e 4 (na segunda dimensão), pode-se fazer:

matriz [5][4]=30;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

52

• Para se criar uma variável do tipo da estrutura definida anteriormente, você deve declarar:struct pessoa cliente;assim, você estaria criando uma variável chamada cliente do tipo da estrutura pessoa;

• A quantidade de bytes consumidos por uma variável de um tipo de estrutura equivale a soma dos valores gastos por cada um de seus membros (ou campos);• No caso anterior teríamos: 30+40+20+2=92 bytes;

• Os membros individuais de uma estrutura são referenciados através do operador ponto. Para atribuir o valor 45 a idade da variável cliente declarada anteriormente, poderíamos ter:cliente.idade=45;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

53

• Matrizes de Estruturas:• Pode-se criar matrizes de estruturas;• Para criar uma matriz para armazenar

informações referentes a 50 pessoas, de acordo com a estrutura pré-definida anteriormente, poderíamos fazer:struct pessoa clientes[50];

• Neste caso, para atribuirmos o valor 30 ao campo idade do cliente de índice 17, poderíamos fazer:clientes[17].idade=30;

Introdução à Linguagem C

Prof. Y

andre Maldonado -

54

• Exercícios:1. Faça um algoritmo que permita ao usuário digitar

valores inteiros e positivos para uma matriz de tamanho físico 10X10, e que ao final informe qual é a média, e o valor do maior número digitado.

2. Faça um algoritmo que permita armazenar os nomes e as quatro notas bimestrais para um total de 20 alunos. Depois de armazenadas as informações, o algoritmo deverá fazer uma varredura sobre as mesma a fim de identificar qual dos alunos obteve a maior nota no 3ºbimestre e informar o seu nome.

3. Faça um algoritmo que armazene as seguintes informações sobre um conjunto de no máximo 30 carros que estão a venda: modelo, ano, preço, e placa. Ao final, o algoritmo deve percorrer as informações a fim de descobrir qual dos carros é o mais barato, e deve informar seu modelo e ano.