0% acharam este documento útil (0 voto)
8 visualizações30 páginas

10-Arrays MM

O documento aborda conceitos fundamentais de arrays em programação C, incluindo vetores e matrizes, suas declarações, inicializações e acessos. Também discute a estrutura de loops, como a instrução 'for', e outras construções da linguagem C, além de exemplos práticos de funções. Por fim, apresenta a utilização de protótipos e funções de entrada e saída, como 'printf' e 'scanf'.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
8 visualizações30 páginas

10-Arrays MM

O documento aborda conceitos fundamentais de arrays em programação C, incluindo vetores e matrizes, suas declarações, inicializações e acessos. Também discute a estrutura de loops, como a instrução 'for', e outras construções da linguagem C, além de exemplos práticos de funções. Por fim, apresenta a utilização de protótipos e funções de entrada e saída, como 'printf' e 'scanf'.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 30

Arrays

Programação I
2022/23

Departamento de Informática, ECT-UÉ


Sumário

Vetores
Matrizes
Instrução for
Outras construções da linguagem C
Vetores
Vetor

Conceito familiar em matemática


Coleção de valores indexados por um índice

Valores
São todos do mesmo tipo

Índice
inteiro
Declaração e inicialização

tipo variavel[dimensao];

tipo variavel[dimensao] = {valor1, valor2, …, valorn};

Exemplos
int notas[10];
Vetor de inteiros de dimensão 10
float precos[] = {1.5, 2.3, 4.0, 3.1, 5.5};
Vetor de reais de dimensão 5
Utilização

Acesso direto aos elementos através do índice


variavel[indice]

Indexação
Primeiro elemento: índice 0 (zero)
Último elemento: índice ?

Exemplos
nota = notas[5];
preco = precos[1];
Exemplo

float media (float v[], int n) { int main(void) {


int i; float notas[10], nota;
float soma; int nnotas;
i=0; nnotas=0;
soma=0; printf (“Insira as notas
while (i<n) { terminando com -1 (maximo 10)\n”);
soma = soma+v[i]; scanf (“%f”, &nota );
i=i+1; while (nota!=-1 && nnotas<10) {
} notas[nnotas]=nota;
return soma/n; nnotas=nnotas+1;
} scanf (“%f”, &nota);
}
printf (“A media e %f.\n“,
media(notas, nnotas));
}
Matrizes
Matriz

Generalização de vetor
Como vetor mas com mais de uma dimensão
Raro utilizar mais de 3 dimensões

Declaração
tipo variavel[dimensao1][dimensao2];

Utilização
variavel[indice1][indice2]
Exemplo

int somaMatriz (int mat[][10], int d1, int d2) {


/* d1, d2 devem ser menor ou igual a 10 */
int i, j, soma;

i=0; j=0;
soma=0;
while (i<d1) {
while (j<d2) {
soma=soma+mat[i][j];
j=j+1;
}
i=i+1;
j=0;
}
return soma;
}
Alternativas na indicação de parâmetros

Vetores
float media (float v[], int n);
float media (float v[10], int n);
Matrizes
int somaMatriz (int mat[][10], int d1, int d2);
int somaMatriz (int mat[10][10], int d1, int d2);

Nota
É necessário indicar todas as dimensões exceto a primeira!
Matrizes e memória

Vetor Matriz
int a; int a; ?
int v[5] = {1,2,3,4,5}; int m[3][3] = { 9
{1,2,3}, 8
? {4,5,6}, 7 m[2][0]

? {7,8,9} 6
5 v[4] }; 5
4 v[3] 4 m[1][0]

3 v[2] 3 m[0][2]

2 v[1] 2 m[0][1]

v 1 v[0] m 1 m[0][0]

a ? a ?
Ciclo for
Instrução for

for (<inicializa>; <condição>; <reinicializa>)


<instrução>

<inicializa>
Instrução executada primeiro e apenas 1 vez
Serve para inicializar o ciclo, p/ex afetar a variável de controlo do ciclo
<condição>
Determina se o bloco de instruções continua a ser executado
<reinicializa>
Depois de executar o bloco de instruções, esta instrução é executada antes
de testar novamente a condição. tipicamente atualiza-se aqui a variável de
controlo
Fluxo de execução

