PROGRAMAÇÃO DE COMPUTADORES I

Documentos relacionados
1 - VARIÁVEIS COMPOSTAS HETEROGÊNEAS (Registros)

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Aula 3/4: Vetores/Matrizes e Ponteiros

Estruturas de Repetição

1 - VARIÁVEIS COMPOSTAS HOMOGÊNEAS (VETORES E MATRIZES)

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Laboratório de Programação 02

1. Estrutura de Dados

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

1 - VARIÁVEIS COMPOSTAS HOMOGÊNEAS (VETORES E MATRIZES)

AULA 3 Alocação dinâmica de memória: Ponteiros

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA

Estrutura de repetição para número indefinido de repetições com teste no inicio (Enquanto - while)

Disciplina de Algoritmos e Programação. Vetor e Matriz

Exercícios: Vetores e Matrizes

Vetores Unimensionais

Vetores, Matrizes e String

Algoritmos APRENDENDO A PROGRAMAR COM C#

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

1. Escreva um programa em Pascal que leia três valores inteiros e mostre-os em ordem crescente. Utilize seleção encadeada.

Linguagem de Programação

Programação de Computadores I. Linguagem C Função

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo

Programação: Vetores

Aula 06 Introdução à Programação Matrizes

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Linguagem C: strings. Prof. Críston Algoritmos e Programação

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

LINGUAGEM C: ARRAY: VETORES E MATRIZES

M A N U A L D O ADMINISTRADOR DO PORTAL

Estruturas II UFOP 1/35

PROGRAMAÇÃO A. Matrizes

LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz

INF 1620 P1-13/09/02 Questão 1 Nome:

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Capítulo 7 Matriz. Roteiro

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

BC-0505 Processamento da Informação

Linguagem C (Funções)

21 Strings O que são strings? 21.2 Leitura de Strings. Ronaldo F. Hashimoto e Carlos H. Morimoto

Conversão Visualg à C++ Prof. Paulo Cesar F. de Oliveira, BSc, PhD

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

MC Teste de Mesa e Comandos Repetitivos

Tipos Abstratos de Dados (TAD)

Exercícios: comandos de repetição

Exercícios de Fixação Aulas 05 e 06

Importação de Dados Raster no TerraView

PROGRAMAÇÃO DE COMPUTADORES I - BCC Lista de Exercícios do Módulo 1 - Preparação para a Prova 1

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador.

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

Algoritmos e Programação

Índice Valor C A D E I A \0 memória

Comandos de Desvio 1

Exercícios (if/ if else/ if elseif else)

As bibliotecas iostream e cstdlib permitem a utilização de diversos comandos de entrada e saída e funções básicas.

Anterior Sumário Próximo MATRIZES, DETERMINANTES E SISTEMAS

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Strings. Para começar... Strings. Exemplo...

O AMBIENTE DELPHI. Programação de Computadores.

Algoritmo e Pseudo-código

Explicação do programa:

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

UNIVERSIDADE ESTADUAL PAULISTA Julio de Mesquita Filho" FACULDADE DE ENGENHARIA

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Algoritmos e Programação

Conceitos básicos de programação

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

1 Cálculo do valor à vista

Tutorial Extra sobre C. Felipe Santos da Silva

9. Tipos Abstratos de Dados

2ª Lista de Exercícios

Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

Introdução a Algoritmos e Estruturas de Dados

2ª Licenciatura AED1 e PC1 Prof. Eduardo 1 1 MODULARIZAÇÃO

3 Cadeias de Caracteres

Programação de Computadores I BCC Terceira Avaliação 06/04/2013 Valor (3,0)

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1

1. VARIÁVEIS COMPOSTAS HOMOGÊNEAS (VETORES E MATRIZES)

Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS

OBSERVAÇÕES: EXERCÍCIOS

Módulo 1. Introdução. AEDS I C++ (Rone Ilídio)

Matrizes. Marina Andretta. 17 de abril de 2017 ICMC-USP. Marina Andretta (ICMC-USP) sme0230-ipc 17 de abril de / 30

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Caracteres, Vetores e Matrizes

Ficha de Exercícios nº 2

