IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Documentos relacionados
Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Estrutura de Dados Básica

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Conversão de Tipos e Arrays

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Linguagem de Programação

14.1 Vetor - Problemas

Tipos de Dados Avançados Vetores e Matrizes

Programação de Computadores I. Ponteiros

INF 1007 Programação II

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

IFTO LÓGICA DE PROGRAMAÇÃO AULA 02

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

Introdução a Computação

1 Funções básicas de implementação de arquivos

5 Apresentando a linguagem C

Algoritmos e Programação Parte Teórica

Linguagem de Programação I

Introdução à Engenharia ENG1000

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Curso de C para Engenharias

Conceitos básicos da linguagem C

Implementando uma Classe e Criando Objetos a partir dela

INF 1005 Programação I

Variáveis e Comandos de Atribuição

9 Comandos condicionais

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

MC-102 Aula 17 Strings e Matrizes

Convertendo Algoritmos para a Linguagem C

Programação: Tipos, Variáveis e Expressões

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Componentes da linguagem C++

Programação de Computadores I. Linguagem C Vetores

2 PASSO: Depois de acessado um dos endereços acima, clicar em Serviços Eletrônicos.

MANUAL DO PEP ATUALIZADO EM PROPOSTA ELETRÔNICA DE PREÇOS REFERENTE A VERSÃO DO PEP:

Tabela ASCII de caracteres de controle

O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio.

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

A4 Projeto Integrador e Lista de Jogos

Introdução à Ciência da Computação. Registros em C. Sumário. Registros. Agradecimentos. Parte dos slides a seguir são adaptações dos originais:

ALGORITMO I VARIÁVEIS INDEXADAS

Algoritmos e Programação

Registros. Técnicas de Programação. Rafael Silva Guimarães

MIT072 Manual de Operação do Portal - Professores

NOTIFICANDO USUÁRIOS SOBRE UMA NOVA EDIÇÃO

Especificação do Trabalho

MANUAL DO USUÁRIO PORTAL DO PROFESSOR

Aula de JavaScript 05/03/10

Manual de Operação do Multiconta Drive / Delivery

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

Introdução à Programação

Aula Teórica 16: Estruturas de Dados Heterogêneas

Estruturas de Repetição

9.1.2 Laços Controlados por Entrada: Contador

Estruturas II UFOP 1/1

2ª Lista de Exercícios

1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP

Técnicas de Programação I

INF 1005 Programação I

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Trabalho Computacional 2. Aplicativo para Gestão Financeira. Grupos: Os trabalhos devem ser feitos individualmente ou em duplas.

INF 1005 Programação I lista 12

Strings. Todas as funções apresentadas neste documento estão no arquivo de cabeçalho string.h.

LINGUAGEM C UMA INTRODUÇÃO

MANUAL DO PROFESSOR. Suporte: SISTEMA DE GESTÃO EDUCACIONAL VIRTUALCLASS. Skype: suportetisoebras

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

Linguagens de Programação

Esse produto é um produto composto e tem subprodutos

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

ALGORITMOS E PROGRAMAÇÃO PARA COMPUTADORES II

6. Enumere de acordo com a primeira: A. Minimizar diminui o aplicativo, deixando-o na Barra de Tarefas.

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Programação 1. Rafael Vargas Mesquita. ftp://ftp.ci.ifes.edu.br/informatica/rafael/

Manual MQS. Logo após colocar essas informações abrirá a página inicial do sistema:

ÍNDICE. Tela de Configuração Dados de Etiqueta Configuração da Impressora Configuração do Papel Itens para Inserção...

INTRODUÇÃO À LINGUAGEM C++

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Cadastros e Acessos. Conhecimento global. Foco local. / Versão 1.0

SIE - SISTEMA DE INFORMAÇÕES PARA O ENSINO CADASTRO DE FUNCIONÁRIOS

1- Acessando o sistema

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Especificação do Trabalho Prático

Estruturas de Repetição

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Tutorial Sistema Professor Online. 1) Menu Cadernetas

Trabalho de laboratório Avaliação semestral Exame final MÉDIA PONDERADA CONCEITO

LTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Transcrição:

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos http://manoelcampos.com mcampos at ifto.edu.br Versão 19/11/12 Slide 1

Arrays Variáveis compostas homogêneas Permitem acesso a seus elementos por meio de índice(s) numérico(s) Em linguagem C, a primeira posição de um array é a zero (em linguagens como Pascal e Lua a primeira posição é 1) Quantidade fixa de elementos Existem dois tipos: vetores e matrizes Versão 19/11/12 Slide 2