for (<inicializa>; <condição>; <reinicializa>)


<instrução>

1. Executa a instrução <inicializa>


2. Avalia a <condição>, obtendo verdade ou falso
3. Se falso, sai da instrução for e continua com a seguinte
4. Se verdade, executa <instrução> e <reinicializa>
5. Regressa ao ponto 2
Fluxograma
Utilização típica

Nome (e tipo) da Separador Separador


variável de controlo obrigatório obrigatório

for (int cont=0; cont<10; cont=cont+1)

Valor inicial da Condição de Valor seguinte da


variável de continuação do Valor final da variável de controlo
controlo ciclo variável de
controlo
While vs. For

While For
int i; int i;
float r; float r;

r=1;
r=1;
i=0;
for (i=0; i<10; i=i+1)
while (i<10) {
r=r*1.5;
r=r*1.5;
i=i+1;
}
Exemplo

Calcular a soma de todos os números pares até ao


número n

int somaPares (int n) {


int soma, num;
soma=0;
for (num=2; num<=n; num=num+2)
soma=soma+num;
return soma;
}
Outras construções da linguagem C
Atualização de variável

var = var op expr var op= expr


i = i+1; i += 1;
j = j-10; j -= 10;
k = k*(n+1); k *= n+1;
v[2*i][j-1] = v[2*i][j-1] *= 10;
v[2*i][j-1] * 10;
Incremento e decremento

a++; a += 1;
++aa; a += 1;

k = 2 * ++i; // pré i += 1; k = 2*i;


k = 2 * i++; // pós k = 2*i; i += 1;

pode ser com -- em vez de ++ (chama-se


"auto-decremento")
Mais operadores

Bit a Bit
Operadores aplicados a cada um dos bits que representam o inteiro
~ negação
& e
| ou
^ ou exclusivo
<< deslocamento para a esq (corresponde a multiplicar o nº por 2)
>> deslocamento para a dir (corresponde a dividir o nº por 2)
Precedência a associatividade

Precedência Associatividade
() [] esquerda
maior
! ~ ++ -- direita
* / % esquerda
+ - esquerda
<< >> esquerda
< <= > >= esquerda
== != esquerda
& esquerda
&& esquerda
|| esquerda
^ esquerda
| esquerda
menor = += -= *= direita
/=
Estrutura de um programa C

diretivas de pré-processamento

declaração de funções

int main(int argc, char *argv[])


{
declarações
instruções
}
Exemplo

#include <stdio.h>

float calcula_area_circulo (int raio)


{
float area;
area = 3.1415 * raio * raio;
return area;
}

int main ()
{
int raio = 1;
int n = 3;
printf(“A. Circulo: %.3f\n”, calcula_area_circulo(raio));
return(0);
}
Protótipo

Como o cabeçalho da função

Permite que as funções sejam declaradas em qualquer


local de um ficheiro
Desde que sejam colocados os protótipos no início
Utilização de protótipo

#include <stdio.h>
protótipo
float calcula_area_circulo(int raio);
int main()
{
int raio = 1;
int n = 3;
printf(“A. Circulo: %.3f\n”, calcula_area_circulo(raio));
return(0);
}
float calcula_area_circulo(int raio)
{
float area;
area = 3.1415 * raio * raio;
return area; definição
}
printf e scanf

printf (“formato”, arg1, arg2, …, argn )


scanf (“formato”, &arg1, &arg2, … &argn )

Expressão controlo
%d inteiro (em decimal)
%o inteiro (em octal)
%x inteiro (em hexadecimal)
%c caracter
%s string (cadeia de caracteres)
%f float
%e (notação com expoente)
%% caracter %
Verificação da leitura

A função scanf devolve o nº de valores corretamente lidos

Exemplo
int resultado;
float x, y;
resultado = scanf ("%f %f", &x, &y);
if (resultado != 2)
printf ("Valores invalidos“);

Você também pode gostar