Você está na página 1de 89

Algoritmos e Estrutura de

Dados II
Hello!
Fabiano Utiyama
fabiano.utiyama@ifpr.edu.br

2
Introdução
1 Let’s start
Introdução
⊹ A linguagem C foi desenvolvida por Dennis
Ritchie nos laboratórios da AT&T Bell
(EUA) no início dos anos 70
Algol BCPL B C
(1960 – Europa) (Inglaterra) (1970 – EUA) (1972 – EUA)

4
Introdução
⊹ 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
5
Introdução
⊹ C vs C++

C
C++

6
Introdução
⊹ 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++
7
Introdução
⊹ A linguagem C é utilizada na criação de
diversos tipos de aplicação, tais como:
⊹ Sistemas Operacionais (UNIX)
⊹ Processadores de Texto
⊹ Planilhas Eletrônicas
⊹ Sistemas Gerenciadores de BD
⊹ Processadores Gráficos
⊹ Problemas de Engenharia
⊹ Compiladores
8
Introdução
⊹ C é uma linguagem de nível médio

Alto nível: Baixo nível:


- Estruturada; - Linguagem de máquina;
- Modular; - Bits e bytes;
- Portátil. - Endereços de memória. 9
Introdução
⊹ 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
10
Introdução
⊹ 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

11
Introdução
⊹ 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
frequentemente se confundem quando se
programa em linguagem C
12
Introdução
inclusão de arquivos de cabeçalho
declaração de variáveis globais
int 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;
...
return 0;
} //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 “;”

13
Introdução
⊹ O menor programa possível em C seria:
int main ()
{
return 0;
}
⊹ É um programa vazio, que não contém
instruções para executar;
⊹ Formatação dos programas: é livre, mas
convém manter a legibilidade 14
Introdução
⊹ Legibilidade nos programas

main
main () main () ( main
{ {} ) ()
} { {}
}
Bons exemplos Maus exemplos

15
Introdução
⊹ 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:
16
Introdução

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

17
Introdução
⊹ 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++.

18
Introdução
⊹ 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);

19
Introdução
⊹ Primeiro programa em C

#include <stdio.h>
#include <stdio.h>
#include <conio.h>
#include <conio.h>
main()
int main ()
{
{
printf("oi mundo");
printf (“Oi mundo.”);
getch ();
getch ();
return 0;
return 0;}
}

20
Introdução
⊹ 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);
21
Introdução
⊹ Expressão de controle “\n”: pode ser
utilizada dentro da string de controle para
iniciar uma nova linha

22
Introdução
⊹ 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
23
Introdução
⊹ 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


24
Introdução
⊹ Declaração de variáveis:
⊹ tipo nome;
⊹ Regras gerais:
⊹ Declarar antes do uso
⊹ Declarar antes das instruções
⊹ Incluir na declaração o nome e tipo da
variável

25
Introdução
⊹ 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
⊹ As variáveis do tipo caracter deverão
receber valor entre aspas
⊹ Em C, não existe tipo booleano (lógico) e
nem string (cadeia)
26
Introdução
⊹ O valor zero (0) é considerado falso e
qualquer outro valor é considerado
verdadeiro
⊹ Exemplos:
⊹ int K;
⊹ double valores;
⊹ float quadro;
⊹ char caracter;
27
Introdução
⊹ 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>

28
Introdução
#include <stdio.h>
#include <conio.h>

int main()
{
char letra;
printf ("Digite um caracter: ");
letra=getch();
printf ("\nCaractere digitado: %c\n", letra);
getch();
return 0;
}

29
Introdução
⊹ 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>

30
Introdução

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

int main()
{
char letra;
printf ("Digite um caracter: ");
letra=getche();
printf ("\nCaractere digitado: %c", letra);
getch();
return 0;
}

31
Introdução
⊹ Programa para calcular a área de um círculo
#include <stdio.h>
#include <conio.h>

int main ()
{
float r, area;
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);
return 0;
} 32
Podemos
Continuar?.
33
Introdução
⊹ 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=altura*PI*raio2;

34
Introdução
⊹ Exercícios:
⊹ 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:
⊹ delta=b2-4*a*c;
⊹ x1=(-b+delta1/2)/(2*a);
⊹ x2=(-b-delta1/2)/(2*a);
35
#include <stdio.h>
#include <math.h> Volume do Cilindro
Introdução
int 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");
return 0;
}
36
#include <stdio.h>
#include <math.h> Raízes da Equação do 2º grau
Introdução
int 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");
return 0;
}

37
Op. Significado Exemplo

Introdução
= 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 n igual ao resto da divisão de n 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--;

38
Introdução
⊹ Alguns cuidados devem ser tomados
quando se utiliza os operadores de
incremento:
⊹ k=3*n++; é equivalente a k=(3*n)+1;
⊹ k=3*++n é equivalente a k=3*(n+1);

39
Introdução
⊹ Operadores Relacionais

Op. Significado
> Maior
>= Maior igual
< Menor
<= Menor igual
== Igual
!= Diferente

40
Introdução
⊹ Operadores Lógicos

Op. Significado
&& Lógico E
|| Lógico OU
! Lógico de negação

41
Introdução
Op. Tipo
⊹ Precedência de Operadores ++ Incremento
-- Decremento
! Lógico Não
* Multiplicação
/ Divisão
% Resto
+ Adição
- Subtração
< Menor
<= Menor igual
> Maior
>= Maior igual
42
Op. Tipo