Arrays: Vetores Possuem apenas uma dimensão (1 linha ou 1 coluna, isto é uma questão de convenção, só um detalhe de como exibir os dados) Vetor de 5 elementos (1 linha) Vetor de 5 elementos (1 coluna) a C A R R O 3.2 5.4 b[0] b[1] a[0] a[1] a[2] a[3] a[4] b 9.3 b[2] Possui apenas 1 índice 8.0 7.4 b[3] b[4] Versão 19/11/12 Slide 3

Arrays: Vetores Declaração tipo nome[dimensao]; Exemplos char nome[50]; float alturas[10]; float medias[20]; int precos[10], idades[20]; Versão 19/11/12 Slide 4

Arrays: Vetores Inicialização na declaração. Exemplo: int pares[5] = {0, 2, 4, 6, 8}; Outro exemplo Declaração Uso (acesso aos elementos) Imagens: http://articles.mql4.com/417 Versão 19/11/12 Slide 5

Arrays: Vetores Percorrendo os elementos de um vetor, e imprimindo o mesmo como um vetor coluna (só 1 coluna) int pares[5] = {0, 2, 4, 6, 8}; int i; for(i = 0; i < 5; i++) { } printf( %d\n, pares[i]); Versão 19/11/12 Slide 6

Arrays: Vetores Percorrendo os elementos de um vetor e imprimindo o mesmo como um vetor linha (só 1 linha) int pares[5] = {0, 2, 4, 6, 8}; int i; for(i = 0; i < 5; i++) { } printf( %d\t, pares[i]); O que mudou em relação ao exemplo anterior? Versão 19/11/12 Slide 7

Arrays: Vetores Solicitando que o usuário preencha os elementos do vetor: int idade[5]; int i; printf( Informe a idade de 5 pessoas\n\n ); for(i = 0; i < 5; i++) { } printf( Informe uma idade: ); scanf( %d, &idade[i]); Versão 19/11/12 Slide 8

Arrays: Matrizes Possuem mais de uma dimensão. Os índices em todas as dimensão também iniciam em zero. Mais comumente são utilizadas matrizes bidimensionais Normalmente, considera-se que, nas matrizes bidimensionais, o primeiro índice representa linhas e o segundo colunas Versão 19/11/12 Slide 9

Arrays: Matrizes Exemplo de matriz bidimensional Imagem: http://articles.mql4.com/417 Versão 19/11/12 Slide 10

Arrays: Matrizes Declaração tipo nome[dimensao1][dimensao2]; tipo nome[dimensao1][dimensao2][dimensaon]; Exemplos char nomes[2][50]; int reservas_onibus[20][4]; Versão 19/11/12 Slide 11

Arrays: Matrizes Inicialização na declaração. Exemplos int matriz_a[2][4] = {{1,2,3,4}, {5,6,7,8}}; ou int matriz_b[2][4] = { 1,2,3,4, 5,6,7,8 }; Versão 19/11/12 Slide 12

Arrays: Matrizes Outro exemplo Declaração Uso (acesso aos elementos) Imagens: http://articles.mql4.com/417 Versão 19/11/12 Slide 13

Arrays: Matrizes Matriz Tridimensional (linhas, colunas e faces) int teatro[3][3][2]; Matriz com 3 linhas, 3 colunas e 2 faces. Pense nela como um teatro com dois andares, onde em cada andar existem 3 fileiras, cada uma com 3 poltronas. Imagem adaptada de http://articles.mql4.com/417 Ex. de uso: teatro[fileira][poltrona][andar] Versão 19/11/12 Slide 14

Arrays: Matrizes Percorrendo uma matriz bidimensional (exibindo) int i, j; int matriz_a[2][4] = {{1,2,3,4}, {5,6,7,8}}; for (i = 0; i < 2; i++) { } for (j = 0; j < 4; j++) { } printf("%d\t", matriz_a[i][j]); printf("\n"); Versão 19/11/12 Slide 15

Arrays: Matrizes Percorrendo uma matriz bidimensional (preenchendo) int i, j; int matriz_a[2][4] = {{1,2,3,4}, {5,6,7,8}}; for (i = 0; i < 2; i++) { } for (j = 0; j < 4; j++) { } printf("digite um valor pra ln %d e cl %d: ", i, j); scanf( %d, &matriz_a[i][j]); printf("\n"); Versão 19/11/12 Slide 16

