Métodos Computacionais em Física

Documentos relacionados
Variáveis indexadas (arrays)

Me todos Computacionais em Fı sica gnuplot

Me todos Computacionais em Fı sica

3. Linguagem de Programação C

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

Caracteres e Cadeias de Caracteres

Métodos Computacionais. Strings (Vetor de Caracteres)

Cadeias de Caracteres (Strings)

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

INF 1620 P1-16/09/06 Questão 1 Nome:

Algoritmos e Programação

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de Caracteres

Módulo 7 Cadeias de Caracteres

CCO 016 Fundamentos de Programação

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings)

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INF 1620 P1-04/10/03 Questão 1 Nome:

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

Introdução a Programação. Strings (Vetor de Caracteres)

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Fundamentos de Programação

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:

CCO 016 / COM 110 Fundamentos de Programação

Linguagem C. André Tavares da Silva.

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

Programação: Vetores

Disciplina de Algoritmos e Programação

Variáveis indexadas. Capítulo Vetores numéricos

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

Char e Strings de Caracteres

ESTRUTURAS COMPOSTAS VETOR

Linguagem C: Introdução

Programação Estruturada

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

ESTRUTURAS COMPOSTAS

MC-102 Aula 11 Strings

Programação Dicas e Outras Coisas

INTRODUÇÃO À PROGRAMAÇÃO

ESTRUTURAS COMPOSTAS VETOR

Disciplina de Algoritmos e Programação

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

INF 1620 P1-18/09/04 Questão 1 Nome:

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

INF 1005 Programação I lista 09

Mac em C. Resuminho e Exercícios P3

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo

Char e Strings de Caracteres

ponteiros INF Programação I Prof. Roberto Azevedo

INF 1620 P4 30/06/07 Questão 1 Nome:

Aula 15: Vetores e Matrizes em C

Tratamento de Caracteres

Linguagem de Programação C

O vetor é provavelmente um dos mais simples e importantes tipos agregados. Através do seu uso, podemos

Fundamentos de Programação

Estruturas de Dados. Nem sempre, a manipulação de dados é feita por simples elementos...

Estruturas de Dados. Nem sempre, a manipulação de dados é feita por simples elementos... Vetores, Matrizes e Strings Introdução à Computação 1 de 27

Aula 8 - Matrizes e Strings

CCO 016 / COM 110 Fundamentos de Programação

Algoritmos RESUMO - LINGUAGEM C

Introdução à Programação C

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova

1ª Lista de Exercícios

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Linguagem de Programação I Vetores e Strings. Thiago Leite Francisco Barretto

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

INF 1620 P1-17/09/05 Questão 1 Nome:

Introdução à Programação. Strings

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

Introdução à Programação em C Input / Output

INF 1620 P3-25/11/05 Questão 1 Nome:

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 5: Array. (complemento de dois) Aura - Erick

Linguagem de Programação I. Aula 08 Linguagem C: Arrays

INF 1620 P3-29/06/04 Questão 1 Nome:

Ponteiros. Baseado nos slides do Prof. Mauro.

Introdução à Programação

INF 1620 P2-14/10/05 Questão 1 Nome:

INF 1620 P4-01/07/08 Questão 1 Nome:

12 - Dados Estruturados Vetores, Matrizes e Strings

INF 1620 P4-27/06/02 Questão 1 Nome:

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

INF 1620 P1-11/04/08 Questão 1 Nome:

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

ECT1203 Linguagem de Programação

Vetores e Strings. printf ("\na string %s nao esta contida no vetor de %s", string, "strings.\n");

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

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Programação de Computadores II

imprimir seus quadrados.

Introdução à Linguagem C. Adaptado de Deise Saccol

Introdução a Computação

Transcrição:

Métodos Computacionais em Física Tatiana G. Rappoport tgrappoport@if.ufrj.br 214-2

Variáveis indexadas (arrays) Diversos problemas requerem o uso de vetores ou matrizes: Um conjunto de dados do mesmo tipo associados a uma úńica grandeza. Ex.: lista de notas de uma turma, vetor posição r(x,y,z)... Em programação: Dados de um mesmo tipo associados a uma variável indexada (array). São armazenados em uma sequência consecutiva de blocos de memória, todos do mesmo tamanho. Definição de arrays: double r[3]; int gols[3]; double M[4][3];(matriz com 4 linhas e 3 colunas) Definição de arrays com inicialização: double r[3]={2.,-1,1.5}; int gols[3]={}; int M[4][3]={{1,2,3},{3,2,1},{1,3,2},{1,1,1}};