Linguagem C. Programação Estruturada. Estrutura de Dados Heterogêneos. Prof. Luis Nícolas de Amorim Trigo

Variáveis, Tipos de Dados e Operadores

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

PROGRAMA TERRITÓRIOS DA CIDADANIA. # Manual Operacional # Matriz de Ações 2013

Orientação a Objetos

Transcrição:

PROGRAMAÇÃO DE COMPUTADORES I (Parte 2) Prof. Eduardo Machado Real Conteúdos: Variáveis Compostas Homogêneas: Vetores e Matrizes. Variáveis Compostas Heterogêneas: Registros.

Programação de Computadores I Prof. Eduardo 2 1 - VARIÁVEIS COMPOSTAS HOMOGÊNEAS 1.1 VETOR Variável composta homogênea unidimensional caracteriza-se por dados agrupados linearmente numa única direção, como uma linha reta, veja: Os vetores são capazes de armazenar vários valores. Cada um desses valores é identificado pelo mesmo nome (o nome dados ao vetor). Eles são diferenciados apenas por um índice. Os índices na linguagem C/C++ para identificar as posições de um vetor começam sempre em 0 (zero) e vão até o tamanho do vetor menos uma unidade. Exemplo: As posições de um vetor de tamanho 10, são: 0, 1, 2, 3,..., 9. 1.1.1 Declaração de vetor Os vetores em C/C++ são identificados pela existência de colchetes logo após o nome da variável no momento da declaração. Dentro dos colchetes deve-se colocar o número de posições do vetor. Exemplos: int vet[10]; vet 10 5 3 8 1 19 44 21 2 7 0 1 2 3 4 5 6 7 8 9 Nesse exemplo, o vetor chamado vet possui dez posições, começando pela posição 0 e indo até a posição 9 (tamanho do vetor 1). Em cada posição poderão ser armazenando números inteiros, conforme especificado pelo tipo int na declaração. char x[5]; x A * 2 @ k 0 1 2 3 4 Nesse exemplo, o vetor chamado x possui cinco posições, começando pela posição 0 e indo até a posição 4 (tamanho do vetor 1). Em cada posição poderão ser armazenados caracteres, conforme especificado pelo tipo char na declaração. É importante ressaltar que, na linguagem C/C++, não existe o tipo de dado string, como ocorre na linguagem Pascal ou Delphi, por exemplo. Dessa maneira, para poder armazenar em uma cadeia de caracteres, por exemplo, o nome completo de uma pessoa, deve-se declarar um vetor de char, em que cada posição equivale a um caractere ou a uma letra do nome.

Programação de Computadores I Prof. Eduardo 3 1.1.2 Atribuindo valores ao vetor As atribuições em vetor exige que seja informada em qual de suas posições o valor ficará armazenado. Deve-se lembrar sempre que a primeira posição de um vetor em C/C++ tem índice 0. vet[0] 1; x[3] b ; //Atribui o valor 1 à primeira posição do vetor. //Atribui a letra b à quarta posição do vetor. 1.1.3 Preencher um vetor Preencher um vetor significa atribuir valores a todas as suas posições. Assim, deve-se implementar um mecanismo que controle o valor do índice. for(i=0;i<10;i++) cin>>vetor[i]; Nesse exemplo, a estrutura de repetição for foi utilizada para garantir que a variável i assuma todos os valores possíveis para o índice do vetor (de 0 a 9). Assim, para cada execução da repetição, será utilizada uma posição diferente do vetor. 1.1.4 Mostrando os elementos do vetor Mostrar os valores contidos em um vetor também exige a utilização do índice. for(i=0;i<10;i++) cout>>vetor[i]; Nesse exemplo, a estrutura de repetição for foi utilizada para garantir que a variável i assuma todos os valores possíveis para o índice do vetor (de 0 a 9). Assim, para cada execução da repetição, será utilizada uma posição diferente e, dessa forma, todos os valores do vetor serão mostrados.