Arrays: Matrizes Uma matriz também é denominada como vetor de vetores: int mat[2][4] = {{1,2,3,4}, {5,6,7,8}}; //ou int mat[2][4] = {1,2,3,4,5,6,7,8}; A matriz mat é um vetor de 2 elementos, onde cada posição armazena outro vetor de 4 elementos, como pode ser visto na atribuição, a matriz mat possui os elementos {1,2,3,4} e {5,6,7,8}, sendo cada um deles, um vetor de 4 elementos. Versão 19/11/12 Slide 17

Arrays: Matrizes Matriz de char: //Vetor de 2 posições, onde cada posição //armazena uma string de até 10 caracteres. //Também denominada vetor de strings char nomes[2][10]; int i; for(i=0; i < 2; i++) { printf("digite um nome: "); scanf("%s", nomes[i]); } for(i=0; i < 2; i++) printf("nome %d: %s\n", i+1, nomes[i]); Versão 19/11/12 Slide 18

Arrays: Armazenamento Os elementos de um array são armazenados em endereços de memória RAM sequenciais, assim, matrizes não são armazenadas em quadriláteros como imaginamos. Matriz 1 Matriz 2 Vetor 1 Imagem adaptada de http://www.fcleaner.com/ramrush.htm Versão 19/11/12 Slide 19

Arrays: Armazenamento Exemplo de fórmula (a ser utilizada internamente pelo programa) para descoberta da posição de um elemento da matriz na memória RAM, a partir dos valores de seus índices //fórmula considerando-se uma matriz bidimensional posicao = (num_ln*total_cls)+num_cl Versão 19/11/12 Slide 20

Arrays: Armazenamento Matriz 3x3 como imaginamos graficamente (em uma estrutura quadrilátera) Matriz 3x3 como armazenada em memória RAM (em posições sequenciais) 10 20 30 40 50 60 70 80 90 [0] [1] [2] [3] [4] [5] [6] [7] [8] A instrução array2d[2][2], para acesso a um elemento na matriz, é traduzida em algo como array2d[8] (posição obtida com a fórmula anterior) Versão 19/11/12 Slide 21

Arrays: Armazenamento Independente de quantas dimensões o array tenha, os dados são armazenados sequencialmente como uma estrutura unidimensional. Os valores dos índices do array é automaticamente traduzido em um único índice, como mostrado anteriormente Versão 19/11/12 Slide 22

Arrays: Armazenamento Cada variável possui um endereço na memória RAM Um array é composto por um conjunto de posições na RAM A variável array armazena apenas o endereço do primeiro elemento. Versão 19/11/12 Slide 23

Arrays: Armazenamento A descoberta do exato endereço de memória RAM de um elemento é calculado a partir do índice único para acesso aos elementos do array (seja um vetor ou matriz) Versão 19/11/12 Slide 24

Arrays: Armazenamento Internamente é utilizada a fórmula: endereco = endereco_inicial + indice*tamanho_tipo_dado Exemplo: int array[9]; array 10 20 30 40 50 60 70 80 90 [0] [1] [2] [3] [4] [5] [6] [7] [8] printf( Endereço da 1ª posição do array: %p, &array); printf( Endereço da 2ª posição do array: %p, &array[1]); Os endereços de memória normalmente são exibidos como números hexadecimais (para reduzir o total de dígitos a serem impressos e facilitar a leitura) Versão 19/11/12 Slide 25

Arrays: Armazenamento Quando se deseja acessar um dado de uma posição, como: printf( Valor da posição %d do vetor: %d, 1, array[1]); o programa automaticamente descobre o endereço de memória onde o dado da posição informada está armazenado, baseado no endereço inicial e na posição a ser acessada, utilizando a fórmula mostrada anteriormente: endereco = endereco_inicial + indice*tamanho_tipo_dado Versão 19/11/12 Slide 26

Arrays: Armazenamento Usando o vetor de inteiros do exemplo anterior: Tamanho do tipo de dados (int) = 4 bytes Cada posição do vetor ocupa 4 bytes Considere posição inicial igual a 0xbfa3f00c (números iniciados em 0x ou terminados em h são hexadecimais) A segunda posição do vetor (índice 1) estaria no endereço 0xbfa3f010 Em decimal, a diferença entre o segundo e o primeiro endereço é de exatamente 4 (bytes), o tamanho de cada posição int. Versão 19/11/12 Slide 27

