Sei sulla pagina 1di 54

Prof.

Yandre Maldonado - 1
Introdução à Linguagem C

Prof. Yandre Maldonado e Gomes da Costa


Prof. Yandre Maldonado - 2
Introdução à Linguagem C

• 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;
Prof. Yandre Maldonado - 3
Introdução à Linguagem C

• 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++;
Prof. Yandre Maldonado - 4
Introdução à Linguagem C

• 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
Prof. Yandre Maldonado - 5
Introdução à Linguagem C

• 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”
Prof. Yandre Maldonado - 6
Introdução à Linguagem C

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

Alto
Altonível:
nível: Baixo
Baixonível:
nível:
-- Estruturada;
Estruturada; -- Linguagem
Linguagem dedemáquina;
máquina;
-- Modular;
Modular; -- Bits
Bitseebytes;
bytes;
-- Portátil;
Portátil; -- Endereços
Endereçosde dememória;
memória;
Introdução à Linguagem C
• Primeiros passos na Linguagem C:
Prof. Yandre Maldonado - 7

• 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;
Prof. Yandre Maldonado - 8
Introdução à Linguagem C

• 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;
Prof. Yandre Maldonado - 9
Introdução à Linguagem C

• 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.
Prof. Yandre Maldonado - 10
Introdução à Linguagem C

• 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
Prof. Yandre Maldonado - 11
Introdução à Linguagem C

• 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
Prof. Yandre Maldonado - 12
Introdução à Linguagem C

• 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
• Instruções de programa:
Prof. Yandre Maldonado - 13

• 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>
#include
<stdio.h>
<conio.h>
#include <conio.h>
void
void main()
main()
#include
#include <stdio.h>
<stdio.h> {{
#include <conio.h>
#include <conio.h> clrscr();
clrscr();
void
void main
main () printf("oi
() printf("oi mundo");
mundo");
{{ getch ();
getch ();
printf
printf (“Oi
(“Oi mundo.”);
mundo.”); }}
getch ();
getch ();
}}
Introdução à Linguagem C
• scanf()
Prof. Yandre Maldonado - 14

• 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 Código Significado
%c Caractere simples
utilizada dentro da string de controle %d Decimal
para iniciar uma nova linha; %ld Long
%e Notação científica
• Códigos de Formatação %f Ponto flutuante
%o Octal
%s Cadeia de caracteres
%u Decimal sem sinal
%x Hexadecimal
Introdução à Linguagem C
• Tipos de variáveis:
Prof. Yandre Maldonado - 15

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
• Declaração de variáveis:
Prof. Yandre Maldonado - 16

• 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
• Outras funções de E/S:
Prof. Yandre Maldonado - 17

• 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
• Outras funções de E/S:
Prof. Yandre Maldonado - 18

• 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
• Outras funções de E/S:
Prof. Yandre Maldonado - 19

• 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
• Programa para calcular a área de um
Prof. Yandre Maldonado - 20

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
• Exercícios:
Prof. Yandre Maldonado - 21

• 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);
Prof. Yandre Maldonado - 22
Introdução à Linguagem C

#include
#include <stdio.h>
<stdio.h>
#include
#include <conio.h>
<conio.h> Volume do Cilindro
#include
#include <math.h>
<math.h>