Programação de Computadores I Prof. Eduardo 4 Exercício resolvido: Criar um algoritmo que leia um vetor de números inteiros e 5 posições. Mostre cada elemento do vetor multiplicado por 3. Algoritmo: Em C/C++: algoritmo numeros declaração de variáveis inteiro num[5], x,mult; inicio para x 1 até 5 faça inicio escreva( Digite um número: ); leia(num[x]); fim para para x 1 até 5 faça inicio mult num[x]*3; escreva(mult); fim para fim_algoritmo #include<iostream.h> #include<conio.h> void main() clrscr(); int num[5],x,mult; for(x=0;x<=4;x++) cout<< \ndigite um número: ; cin>>num[x]; for(x=0;x<=4;x++) mult=num[x]*3; cout<< \n <<mult; getch(); Exercícios: Implementar os algoritmos desenvolvidos na disciplina de Algoritmos e Estruturas de Dados I. 1.2 MATRIZ Uma matriz pode ser definida como um conjunto de variáveis de mesmo tipo e identificadas pelo mesmo nome. Essas variáveis são diferenciadas por meio da especificação de suas posições dentro dessa estrutura. A linguagem C/C++ permite a declaração de matrizes unidimensionais (mais conhecidas como vetores). Bidimensionais e multidimensionais. As matrizes mais utilizadas possuem duas dimensões. Para cada dimensão deve ser utilizado um índice. 1.2.1 Declaração de Matriz tipo nome[dimensão1][dimensão2][...][dimensãon ]; onde: tipo é o tipo dos dados que serão armazenados na matriz; nome é o nome dado à variável do tipo matriz; dimensão1 representa o tamanho da 1ª dimensão da matriz; dimensão2 representa o tamanho da 2ª dimensão da matriz; dimensãon representa o tamanho da 1ª dimensão da matriz; dimensãon representa o tamanho da n-ésima dimensão da matriz;

Programação de Computadores I Prof. Eduardo 5 Exemplos: float x[2][6]; Da mesma maneira como, ocorre como com os vetores, os índices começam sempre em 0 (zero). Sendo assim, com a declaração anterior, criou-se uma variável chamada x contendo duas linhas (0 e 1) com seis colunas cada (0 a 5), capazes de armazenar números reais, como pode ser observado a seguir: x 0 1 0 1 2 3 4 5 char mat[4][3]; A declaração anterior criou uma variável chamada mat contendo quantro linhas (0 a 3) com três colunas cada (0 a 2), capazes de armazenar símbolos, como pode ser observado a seguir: mat 0 1 2 3 0 1 2 float y[2][4][3]; A declaração anterior criou uma variável chamada y contendo duas linhas (0 a 1) com quatro colunas cada (0 a 3) e profundidade três (0 a 2), capazes de armazenar números reais, como pode ser observado a seguir: 1.2.2 Atribuindo valores a uma matriz Atribuir valores a uma matriz significa armazenar uma informação em um de seus elementos, identificado de forma única por meio de seus índices. x[1][4] = 5; //Atribui o valor 5 à posição identificada pelos índices 1 (2ª linha) e 4 (5ª coluna). 0 1 2 3 4 5 x 0 1 5

Programação de Computadores I Prof. Eduardo 6 mat[3][2] = D ; //Atribui a letra D à posição identificada pelos índices 3 (4ª linha) e 2 (3ª coluna). 0 1 2 0 mat 1 2 3 D y[0][3][1] = 12; //Atribui o valor 12 à posição identificada pelos índices 0 (1ª linha), 3 (4ª coluna) e 1 (2ª profundidade). 1.2.3 Preenchendo uma matriz Preencher uma matriz significa percorrer todos os seus elementos, atribuindo-lhes um valor. Este valor pode ser recebido do usuário, por meio do teclado, ou pode ser gerado pelo programa. No exemplo que segue, todos os elementos de uma matriz bidimensional são percorridos, atribuindo-lhes valores digitados pelo usuário e capturados pelo comando cin. for(i=0;i<7;i++) for(j=0;j<3;j++) cout<< \ndigite o elemento m[ <<i<< ][ <<j<< ]: ; cin>>mat[i][j]; Como a matriz possui sete linhas e três colunas, o for externo deve variar de 0 a 6 (percorrendo, assim, as sete linhas da matriz) e o for interno deve variar de 0 a 2 (percorrendo, assim, as três colunas da matriz). Então, pode-se pensar que, para cada dimensão definida para a matriz, deverá ser utilizada uma estrutura de repetição for para os diferentes índices. É importante lembrar que, as variáveis de controle utilizadas para as estruturas de repetição, devem ser diferentes (observe no exemplo anterior que foram utilizados o i e o j para os nomes das variáveis de controle).