Arrays: Armazenamento Veja que a diferença entre o primeiro e o segundo elemento do vetor será de 4 bytes (caso o tipo int do compilador C utilizado tenha este tamanho) int array[9]; printf( Endereço do array[0]: %p, &array[0]); printf( Endereço do array[0]: %p, &array[1]); Versão 19/11/12 Slide 28

Arrays: Armazenamento Acessar o endereço da variável array é o mesmo que acessar o endereço do seu primeiro elemento (de índice zero): int array[9]; printf( Endereço do array é o mesmo da 1ª posição dele ); printf( Endereço do array : %p, &array); printf( Endereço do array[0]: %p, &array[0]); Versão 19/11/12 Slide 29

Arrays: Armazenamento Se o array é uma matriz, primeiramente os índices da mesma são convertidos para um único índice (como já mostrado) e depois o endereço de memória da posição solicitada é calculado para assim poder acessar o dado armazenado neste endereço Versão 19/11/12 Slide 30

Arrays: Definindo dimensões usando variáveis Permitindo que o usuário defina a(s) dimensão(ões) do array (após definidas, as dimensões continuam não podendo ser alteradas): int i, total; printf( Informe o total de alturas que deseja digitar: ); scanf( %d, &total); float alturas[total]; for(i=0; i < total; i++) { } printf( Digite uma altura (%d de %d):, i+1, total); scanf( %f, &alturas[i]); Versão 19/11/12 Slide 31

Exercícios Crie um programa que solicite a nota de 10 alunos e armazene todas elas. O programa deve exibir a média das notas da turma, a maior e a menor nota. Crie um programa que solicite a nota de 3 avaliações de 10 alunos. O programa deve exibir a média ponderada das notas de cada aluno, sendo que cada avaliação tem os pesos 2, 3 e 5, respectivamente. A média ponderada é obtida pela soma das notas do aluno, multiplicadas pelos seus respectivos pesos e dividindo-se este resultado pela soma dos pesos. Versão 19/11/12 Slide 32

Exercícios Crie um programa que solicite o nome e a idade de uma quantidade de pessoas determinada pelo usuário. O programa deve exibir, ao final, o total de pessoas cadastradas, o nome da pessoa mais velha e sua idade e a moda das idades (a idade que mais se repetiu dentre o conjunto de idades informadas). Versão 19/11/12 Slide 33

Exercícios Crie um programa para registrar a votação para escolha do líder da turma. O programa deve exibir um menu com a lista de 5 candidatos, numerados de 1 a 5. O usuário deve escolher um candidato e o voto para ele deve ser contabilizado. Quando o usuário digitar 0 o programa deve terminar e exibir o total de votos de cada candidato, além do candidato vencedor. Versão 19/11/12 Slide 34

Exercícios Crie um programa para realizar o cadastro de 10 pessoas. O programa deve armazenar o CPF, nome e data de nascimento das pessoas, nessa ordem. Após digitar o CPF, antes de incluí-lo no cadastro de pessoas, deve-se verificar se ainda não existe uma pessoa com o CPF informado. Caso exista, deve-se exibir os dados da pessoa cadastrada, caso contrário, deve-se solicitar os outros dados para cadastrar a pessoa. Versão 19/11/12 Slide 35

Exercícios Crie um programa para realizar o cadastro de 10 pessoas, como o anterior. No entanto, o programa deve ter um menu como abaixo: 1-Cadastrar 2-Listar pessoas cadastradas 3-Alterar cadastro 4-Excluir último cadastro 0-Sair O programa deve cadastrar uma pessoa por vez, cada vez que o usuário escolher a opção 1 do menu. Considerando que o vetor tem apenas 10 posições, antes de cadastrar uma pessoa, deve-se verificar se ainda há posições vazias no vetor. Para isto, deve-se utilizar uma variável para armazenar o total de pessoas cadastradas. Na opção 2, deve-se solicitar o CPF da pessoa cujo cadastro deve ser alterado, após isto, deve-se localizar a posição em que a pessoa está cadastrada. Ver função strcmp da biblioteca string.h A opção 4 deve apenas decrementar a variável que indica o total de pessoas cadastradas. Versão 19/11/12 Slide 36

Exercícios Criar um programa como o anterior, mas que na opção de excluir cadastro, solicite o CPF da pessoa a ser excluída, localize o cadastro e exclua o mesmo. Versão 19/11/12 Slide 37