Introdução <
<=
Menor
Menor igual
> Maior
⊹ Precedência de Operadores >= 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.)

43
Introdução
⊹ Comandos de Decisão (Estruturas de
Seleção)
⊹ if-else;
⊹ switch;
⊹ Comando if-else
⊹ Esta estrutura de seleção é capaz de tomar
uma decisão simples, se a expressão de teste
for verdadeira, o bloco de instruções 1 será
executado e o 2 ignorado. Se a expressão de
44
teste for falsa acontecerá o contrário
Introdução
if (expressão de teste)
{
instrução 1;
instrução 2;
Bloco 1 ...
instrução n;
}
else
{
instrução 1;
instrução 2;
Bloco 2 ...
instrução n;
}

45
Introdução
⊹ Exemplo de programa com if-else: dados
dois valores inteiros X e Y descubra qual é
o maior

46
Introdução
#include <stdio.h>

int 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");
}
return 0;
}

47
Introdução
⊹ 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

48
Introdução 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;
}
49
Introdução
⊹ 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
sequência serão executadas 50
Introdução
⊹ Observações referentes à sintaxe:
⊹ 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

51
Introdução
⊹ 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
52
Introdução
⊹ 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

53
#include <stdio.h>
int main ()
{

Introdução
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 oferecidas!\n\n");
}
return 0;
}
54
Introdução
⊹ 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$ 7,10;
⊹ Álcool R$ 6,05;
⊹ Diesel R$ 6,10. 55
Introdução
⊹ 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; 56
Estruturas de Controle de Repetições

1 2 3

57
Introdução
⊹ 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;
58
Introdução
⊹ 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

59
Introdução
#include <stdio.h>
⊹ Exemplo de uso do
comando for: um int main ()
programa que {
int i;
imprime os for (i=1;i<=20;i++)
números de 1 a 20 printf ("Numero: %d\n",i);
na tela. return 0;
}

60
Introdução
⊹ Exercícios:
⊹ 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.
⊹ Faça um algoritmo que calcule o fatorial de um
número inteiro fornecido pelo usuário.
61
Introdução
⊹ 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;

62
Introduçã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 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 63
Introdução
⊹ 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.

64
Introdução
#include <stdio.h>
int main ()
{
int n=0;
while (n>=0)
{
printf ("Digite um numero: ");
scanf ("%d",&n);
}
return 0;
}

65
Introdução
⊹ 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); 66
Introduçã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 67
Introdução
⊹ 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.

68
Introdução
#include <stdio.h>

int main ()
{
int n;
do {
printf ("Digite um numero: ");
scanf ("%d",&n);
printf (“Numero: %d“, n);
} while (n>=0);
return 0;
}

69
Introdução
⊹ Exercícios:
⊹ 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;
⊹ 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. 70
Introdução
⊹ Agregados de Dados
⊹ Homogêneos: conjuntos (vetores 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
71
Introdução
⊹ Agregados de Dados
⊹ 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

72
Introdução
⊹ Matrizes (Agregados Homogêneos)
⊹ Forma geral:
⊹ tipo nome_mat [tamanho];
⊹ Exemplo 1: uma matriz para armazenar até 10
valores inteiros:
⊹ int vetor_inteiro [10];
⊹ Exemplo 2: uma matriz para armazenar 20
caracteres (equivalente a string do Pascal):
⊹ char nome_pessoa [20];
73
Introdução
⊹ Matrizes (Agregados Homogêneos)
⊹ Em C, toda matriz tem 0 como o índice do seu
primeiro elemento. Portanto, quando você escreve
⊹ char p[10];
⊹ Você está declarando uma matriz de caracteres que
tem dez elementos, p[0] até p[9].

74
Introdução
⊹ O seguinte programa carrega uma matriz
de inteiros com os números de 0 a 99: #include <stdio.h>

int 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();
return 0;
} 75
Introdução
⊹ Para a leitura de matrizes 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);
76
Introdução
⊹ Para escrever uma matriz 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);

77
Introdução
⊹ O seguinte programa lê uma matriz de
caracteres (string) digitada pelo usuário e
posteriormente imprime na tela:

78
Introdução
#include <stdio.h>

int main ()
{
char nome[25];
int i;
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);
return 0;
}

79
Introdução
⊹ 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;
...
}
80
Introdução
⊹ Estruturas:
⊹ Exemplo:
struct pessoa
{
char nome[30];
char endereco[40];
char cidade[20];
int idade;
};

81
Introdução
⊹ 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;
82
Introdução
⊹ 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;

83
Introdução
⊹ 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; 84
Introdução
⊹ 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 nome “João da
Silva” ao cliente de índice 17, poderíamos fazer:
⊹ clientes[17].nome=“João da Silva”;
85
Introdução
Exercícios:
⊹ 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.
⊹ 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.
⊹ 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. 86
“ O temor do Senhor
é o princípio do conhecimento,
mas os insensatos desprezam
a sabedoria e a disciplina.
Provérbios 1:7

87
Thanks!
Any questions?
fabiano.utiyama@ifpr.edu.br

88
Roadmap
Lingaugem C Ordenação de Dados Árvores

1 3 5

2 4 6

Pesquisa de Dados Listas Grafos e Hash

89

Você também pode gostar