Programação de Computadores I Prof. Eduardo 7 1.2.4 Mostrando os elementos de uma matriz Pode-se também percorrer todos os elementos de uma matriz acessando o seu conteúdo. Para mostrar os valores armazenados dentro de uma matriz, supondo que ela tenha sido declarada como float x[10][6], pode-se executar os comandos a seguir: for(i=0;i<10;i++) for(j=0;j<6;j++) cout<< \nelemento x[ <<i<< ][ <<j<< ]: <<x[i][j]; Exercício resolvido: Criar um algoritmo que leia as três notas de 2 alunos de uma turma. Depois mostre estas notas divididas por 2, uma vez que, constatou-se que estes alunos colaram nas provas. #include<iostream.h> #include<conio.h> void main() clrscr(); float notas[2][3],div; int a,b; for(a=0;a<=1;a++) for(b=0;b<=2;b++) cout<< \ndigite a nota <<b<< do aluno <<a<< : ; cin>>notas[a][b]; for(a=0;a<=1;a++) for(b=0;b<=2;b++) div=notas[a][b]/2; cout<< \nnota dividida <<div; getch(); Exercícios: Implementar os algoritmos desenvolvidos na disciplina de Algoritmos e Estruturas de Dados I.

Programação de Computadores I Prof. Eduardo 8 2 VARIÁVEIS COMPOSTAS HETEROGÊNEAS (Registros) Os registros em C/C++ são definidos Poe meio da utilização da palavra reservada struct, conforme apresentado a seguir: struct nome_do_registro tipo campo1; tipo campo2;... tipo campon; ; A partir da estrutura definida, o programa poderá considerar que existe um novo tipo de dados a ser utilizado chamado nome_do_registro. Este novo tipo de dado é capaz de armazenar várias informações, cujos tipos podem ser diferentes. Estas informações são chamadas de campos da estrutura. Exemplo: struct registro int num; char nome[30]; float saldo; ; No exemplo, um registro chamado registro foi definido. Isto significa que o programa poderá utilizar um novo tipo de dado. Variáveis declaradas desse tipo poderão armazenar três valores: num, nome e saldo. Uma observação importante é que a struct só poderá ser utilizada dentro do bloco onde for definida. Por exemplo, uma struct descrita dentro das chaves que delimitam a função main só poderá ser utilizada por variáveis que também estejam dentro desse bloco. Para permitir que qualquer parte do seu programa entenda e utilize uma struct, sua definição deverá ser feita fora da função main, de preferência logo abaixo das includes. 2.1 Declaração de variáveis do tipo registro É importante ressaltar que, para um programa utilizar uma struct, é necessária a declaração de variáveis desse tipo, da seguinte forma: nome_do_registro nome_da_variável; Considerando que estruturas representam novos tipos de dados, todas as operações realizadas com os tipos predefinidos da linguagem também poderão ser realizadas com as estruturas. Dessa maneira, além de variáveis simples, vetores e matrizes podem ser declaradas como struct. Exemplos: registro var; A variável var é do tipo registro, ou seja, poderá armazenar três valores: num, nome e saldo.

Programação de Computadores I Prof. Eduardo 9 registro exemplo[10][4]; A variável exemplo é uma matriz bidimensional com dez linhas e seis colunas, onde cada posição armazenará três valores: num, nome e saldo. Observação: em alguns momentos, é possível fazer a declaração da variável com a definição da estrutura, no mesmo bloco de comandos. Observe o exemplo a seguir: struct registro int num; char nome[35]; float saldo; x[5][8]; Nesse caso, está sendo declarada uma variável x com cinco linhas e oito colunas, onde cada posição é do tipo registro e, portanto, contém num, nome e saldo. 2.2 Acesso a membros de estruturas Depois de a variável ser declarada, o programa precisa manipular o conteúdo de cada campo individualmente. Para tanto, é preciso informar o nome da variável e o do campo desejado, separados por um ponto. Exemplo 1: Para armazenar os valores 1 e geladeira na variável x, deve-se fazer as atribuições a seguir: struct produto int codigo; char descricao[30]; ; produto x; //a variável x é declarada como sendo um produto. x.codigo = 1; strcpy(x.descricao, geladeira );

