Buscar

Laços, Arrays e Matrizes em C

Prévia do material em texto

Bruno Jurkovski
Fábio da Fontoura Beltrão
Felipe Augusto Chies
Kauê Soares da Silveira
Lucas Fialho Zawacki
Marcos Vinicius Cavinato
Revisão Aula 1
Nós já vimos:
� Escrever/Ler dados - printf() e scanf();
� Lembrar de usar ‘&’ no scanf (menos para String’s)
� Tipos de variáveis(int, char, float, double.
String[Hoje]);
� If – else
� If Encadeado
� Switch
Revisão Aula 1
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main(){
int ops, numero;
char letra1, letra2;
printf ("Selecione uma opcao: \n\n");
printf ("1. Verificar se numero e negativo ou igual a 0\n");
printf ("2. Verificar se duas letras sao iguais\n");
printf ("3. Sair\n\n");
printf ("Opcao: ");
scanf("%d",&ops);
switch(ops){
case 1: 
printf ("\n\n Digite um numero inteiro: ");
scanf ("%d",&numero);
if (numero < 0)
printf ("\nO numero %d e menor que 0", numero);
else
if (numero == 0)
printf ("\nO numero %d e igual a 0", numero);
else
printf ("\nO numero %d maior que 0", numero);
break;
case 2:
printf ("\n\nDigite uma letra: ");
fflush(stdin);
scanf ("%c", &letra1);
printf ("Digite outra letra: ");
fflush(stdin);
scanf ("%c", &letra2); 
if (letra1 == letra2)
printf ("\n\nA letra %c e igual a letra %c",letra1, letra2);
else
printf ("\n\nA letra %c e diferente da letra %c", letra1, letra2);
break;
case 3:
exit(0);
} // fecha o switch
printf ("\n\nDigite alguma tecla para sair!");
getch();
} // fecha o main
Hoje Veremos:
� Laços Iterativos
�While
�For
�Do-while
� Break
�Continue
� Array
�Matrizes
� String
Laços são úteis para executar várias
vezes a mesma tarefa. Veremos os laços:
�While
� Do - while
� For
Laços Iterativos
� O laço é executado enquanto uma 
expressão FOR VERDADEIRA!
�Sua forma geral é:
while (expressão){
declaração;
}
While
�Exemplo:
While
�Saída:
While
� É uma generalização do comando while
� Sua forma geral é:
for (inicialização; condição; incremento) 
declaração;
Usado quando sabe-se quando o laço
vai terminar
For
�Exemplo:
For
�Saída:
For
� O do-while executa o laço antes de testar a 
condição. Assim, garante-se que o laço é
executado pelo menos uma vez.
� Sua forma geral é:
do
{
declaração;
} while (condição);
Do - while
� Exemplo:
Do - while
� Saída:
Do - while
� Receber entradas de inteiros do teclado até que seja 
recebido o valor 0.
� Caso um valor negativo seja recebido, retornar mensagem de 
erro ao usuário e aguardar um valor válido (positivo). 
� Ao final, dizer a soma dos números válidos, o maior e o 
menor (menor valor maior que 0) valor válidos digitados.
�Qual será o melhor laço para este programa???
Exercício
� Há dois usos para o comando break:
o Quebrar execução de um comando
o Interromper a execução de um loop
� O break faz com que a execução do programa 
continue na primeira linha seguinte ao loop ou 
ao bloco que está sendo interrompido
Não é considerado um bom hábito de programação
usar break fora do switch! 
Break
� O comando break é muito importante quando 
o comando switch for utilizado. Por exemplo:
Break
� O comando break é muito importante quando 
o comando switch for utilizado. Por exemplo:
� Saída:
Break
� Saída:
Break
� Exemplo 2:
Break
Break
� O comando continue faz com que o loop 
passe para a próxima iteração.
o continue X for: controle do programa 
passa para a fase incremento
o continue X while: controle do programa 
passa para o teste
o continue X do-while: controle do programa 
passa para o teste
Continue
� Exemplo
Continue
� Exemplo
� Saída:
Continue
� Arrays são matrizes unidimensionais(vetores)
� Possuem elementos de mesmo tipo de dado
� Para declará- los, a forma geral é:
tipo_elementos nome_variável[tamanho_array];
Ex: int vetor_de_int[10];
� Desta forma, o compilador reserva memória 
suficiente para armazenar o número de elementos 
especificados em tamanho_array
Arrays
� Em C, a numeração começa sempre em 0.
� Exemplo:
� Para acessá-los, escrevemos:
� Porém, nada impede que se escreva
Arrays
� O C não verifica se o índice que você usou está
dentro dos limites válidos. Isso faz com que se 
corra o risco, por exemplo, de ter variáveis 
sobrescritas ou de acessar posições inválidas de 
memória e causar erro de execução.
Ex: int exemplo[10];
scanf(“%d”,&exemplo[12]); 
Arrays
� Inicialização:
� A inicialização de arrays pode ser feita da 
mesma forma como eram inicializadas as 
demais variáveis:
tipo_var nome_var [tam] = {lista_valores};
� A lista de valores é composta por valores do 
mesmo tipo da variável separados por vírgula.
Arrays
� Exemplo:
� Caso hajam menos valores do que os que 
foram declarados, o array é preenchido com 
zeros. 
Arrays
� Pode não ser definido o tamanho do vetor e neste 
caso, o array assume o tamanho do número de 
elementos que forem inicializados.
� Exemplo:
� O vetor terá tamanho 3.
Curso de C – aula 3 - PET Computação
Arrays
Matrizes
� Em C podemos ter matrizes de muitas 
dimensões(tantas quantas o compilador suportar);
� A declaração é feita da seguinte forma:
tipo_elementos nom_varl[tam][tam][tam]...;
� Ex.: int matriz[10][10][10]
� Esta matriz poderá guardar 10*10*10 = 1000 
valores
Matrizes
� Não costuma usar- se matrizes maiores do que 3 
dimensões, pois ocupa muita memória.
� Exemplo de preenchimento de uma matriz 
bidimensional:
#define TAM 10 // Definindo uma constante
#include <stdio.h>
#include <conio.h>
int main(){
int matriz[TAM][TAM]; //Declarando uma matriz 10x10
int acumulador=0;
for(int i = 0 ; i < TAM ; i++)
for(int j = 0 ; j < TAM ; j++){
matriz[i][j] = acumulador;
acumulador++;
}
for(int i=0 ; i < TAM ; i++){
printf("\n");
for(int j = 0 ; j < TAM ; j++)
printf("%d ", matriz[i][j]);
}
getch();
return 0; 
}
#define TAM 10 // Definindo uma constante
#include <stdio.h>
#include <conio.h>
int main(){
int matriz[TAM][TAM]; //Declarando uma matriz 10x10
int acumulador=0;
for(int i = 0 ; i < TAM ; i++)
for(int j = 0 ; j < TAM ; j++){
matriz[i][j] = acumulador;
acumulador++;
} Saída:
for(int i=0 ; i < TAM ; i++){
printf("\n");
for(int j = 0 ; j < TAM ; j++)
printf("%d ", matriz[i][j]);
}
getch();
return 0; 
}
Strings
� A linguagem C não possui o tipo string. Entende- se 
string como um array de caracteres.
� O final da string é marcada por um ‘\0’, que é
colocado automaticamente pelo compilador, 
portanto, para declarar um array para 10 letras, ele 
deve possuir tamanho 11
� Ex.: JUCA em uma string:
� char palavra[5] - > [‘J’][‘U’][‘C’][‘A’][‘\0’]
Três maneiras:
1. char nome[10] = “Ana”;
Insere Ana na posição 0, 1 e 2 e ‘\0’ na 3.
O Restante fica com zeros.
2. char nome[10] = {‘A’ , ‘n’ , ‘a’};
Parecido com o de cima
3. char nome[] = “Ana”
String já fica com tamanho 4(A , n , a , \0)
Strings - Inicialização
Strings – Leitura/Escrita
� Leitura:
scanf: usa- se %s e NÃO usa- se &
Ex.: scanf(“%s”, variavel);
Problema: Lê até encontrar um espaço em branco.
James Malávis, seria lido apenas como James
gets: Lê a palavra inteira.
Ex.: gets(variavel);
Strings – Leitura/Escrita
� Escrita:
printf: usa- se %s
Ex.: printf(“%s”, variavel);
puts: Similar ao gets.
Ex.: puts(variavel);
Strings
Obs.: Como string não é um tipo base, não pode- se 
atribuir uma string à outra.
Strings - Manipulação
Funções da biblioteca STRING.H (#include <string.h>)
� strcopy
Copia uma string em outra.
Formato: strcpy (string_destino , string_origem);
� strcat
Origem é anexada ao final da destino.
Formato: strcat (string_destino , string_origem);
Strings - Manipulação
� strlen
Retorna o tamanho da string(sem contar o ‘\0’).
Formato: strlen(string);
� strcmp
Compara duas strings(per ordem alfabética), caractere
por caractere e retorna:
1 - se a primeira for ‘maior’ que a segunda 
0 - se forem exatamente iguais
- 1 - se a segunda for maior que a primeira
Formato: strcmp(string 1, string 2);
� Fazer um programa que dado um array com 10 
valores some os valores ímparese apresentar 
a soma quando o laço for encerrado.
� Também deve ser impresso o vetor na ordem 
normal e na ordem inversa.
Curso de C – aula 3 - PET Computação
Exercício

Continue navegando