Prof. Yandre Maldonado e Gomes da Costa - din.uem.bryandre/AEDEP/linguagemC-grande.pdf ·...
Transcript of Prof. Yandre Maldonado e Gomes da Costa - din.uem.bryandre/AEDEP/linguagemC-grande.pdf ·...
• 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.