Programação de Computadores I Prof. Eduardo 10 Exemplo 2: (Conjunto de registros utilizando um Vetor) Para armazenar os valores 5 e fogão na quinta posição de um vetor, deve-se fazer as atribuições a seguir: struct produto int codigo; char descricao[30]; ; produto eletro[12]; eletro[3].codigo 5; strcpy(eletro[3].descricao, fogão ); //a variável eletro é declarada como sendo um vetor de 12 posições e cada posição é produto. Vale lembrar que, se o vetor começa na posição 0 (zero), a quarta posição é identificada pelo índice três. Vale lembrar que, se o vetor começa na posição 0 (zero), a quarta posição é identificada pelo índice três. Exemplo 3: (Conjunto de registros utilizando um Matriz) Para armazenar os valores 11 e televisão na terceira coluna da sexta linha de uma matriz, deve-se fazer as atribuições a seguir: struct produto int codigo; char descricao[30]; ; produto eletro[8][4]; //a variável eletro é declarada como sendo uma matriz de 8 linhas e 4 colunas, onde cada posições e cada posição é produto. eletro[5][2].codigo 11; strcpy(eletro[5][2].descricao, televisão ); Considerando que tanto as linhas como as colunas de uma matriz começam na posição 0 (zero), a sexta linha é representada pelo índice cinco, e a terceira coluna é representada pelo índice dois. 2.3 Manipulação de cadeias em C/C++ Quando estudamos registros, utilizamos com frequência cadeias de caracteres como um campo de nome, um campo de descrição, etc. Para este tipo de campo, é exigida uma declaração em que se use vetor. Exemplo: char nome[30]; char descricao[20]; Para este tipo de variável, o comando de entrada utilizado é o gets como já conhecemos, mas em relação à atribuição, teremos que utilizar funções da linguagem C/C++.

Programação de Computadores I Prof. Eduardo 11 Então veja algumas funções para a manipulação de cadeias em C/C++: Armazenar valores vindos do teclado: Função: gets( ); Biblioteca: #include<stdio.h> Exemplo: cout<< \ndigite o nome: ; gets(cliente.nome); onde, cliente é o nome do registro e nome é um campo deste registro. Copiando cadeias de caracteres Função: strcpy(str1,str2); A função strcpy copia a cadeia str2 para a str1. Biblioteca: #include<string.h> Exemplo: - Atribuição que conhecemos: descr_p=p.descr; Não utilizar para cadeia de caracteres! - Atribuição correta: strcpy(descr_p,p.descr); onde, a variável descr_p vai receber o conteúdo do campo descr do registro p. Exercício resolvido: Criar um algoritmo que leia os dados de um aluno (RGM e 3 notas). Mostre os dados lidos. #include <iostream.h> #include <conio.h> #include <stdio.h> struct aluno int rgm; float p1,p2,p3; ; void main() struct aluno aluno; cout << "Digite o RGM: "; cin>>aluno.rgm; cout << "Digite a nota 1: "; cin>>aluno.p1; cout << "Digite a nota 2: "; cin>>aluno.p2; cout << "Digite a nota 3: "; cin>>aluno.p3; cout<<"\n\n"; cout << "\n*****dados DO ALUNO*****"; cout << "\nrgm: "<<aluno.rgm; cout << "\nnota 1: "<<aluno.p1; cout << "\nnota 2: "<<aluno.p2; cout << "\nnota 3: "<<aluno.p3; cout << "\n************************"; getch(); Observação: A declaração do registro struct aluno aluno; foi utilizado o mesmo nome do registro para a variável, mas também poderia ser utilizado as seguintes declarações, por exemplo: struct aluno a; aluno aluno; aluno a;