Arrays- utilização Os índices de um array de dimensão N variam de a N-1 int main()! {!! double r[3]={2.,-1,1.5}; int gols[3]={}; //todos elementos sao zero double rm[3]={1.,2.} //3o elemento zero float modulo2 =,x=; x = r[];!! r[]=3.; r[]=4.*rm[] for(i = ; i < 3; ++i) { modulo2 = modulo2 + r[i]*r[i]; }!}

Arrays Não é possível criar um array sem que seu tamanho seja especificado na compilação. Este tamanho deve ser inteiro e constante. Nãõ podemos fazer: int N = 3; int N=3; double posicao[n]; Mas podemos: const int N=3; double posicao[n]; ou #define N 3; double posicao[n];

Arrays - erros comuns v[3]= {3.,1.5,-2.}; só vale na inicialização. Se for usado no meio do programa para atribuição de valores está errado! O programa não verifica violação de dimensão de array. Resultados imprevisíveis ou segmentation fault (falha) x[3] = {1,3,5}; v = x[3]; x[] x[1] x[2] y z 1 3 5 4 2 Atribui o valor de y a v! x[4] = 7; Altera o valor de z para 7 ou dá erro.

Exemplo #define DIM 5 #include <stdio.h> int main () { int vetor1[dim], vetor2[dim], i, prod=; for (i = ; i < DIM; i++) { scanf( %d, &vetor1[i]); } for (i = ; i < DIM; i++) { scanf( %d, &vetor2[i]); } for (i = ; i < DIM; i++) { prod =prod+ vetor1[i] * vetor2[i]; } printf( O produto vale %d, prod) ; return ; }

Exercício Modifique o exemplo anterior para que além de calcular o produto escalar, também forneça o cosseno do ângulo entre dois vetores cujas componentes são lidas do teclado. Escreva um algoritmo e implemente um programa em C para calcular, dadas as componentes de um vetor, o seu módulo e seu vetor unitário. Será que você consegue fazer gráfico vetorial no gnuplot? Salve as componentes de alguns vetores num arquivo vetor.dat e tente fazer o gráfico vetorial desses vetores. Consulte o manual. Use arrays!

Algorítmo de ordenação Como trocar os valores de duas variáveis? int a = 3; int b = 2; a = b; b = a; printf ("a = %d e b = %d\n", a, b); Não!! int a = 3; int b = 2; int temp; temp = a; a = b; b = temp; printf ("a = %d e b = %d\n", a, b);

Algorítmo de ordenação Percorre-se toda a lista Compara-se um elemento da lista, E, com todos os subsequentes Quando se encontra o menor dos elementos tal que S < E, esse elemento é trocado com o elemento E. Ao se atingir o úĺtimo elemento da lista, ela está ordenada 5 4 39 44 39 4 5 44 39 4 5 44 39 4 5 44 39 4 44 5

Exercício Escreva um programa em C que implemente o algoritmo de ordenação discutido em sala. A lista de números a ser ordenada deve ser lida de um arquivo e a lista final, ja ordenada, escrita em outro. Modifique o programa de modo que ele solicite a entrada, via teclado, do nome do arquivo que contém a lista de números não ordenada. A extensão desse arquivo deve ser.entrada escreva a lista ordenada em um arquivo que deve ter o mesmo nome do arquivo de entrada mas com a extensão.saida Use arrays!

Caracteres Além de arrays de núḿeros, podemos usar arrays de caracteres tipo char, que para o C são números. Existe uma correspondência entre o valor numérico da variável e o caractere na tabela ASCII. Usamos %c para imprimir a letra: char letra; char letra; letra = a ; printf("letra = %c \n", letra); Também pode ser lido do teclado: scanf("%c", &letra);

Sequências de caracteres - strings Podemos usar arrays de caracteres para formar palavras char c[2] = { O, i }; char nome[9] = { A, n, a,, M, a, r, i, a }; Ok mas inadequado String: char nome[] = "Ana Maria"; Array de caracteres de dimensão 1. Equivale a char c[1] = { A, n, a,, M, a, r, i, a, \ }; Caracter nulo: \ indica o fim de uma string. Necessário ao usar as funções com string da biblioteca padrão. As propriedades de array valem normalmente: nome[4] retorna o quinto caracter da string nome

Funções com strings Incluir biblioteca: #include <string.h> strcpy(s2, s1); Copia a string s1 na string s2 (s2 deve ter elementos suficientes). strcat(s2, s1); Concatena (adiciona) a string s1 ao final da string s2. n = strlen(s1); retorna o número de caracteres da string s1. (dimensão - 1, não inclui o \ ) strstr(s2, s1); Testa se a string s1 está contida na s2 if( strstr(s2, s1)!= NULL){... }

Entrada e saída com strings scanf("%s",palavra); Lê uma sequência de caracteres sem brancos. Adiciona o \. Palavra deve ter dimensão suficiente. printf ("Entre com o nome do arquivo de saida\n"); scanf("%s", nomearqout ); printf("%s\n",nome); Imprime nome. Pode conter brancos. Sabe o fim da string devido ao \. printf( O arquivo de saida e %s\n, nomearqout); sprintf(str, formato, variavel); Escreve o valor de variável na string str. Adiciona o \. str deve ter dimensão suficiente. sprintf(palavras,"x = %f", x); sscanf(str, formato, &variavel); Atribui o valor da string str à variável. sscanf(".3","%f",&x) dá x =.3

Exercício Escreva um programa em C que implemente o algoritmo de ordenação discutido em sala. A lista de números a ser ordenada deve ser lida de um arquivo e a lista final, ja ordenada, escrita em outro. Modifique o programa de modo que ele solicite a entrada, via teclado, do nome do arquivo que contém a lista de números não ordenada. A extensão desse arquivo deve ser.entrada escreva a lista ordenada em um arquivo que deve ter o mesmo nome do arquivo de entrada mas com a extensão.saida Use arrays!

Histogramas Histogramas são usados para visualizar e analisar dados distribuídos em determinadas categorias ou em intervalos de uma dada variável. Permitem que se perceba o valor central (média), a faixa de variação (desvio padrão), possíveis estruturas e eventos inesperados. 3 25 2 15 1 5-3 -1.8 -.6.6 1.8 3 Intervalos

Histogramas Para construir um histograma classificamos os dados de acordo com os intervalos, calculando o núḿero N(xi) ou a frequência F(xi) = N(xi)/N de ocorrência em cada intervalo. 3 25 2 15 1 5-3 -1.8 -.6.6 1.8 3 Intervalos

Histogramas Quando queremos fazer um histograma de uma variável real, definimos uma largura do intervalo (bin), x. As quantidades N(xi) vão representar o número de ocorrências entre xi e xi+ x. N(xi) depende da largura x. 25 2 15 1 5 N(xi ) -3-1.8 xi -.6.6 1.8 3 3 25 2 15 1 5-3 -1.8 -.6.6 1.8 3 Intervalos Variavel

Histogramas - largura do intervalo A escolha da largura dos intervalos pode distorcer o comportamento dos dados que estamos analisando. 3 12 25 2 15 1 5 1 8 6 4 2-3 -1.8 -.6.6 1.8 3-3 -1.8 -.6.6 1.8 3 Intervalos Variavel 35 3 25 2 15 1 5-3 -1.8 -.6.6 1.8 3

Histogramas - largura do intervalo 5 45 4 35 3 25 2 15 1 5-3 -1.8 -.6.6 1.8 3 8 7 6 5 4 3 2 1-3 -1.8 -.6.6 1.8 3 Variavel Variavel 16 14 12 1 8 6 4 2-3 -1.8 -.6.6 1.8 3 Variavel

Histogramas - normalização Dividir o número de eventos em cada intervalo pelo número total de eventos: A altura de cada barra indica o percentual de eventos que ocorre no intervalo. A soma de todas as alturas vale 1. Mais adequado se queremos tratar a distribuição dos dados como uma distribuição de probabilidades..35.3.25.2.15.1.5-3 -1.8 -.6.6 1.8 3 5 45 4 35 3 25 2 15 1 5-3 -1.8 -.6.6 1.8 3 Variavel Variavel