Introdução à Linguagem C
Prof. Yandre Maldonado - 1
Prof. Yandre Maldonado e Gomes da Costa
Introdução à Linguagem C
Prof. Yandre Maldonado - 2
• Linguagem C:
– Desenvolvida por Dennis Ritchie nos laboratórios
da AT&T Bell (EUA) no início dos anos 70;
Algol
Algol
BCPL
BCPL
BB
CC
(1960
(1960––Europa)
Europa)
(Inglaterra)
(Inglaterra)
(1970
(1970––EUA)
EUA)
(1972
(1972––EUA)
EUA)
– 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. Yandre Maldonado - 3
• C vs. C++
C
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++;
Introdução à Linguagem C
Prof. Yandre 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
“C éé aa linguagem
linguagem de
de um
um programador”
programador”
Herbert
Herbert Schildt
Schildt
Introdução à Linguagem C
Prof. Yandre 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
“C éé uma
uma linguagem
linguagem versátil”
versátil”
Introdução à Linguagem C
Prof. Yandre Maldonado - 6
• C: linguagem de nível médio;
C
Alto
Altonível:
nível:
-- Estruturada;
Estruturada;
-- Modular;
Modular;
-- Portátil;
Portátil;
Baixo
Baixonível:
nível:
-- Linguagem
Linguagem de
demáquina;
máquina;
-- Bits
Bitseebytes;
bytes;
-- Endereços
Endereçosde
dememória;
memória;
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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. Yandre Maldonado - 9
• Forma geral de um programa em C:
inclusão de arquivos de cabeçalho
declaração de variáveis globais
main () → 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ções
declaraçã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. Yandre 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()()
{{}}
Bons exemplos
((
))
{{
}}
main
main
()()
{}{}
Maus exemplos
Introdução à Linguagem C
Prof. Yandre 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:
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
main
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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
#include <stdio.h>
<stdio.h>
#include
<conio.h>
#include <conio.h>
void
void main
main ()
()
{{
printf
printf (“Oi
(“Oi mundo.”);
mundo.”);
getch
();
getch ();
}}
#include
#include <stdio.h>
<stdio.h>
#include
<conio.h>
#include <conio.h>
void
void main()
main()
{{
clrscr();
clrscr();
printf("oi
printf("oi mundo");
mundo");
getch
();
getch ();
}}
Introdução à Linguagem C
Prof. Yandre 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 controle
para iniciar uma nova linha;
• Códigos de Formatação
Código
Significado
%c
Caractere simples
%d
Decimal
%ld
Long
%e
Notação científica
%f
Ponto flutuante
%o
Octal
%s
Cadeia de caracteres
%u
Decimal sem sinal
%x
Hexadecimal
Introdução à Linguagem C
Prof. Yandre Maldonado - 15
• Tipos de variáveis:
Tipo
Bits
Escala
void
0
Sem valor
char
8
-128 a 127
int
16
-32768 a 32767
float
32
-3.4E+38 a 3.4E+38
double
64
-1.7E+308 a 1.7E+308
long int
32
-3.4E+38 a 3.4E+38
unsigned char
8
0 a 255
unsigned int
16
0 a 65535
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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
#include <stdio.h>
<stdio.h>
#include <conio.h>
#include <conio.h>
main()
main()
{
{
char
char letra;
letra;
clrscr();
clrscr();
letra='a';
letra='a';
putchar(letra);
putchar(letra);
getch();
getch();
}}
Introdução à Linguagem C
Prof. Yandre 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
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
main()
main()
{{
char
char letra;
letra;
clrscr();
clrscr();
printf
printf ("Digite
("Digite um
um caracter:
caracter: ");
");
letra=getch();
letra=getch();
printf ("\nCaractere digitado: %c\n", letra);
printf ("\nCaractere digitado: %c\n", letra);
getch
getch ();
();
}}
Introdução à Linguagem C
Prof. Yandre 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
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
main()
main()
{{
char
char letra;
letra;
clrscr();
clrscr();
printf
printf ("Digite
("Digite um
um caracter:
caracter: ");
");
letra=getche();
letra=getche();
printf ("\nCaractere digitado: %c", letra);
printf ("\nCaractere digitado: %c", letra);
getch
getch ();
();
}}
Introdução à Linguagem C
Prof. Yandre Maldonado - 20
• Programa para calcular a área de um
círculo:
#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
main
main ()
()
{{
float
float R,
R, Area;
Area;
clrscr();
clrscr();
printf
printf ("Digite
("Digite oo raio
raio da
da circunferencia:
circunferencia: ");
");
scanf
scanf ("%f",&R);
("%f",&R);
Area
Area == 3.14*R*R;
3.14*R*R;
printf
printf ("A
("A area
area do
do circulo
circulo ee igual
igual a:
a: %f\n\n",Area);
%f\n\n",Area);
getch
getch ();
();
}}
Introdução à Linguagem C
Prof. Yandre 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);
Introdução à Linguagem C
Prof. Yandre Maldonado - 22
#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
#include
#include <math.h>
<math.h>
Volume do Cilindro
void
void main
main ()
()
{{
float
float R,
R, H,
H, V;
V;
printf
printf ("Calculo
("Calculo do
do Volume
Volume de
de um
um Cilindro\n\n");
Cilindro\n\n");
printf
printf ("Digite
("Digite oo valor
valor do
do raio
raio da
da base
base do
do cilindro:
cilindro: ");
");
scanf
scanf ("%f",
("%f", &R);
&R);
printf
printf ("Digite
("Digite oo valor
valor da
da altura
altura do
do cilindro:
cilindro: ");
");
scanf
scanf ("%f",
("%f", &H);
&H);
V=3.14*pow(R,2)*H;
V=3.14*pow(R,2)*H;
printf
printf ("\n\nO
("\n\nO Volume
Volume do
do Cilindro
Cilindro ‚‚ igual
igual a:
a: %.2f",
%.2f", V);
V);
printf
printf ("\n\n\nFim
("\n\n\nFim da
da execução!\n");
execução!\n");
getch();
getch();
}}
Introdução à Linguagem C
Prof. Yandre Maldonado - 23
#include
#include <stdio.h>
<stdio.h>
#include
<conio.h>
Raízes da Equação do 2º
#include <conio.h>
#include
#include <math.h>
<math.h>
void
void main
main ()
()
{{
float
float a,
a, b,
b, c,
c, delta,
delta, x1,
x1, x2;
x2;
printf
("Calculo
das
ra¡zes
printf ("Calculo das ra¡zes reais
reais da
da equacao
equacao do
do tipo
tipo
ax2+bx+c=0\n\n");
ax2+bx+c=0\n\n");
printf
printf ("Digite
("Digite oo valor
valor do
do coeficiente
coeficiente a:
a: ");
");
scanf
("%f",
&a);
scanf ("%f", &a);
printf
printf ("Digite
("Digite oo valor
valor do
do coeficiente
coeficiente b:
b: ");
");
scanf
("%f",
&b);
scanf ("%f", &b);
printf
printf ("Digite
("Digite oo valor
valor do
do coeficiente
coeficiente c:
c: ");
");
scanf
scanf ("%f",
("%f", &c);
&c);
delta=b*b-4*a*c;
delta=b*b-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf
printf ("\n\nO
("\n\nO valor
valor de
de x1
x1 ‚:
‚: %f",
%f", x1);
x1);
printf
printf ("\nE
("\nE oo valor
valor de
de x2
x2 ‚:
‚: %f",
%f", x2);
x2);
printf
printf ("\n\n\nFim
("\n\n\nFim da
da execução!\n\n");
execução!\n\n");
getch
();
getch ();
}}
grau
Introdução à Linguagem C
Operadores:
Prof. Yandre Maldonado - 24
Op.
Significado
Exemplo
=
Atribuição
A=5; caracter=‘B’;
*=
Aritmético de atribuição
(multiplicação)
N*=2; equivale a N=N*2;
/=
Aritmético de atribuição (divisão)
N/=4; equivale a N=N/4;
%=
Aritmético de atribuição (módulo)
N%=5; equivale a p igual ao resto da divisão de p por 5;
+=
Aritmético de atribuição (adição)
N+=3; equivale a N=N+3;
-=
Aritmético de atribuição (subtração)
N-=2; equivale a N=N-2;
+
Soma
A=A+1;
-
Subtração
Total=subtotal-desconto;
*
Multiplicação
nota=nota*2;
/
Divisão
Comissão=lucro/4;
%
Módulo (retorna o resto da divisão)
Resto=8%3;
++
Incrementa de um o operando
i++;
--
Decrementade um o operando
j--;
Introdução à Linguagem C
Prof. Yandre 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. Yandre Maldonado - 26
• Outros operadores:
Op.
• Relacionais:
• Lógicos:
Significado
>
Maior
>=
Maior igual
<
Menor
<=
Menor igual
==
Igual
!=
Diferente
Op.
Significado
&&
Lógico E
||
Lógico OU
!
Lógico de negação
Introdução à Linguagem C
Prof. Yandre Maldonado - 27
• Tabela de precedência de operadores:
Op.
Tipo
++
-!
Incremento
Decremento
Lógico Não
*
/
%
Multiplicação
Divisão
Resto
+
-
Adição
Subtração
<
<=
>
>=
Menor
Menor igual
Maior
Maior igual
Introdução à Linguagem C
Prof. Yandre Maldonado - 28
Op.
Tipo
<
<=
>
>=
Menor
Menor igual
Maior
Maior igual
==
!=
Igual
Diferente
&&
E (lógico)
||
OU (lógico)
=
*=
/=
%=
+=
-=
Atribuição
Atribuição (mult.)
Atribuição (div.)
Atribuição (resto)
Atribuição (adição)
Atribuição (subt.)
Introdução à Linguagem C
Prof. Yandre Maldonado - 29
• Comandos de Decisão (Estruturas de Seleção)
if
• if-else;
if (expressão
(expressão de
de teste)
teste)
{{
• switch;
instrução
instrução 1;
1;
instrução
2;
instrução 2;
Bloco 1
• Comando if-else
...
...
instrução
instrução n;
n;
• Estrutura geral ⇒
}}
else
else
Esta estrutura de seleção é
{{
instrução
instrução 1;
1;
capaz de tomar uma decisão
instrução
2;
instrução 2;
...
...
simples, se a expressão de
Bloco 2
instrução
instrução n;
n;
}
teste for verdadeira, o bloco
}
de 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;
Introdução à Linguagem C
Prof. Yandre Maldonado - 30
• Exemplo de programa com if-else: dados dois
valores inteiros X e Y descubra qual é o maior;
#include
#include <stdio.h>
<stdio.h>
#include
<conio.h>
#include <conio.h>
void
void main()
main()
{{
int
int X,
X, Y;
Y;
printf
("Digite
inteiro para
para X:
X: ");
");
printf ("Digite um
um valor
valor inteiro
scanf
("%d",
&X);
scanf ("%d", &X);
printf
printf ("Digite
("Digite um
um valor
valor inteiro
inteiro para
para Y:
Y: ");
");
scanf
("%d",
&Y);
scanf ("%d", &Y);
if
if (X>Y)
(X>Y)
{{
printf
printf ("O
("O valor
valor de
de XX éé maior
maior que
que oo de
de Y.\n");
Y.\n");
}}
else
else
{{
printf
printf ("O
("O valor
valor de
de YY éé maior
maior que
que oo de
de X.\n");
X.\n");
}}
getch
getch ();
();
}}
Introdução à Linguagem C
Prof. Yandre 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
switch (expressão)
(expressão)
{{
case
case constante1:
constante1:
instrução
instrução 1;
1;
...
...
instrução
instrução n;
n;
break;
break;
case
case constante2:
constante2:
instrução
instrução 1;
1;
...
...
instrução
instrução n;
n;
break;
break;
...
...
case
case constante
constante n:
n:
instrução
1;
instrução 1;
...
...
instrução
instrução n;
n;
break;
break;
default:
default:
instrução
instrução 1;
1;
...
...
instrução
instrução n;
n;
}}
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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. Yandre Maldonado - 34
• Exemplo de programa com o comando switch:
#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
void
main
void
main ()
()
{{
char
char op;
op;
printf
uma
\n\n");
printf ("Escolha
("Escolha
uma opcao:
opcao:
\n\n");
printf
("
1
Primeira
opcao;\n\n");
printf
("
1
Primeira
opcao;\n\n");
printf
printf ("
(" 2
2- Segunda
Segunda opcao;\n\n");
opcao;\n\n");
printf
("
3
Terceira
opcao;\n\n");
printf
("
3
Terceira
opcao;\n\n");
printf ("
4 - Quarta opcao;\n\n");
printf
("
4
Quarta
opcao;\n\n");
op=getch();
op=getch();
switch (op)
switch
(op)
{{
case
'1':
case
'1':("Voce escolheu a primeira opcao!\n\n");
printf
printf
("Voce escolheu a primeira opcao!\n\n");
break;
break;
case
'2':
case
'2':("Voce escolheu a segunda opcao!\n\n");
printf
printf
break; ("Voce escolheu a segunda opcao!\n\n");
break;
case
'3':
case
'3':("Voce escolheu a terceira opcao!\n\n");
printf
printf
break; ("Voce escolheu a terceira opcao!\n\n");
break;
case
'4':
case
'4':("Voce escolheu a quarta opcao!\n\n");
printf
printf
("Voce escolheu a quarta opcao!\n\n");
break;
break;
default:
default:
printf ("Voce nao escolheu nenhuma das opcoes oferecidas!\n\n");
}} printf ("Voce nao escolheu nenhuma das opcoes oferecidas!\n\n");
getch ();
}}getch ();
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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. Yandre 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. Yandre Maldonado - 38
• Exemplo de uso do comando for: um
programa que imprime os números de 1 a
20 na tela;
#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
void
void main
main ()
()
{{
int
int i;
i;
for
for (i=1;i<=20;i++)
(i=1;i<=20;i++)
printf
printf ("Numero:
("Numero: %d\n",i);
%d\n",i);
getch
getch ();
();
}}
Introdução à Linguagem C
Prof. Yandre Maldonado - 39
• 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. Yandre 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. Yandre 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
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
void
void main
main ()
()
{{
int
int n=0;
n=0;
while
while (n>=0)
(n>=0)
{{
printf
printf ("Digite
("Digite um
um numero:
numero: ");
");
scanf
scanf ("%d",&n);
("%d",&n);
}}
}}
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
void
void main
main ()
()
{{
int
int n;
n;
do
do {{
printf
printf ("Digite
("Digite um
um numero:
numero: ");
");
scanf
scanf ("%d",&n);
("%d",&n);
}} while
while (n>=0);
(n>=0);
}}
Introdução à Linguagem C
Prof. Yandre Maldonado - 44
•
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. Yandre Maldonado - 45
•
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. Yandre Maldonado - 46
•
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 string do 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. Yandre Maldonado - 47
•
O seguinte programa carrega uma matriz de inteiros
com os números de 0 a 99:
#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
void
void main
main ()
()
{{
int
int x[100];
x[100];
int
int i;
i;
for
for (i=0;i<100;++i)
(i=0;i<100;++i)
x[i]=i;
x[i]=i;
for
for (i=0;i<100;++i)
(i=0;i<100;++i)
printf
printf ("
(" %d
%d ,",x[i]);
,",x[i]);
printf
printf ("\n\n");
("\n\n");
getch();
getch();
}}
Introdução à Linguagem C
Prof. Yandre Maldonado - 48
•
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 nome descrita 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. Yandre Maldonado - 49
•
O seguinte programa lê uma matriz de caracteres
(string) digitada pelo usuário e posteriormente imprime
na tela:
#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h>
void
void main
main ()
()
{{
char
char nome[25];
nome[25];
printf
printf ("Digite
("Digite um
um nome:
nome: ");
");
gets(nome);
gets(nome);
printf
printf ("O
("O nome
nome que
que voce
voce digitou
digitou e:
e: ");
");
puts(nome);
puts(nome);
//
// ou
ou printf
printf ("O
("O nome
nome que
que voce
voce digitou
digitou e:
e: %s\n\n",
%s\n\n", nome);
nome);
getch
getch ();
();
}}
Introdução à Linguagem C
Prof. Yandre Maldonado - 50
•
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;
...
}
AAdeclaração
Exemplo:
declaraçãomostrada
mostradaao
aolado
lado
struct pessoa
apenas
apenasdefine
defineaaforma
formada
da
{
estrutura,
estrutura,neste
nestecaso
casoainda
aindanão
não
char nome[30];
foi
criada
nenhuma
variável,
foi
criada
nenhuma
variável,
char endereco[40];
portanto
portantoainda
aindanão
nãohouve
houvegasto
gasto
char cidade[20];
de
int idade;
dememória.
memória.
};
Introdução à Linguagem C
Prof. Yandre 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. Yandre 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. Yandre 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. Yandre 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.
Download

Introdução à Linguagem C