void
void main
main ()
()
{{
float
float R,
R, H,
H, V;
V;
printf
printf ("Calculo
("Calculo dodo 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 dodo 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 dada execução!\n");
execução!\n");
getch();
getch();
}}
Introdução à Linguagem C
#include
#include <stdio.h>
Prof. Yandre Maldonado - 23

<stdio.h>
#include <conio.h>
#include <conio.h> Raízes da Equação do 2º grau
#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
printf ("Calculo das ra¡zes reais
("Calculo das ra¡zes 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 dodo coeficiente
coeficiente a: a: ");
");
scanf ("%f", &a);
scanf ("%f", &a);
printf
printf ("Digite
("Digite oo valor
valor dodo coeficiente
coeficiente b: b: ");
");
scanf ("%f", &b);
scanf ("%f", &b);
printf
printf ("Digite
("Digite oo valor
valor dodo 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 ();
}}
Introdução à Linguagem C
Operadores:
Prof. Yandre Maldonado - 24

Op. Significado Exemplo


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

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


(multiplicação)
/= 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
• Alguns cuidados devem ser tomados quando se
Prof. Yandre Maldonado - 25

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
• Outros operadores:
Prof. Yandre Maldonado - 26

• Relacionais: Op. Significado


> Maior
>= Maior igual
< Menor
<= Menor igual
== Igual
!= Diferente

• Lógicos: Op. Significado


&& Lógico E
|| Lógico OU
! Lógico de negação
Introdução à Linguagem C
• Tabela de precedência de operadores:
Prof. Yandre Maldonado - 27

Op. Tipo
++ Incremento
-- Decremento
! Lógico Não
* Multiplicação
/ Divisão
% Resto
+ Adição
- Subtração
< Menor
<= Menor igual
> Maior
>= Maior igual
Prof. Yandre Maldonado - 28
Introdução à Linguagem C
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
• Comandos de Decisão (Estruturas de Seleção)
Prof. Yandre Maldonado - 29

• if-else; if
if (expressão
(expressão de
de teste)
teste)
{{
• switch; instrução
instrução 1;
1;
instrução 2;
• Comando if-else Bloco 1 instrução 2;
...
...
instrução
instrução n;
• Estrutura geral ⇒ }}
n;
else
Esta estrutura de seleção é else
{{
instrução
instrução 1;
capaz de tomar uma decisão instrução
1;
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
• Exemplo de programa com if-else: dados dois
Prof. Yandre Maldonado - 30

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
printf ("Digite um
("Digite valor inteiro
um valor inteiro para
para X:X: ");
");
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
• O comando switch:
Prof. Yandre Maldonado - 31

switch
switch (expressão)
(expressão)
{{
• Instrução de seleção case
case constante1:
constante1:
múltipla; instrução
instrução 1;
...
1;
...
• Equivalente ao case instrução
instrução n;
break;
n;
break;
do Pascal; case
case constante2:
constante2:
instrução
instrução 1;
1;
• Permite a seleção ...
...
instrução
instrução n;
n;
exclusiva de um break;
break;
...
entre vários blocos ...
case
case constante
constante n:n:
instrução 1;
de instruções; instrução 1;
...
...
instrução
instrução n;
• Forma geral ⇒ break;
break;
n;
default:
default:
instrução
instrução 1;
1;
...
...
instrução
instrução n;
n;
}}
Introdução à Linguagem C
• Observações referentes à sintaxe:
Prof. Yandre Maldonado - 32

• 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;
Prof. Yandre Maldonado - 33
Introdução à Linguagem C

• 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
• Exemplo de programa com o comando switch:
Prof. Yandre Maldonado - 34

#include
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
<conio.h>
void main
void
{{ main ()
()
char
char op;
op;
printf
printf ("Escolha
uma
uma opcao:
\n\n");
printf ("Escolha
(" 1 - opcao:
Primeira \n\n");
opcao;\n\n");
printf
printf (" 1 - Primeira opcao;\n\n");
printf ("
printf (" 2
(" 32--- Segunda
Segunda opcao;\n\n");
Terceira opcao;\n\n");
opcao;\n\n");
printf
printf (" (" 3 - Terceira opcao;\n\n");
4 - Quarta opcao;\n\n");
printf ("
op=getch(); 4 - Quarta opcao;\n\n");
op=getch();
switch (op)
switch
{{ (op)
case
case '1':
'1':("Voce escolheu a primeira opcao!\n\n");
printf
printf
break; ("Voce escolheu a primeira opcao!\n\n");
casebreak;
'2':
case '2':("Voce escolheu a segunda opcao!\n\n");
printf
break; ("Voce escolheu a segunda opcao!\n\n");
printf
casebreak;
'3':
case '3':("Voce escolheu a terceira opcao!\n\n");
printf
break; ("Voce escolheu a terceira opcao!\n\n");
printf
casebreak;
'4':
case '4':("Voce escolheu a quarta opcao!\n\n");
printf
printf
break; ("Voce escolheu a quarta opcao!\n\n");
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 ();
Prof. Yandre Maldonado - 35
Introdução à Linguagem C

• 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.
Prof. Yandre Maldonado - 36
Introdução à Linguagem C

• 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;
Prof. Yandre Maldonado - 37
Introdução à Linguagem C

• 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;
Prof. Yandre Maldonado - 38
Introdução à Linguagem C

• 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 ();
();
}}
Prof. Yandre Maldonado - 39
Introdução à Linguagem C

• 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
• Comando while:
Prof. Yandre Maldonado - 40

• 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
• Exemplo de uso do comando while: um
Prof. Yandre Maldonado - 41

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
• Comando do-while:
Prof. Yandre Maldonado - 42

• 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
• Exemplo de uso do comando do-while: um
Prof. Yandre Maldonado - 43

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);
}}
Prof. Yandre Maldonado - 44
Introdução à Linguagem C
• 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
• Agregados de Dados
Prof. Yandre Maldonado - 45

• 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;
Prof. Yandre Maldonado - 46
Introdução à Linguagem C
• 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].
Prof. Yandre Maldonado - 47
Introdução à Linguagem C
• 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
• Para a leitura de vetores de caracteres, pode-se
Prof. Yandre Maldonado - 48

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);
Prof. Yandre Maldonado - 49
Introdução à Linguagem C
• 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 umum 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 ();
();
}}
Prof. Yandre Maldonado - 50
Introdução à Linguagem C
• 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: AAdeclaração
declaraçãomostrada
mostradaaoaolado
lado
struct pessoa apenas
apenasdefine
defineaaforma
formadada
{ estrutura,
estrutura,neste
nestecaso
casoainda
aindanão
não
char nome[30];
foi
foi criada
criada nenhuma
nenhuma variável,
variável,
char endereco[40];
char cidade[20]; portanto
portantoainda
aindanão
nãohouve
houvegasto
gasto
int idade; de
dememória.
memória.
};
Prof. Yandre Maldonado - 51
Introdução à Linguagem C

• 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;
Prof. Yandre Maldonado - 52
Introdução à Linguagem C
• 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
• Matrizes de Estruturas:
Prof. Yandre Maldonado - 53

• 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
• Exercícios:
Prof. Yandre Maldonado - 54

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.

Potrebbero piacerti anche