A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

C++ e Root Alexandre Suaide aula 1.

Apresentações semelhantes


Apresentação em tema: "C++ e Root Alexandre Suaide aula 1."— Transcrição da apresentação:

1 c++ e Root Alexandre Suaide aula 1

2 Ferramentas para análise de dados
Paradigma 1 Ferramentas prontas para executar tarefas específicas para análise de dados Origin Excel MathCad Mathematica DAMM SCAN Etc A flexibilidade é limitada ao que cada programa oferece Paradigma 2 Ferramentas que permitem cada usuário criar o próprio ambiente de análise de dados Linguagens de programação PAW ROOT A flexibilidade é muito elevada custo de uma intervenção maior do usuário

3 Objetivos deste mini-curso
Mostrar os fundamentos do c++ Não é um curso de lógica de programação Programação orientada a objetos Introdução ao ROOT ROOT como ferramenta de programação e análise de dados 5 aulas Mais ou menos a cada 3 semanas Ver

4 Programa Aula 1 Introdução ao c++ e ROOT c++ básico Aula 2
Ponteiros/referências Classes e objetos Aula 3 ROOT como ferramenta de programação/análise Aula 4 Classes e objetos no ROOT Aula 5 Análise de dados no Pelletron (ScanROOT)

5 1983 (Introdução) – 1998 (padronização) Evolução do c?
Linguágem nova 1983 (Introdução) – 1998 (padronização) Evolução do c? Alguns dizem que sim, outros que não C 1971 (introdução), 1989 (padronização) 1980 (c com classes) Muitos compiladores no mercado Gcc (linux), Borland, Microsoft, etc. Cada um com o seu jeito de compilar programas Vamos utilizar o ROOT como ferramenta de programação

6 O que é ROOT? (http://root.cern.ch)
Uma análise sólida se constrói a partir de métodos confiáveis que não imponham limitações à criatividade do pesquisador Análise Interface entre o usuário e as ferramentas de análise Ferramentas de visualização e manipulação gráfica Ferramentas básicas I/O, ferramentas gráficas, métodos de cálculo Nível mais fundamental. Interface com S.O.

7 Então, o que é ROOT? Conjunto de bibliotecas escritas em c++ cuja finalidade é permitir o desenvolvimento de técnicas de simulação, aquisição e análise de dados As bibliotecas seguem a filosofia de programação orientada a objeto A interface com o usuário se faz de três modos Prompt de comando Interpretador c/c++ (CINT) Permite total acesso a funcionalidade do ROOT e c++ O prompt de comando atua como um compilador em tempo real. Interface gráfica Permite manipulação de objetos gráficos (histogramas, gráficos, objetos, menus, etc) Compilador c++ (gcc em Linux e VC em windows) Permite compilar programas avançados e criar novos programas específicos, utilizando a funcionalidade do ROOT ScanRoot, SPMRoot Necessita conhecimento de c++ para fazer bom proveito do sistema

8 Como iniciar o programa  Digite root Como sair do ROOT Digite .q
Comandos básicos Como iniciar o programa  Digite root Como sair do ROOT Digite .q Estranho, mas como o ROOT é um interpretador c++, os comandos internos do mesmo têm que ser diferenciados. Assim, todos os comandos do ROOT começam com “.”. Os comandos mais importantes, alem do .q são .L para carregar um programa (macro) na memória .x para carregar e executar um programa .h para um help dos comandos disponíveis

9 A interface do ROOT Use a tecla TAB para obter ajuda
root [0] b = new TB <TAB> root [1] b = new TBrow<TAB> root [2] b = new TBrowser(<TAB> Útil para descobrir a lista de métodos Descobrir também lista de parâmetros

10 Estrutura de um programa simples em c++
Diretivas do pré-processador Definição de novas classes, se necessário Protótipos Variáveis globais (se necessárias) Função principal (main) Outras funções

11 Estrutura de um programa simples em c++
Diretivas do pré-processador Comandos que começam com # São executados SOMENTE durante a fase de compilação do programa O compilador realmente substitui as diretivas para o código apropriado Ex: #include, #define, #ifdef Definição de novas classes, se necessário Protótipos Variáveis globais (se necessárias) Função principal (main) Outras funções

12 Estrutura de um programa simples em c++
Diretivas do pré-processador Definição de novas classes, se necessário O C++ é uma linguagem orientada para objetos Objetos são definidos através de classes Caso o usuário queira definir novos tipos de objetos. Protótipos Variáveis globais (se necessárias) Função principal (main) Outras funções

13 Estrutura de um programa simples em c++
Diretivas do pré-processador Definição de novas classes, se necessário Protótipos Todas as funções devem ser definidas antes da primeira chamada no código Isso muitas vezes é complicado pois uma função chama outra O uso de protótipos facilita a vida Variáveis globais (se necessárias) Função principal (main) Outras funções

14 Estrutura de um programa simples em c++
Diretivas do pré-processador Definição de novas classes, se necessário Protótipos Variáveis globais (se necessárias) Variáveis que podem ser acessadas em todas as funções e classes do programa Desaconselhado o uso pois dificulta portabilidade As vezes é um mal necessário Função principal (main) Outras funções

15 Estrutura de um programa simples em c++
Diretivas do pré-processador Definição de novas classes, se necessário Protótipos Variáveis globais (se necessárias) Função principal (main) O programa, quando executado, inicia em uma função especial chamada main() No root, esta função especial deve ter o nome do arquivo. Ex. Se o arquivo chama teste.c, pode-se ter uma função teste() Outras funções

16 Estrutura de um programa simples em c++
Diretivas do pré-processador Definição de novas classes, se necessário Protótipos Variáveis globais (se necessárias) Função principal (main) Outras funções As outras funções que foram definidas através dos protótipos

17 Exemplo de um programa simples em c++
Diretivas de pré-compilador // duas barras significam comentarios #include “file.h” // inclui o arquivo file.h #define PI //definição de uma constante int func1(int); float area(float, float); float var1; // variavel global int main() { int var2; // variavel local // codigo da funcao main() } int func1(int a) int var3; // variavel local float var4; // variavel local // codigo da funcao func1 float area(float lado, float altura) // codigo da funcao area Prototipos de funcoes Variáveis globais Função main() As outras funções do programa

18 Exemplo de um programa simples em c++
// duas barras significam comentarios #include “file.h” // inclui o arquivo file.h #define PI //definição de uma constante int func1(int); float area(float, float); float var1; // variavel global int main() { int var2; // variavel local // codigo da funcao main() } int func1(int a) int var3; // variavel local float var4; // variavel local // codigo da funcao func1 float area(float lado, float altura) // codigo da funcao area { e } definem funções ou blocos de programa. ; significa fim de comando No c e c++, fim de comando são representados por ; um comando pode ocupar várias linhas de código até encontrar o ;

19 Palavras chave da linguágem
Loops  for, do, while Decisão  if, else Múltipla escolha  switch, case, break, default Dados  typedef, enum, struct, union Desvio  goto, return C++ Classes  class, public, protected, private, inline, pure, virtual, etc… Poucas palavras chaves O c e c++ dependem de bibliotecas extras para grande parte das tarefas

20 Meu primeiro programa em c++
Tipo de retorno da função Nome da função. Para ser executada com o comando .x deve ter o mesmo nome do arquivo Utilize o seu editor de textos favorito (vi, nedit, emacs, etc.) Entre no root e digite root [0]: .x hello.C Hello Alex root [1]: _ void hello() { cout << “Hello Alex” << endl; return; } Arquivo hello.C Separação de comandos são feitas através do ; Funções ou blocos de programas são encapsulados com { }

21 Variáveis em c++ As variáveis em c++ têm tamanho definidos de acordo com o compilador c++ do sistema operacional (ex: int em i386 tem 4 bytes enquanto em solaris, 8) O root define tipos similares com tamanho fixo para manter compatibilidade entre sistemas diferentes Tipo C++ Root Fortran Vazio (0) void - Byte (1) char Char_t CHARACTER*1 Curto (2) short Short_t INTEGER*2 Inteiro (4) int Int_t INTEGER*4 Longo (8) long Long_t INTEGER*8 Real (4) float Float_t REAL*4 Dupla (8) double Double_t REAL*8 Nomes de variáveis são sensíveis a maiúsculo/minúsculo Em c++ vetores são definidos utilizando [ ] e são indexados a partir do 0 Em fortran utiliza-se ( ) e os vetores são indexados a partir do 1

22 Não existem variáveis pré-definidas, como no FORTRAN
Exemplos de variáveis Não existem variáveis pré-definidas, como no FORTRAN Em compensação, variáveis podem ser definidas em qualquer ponto do programa Exemplos de definição de variáveis int a; Definição simples int i,j,k; Definição múltipla float pi=3.1415, r0=1.2; Definição c/inicialização double a[10], b[5][20]; Definição de vetores float c[5] = {1,2,3,4,5}; Definição c/inicialização float d[3][2] = {{1,2,3},{4,5,6}}; char texto[20] = “testando”;

23 Comentários e IO básico
/* comentário de bloco */ // comentário de linha IO básico Uso dos operadores >> (puxar) e << (empurrar) cout/cin (vídeo e teclado) cout << “Ola = “ << << endl; int idade; cout << “Quantos anos voce tem? “; cin >> idade; int altura, peso; cout << “Qual a sua altura e peso? “; cin >> altura >> peso; Muda de linha

24 Loops for(int i=0; i<10; i++)
for ( cond. inicial; condição de teste; alteração) { comandos } for(int i=0; i<10; i++) { int a = i*i; cout << i << “*” << i << “ = “ << a << endl; } do { alguma coisa } while ( condição de teste ); int i = 0; do i++; } while (i<10); while ( condição de teste ) { alguma coisa } while (i<10)

25 O comando else é opcional
if ... else Condições if ( condição ) comando; else outroComando; if ( condição ) { comando1; comando2; } else Operadores condicionais == (igual), != (diferente), || (or), && (and), ! (not), etc. O comando else é opcional if (a<10) cout << “a é menor que 10” << endl; else cout << “não é menor que 10” << endl; if(a>10 && a<20) cout <<“a entre 10 e 20”<<endl; if(a!=10) cout <<“a é diferente de 10”<<endl;

26 Funções em c++ Funções permitem a compactação de um programa, fazendo com que blocos repetitivos sejam tratados de forma isolada tipo nome(parametros) { comandos; return valor; } Exemplo: cálculo da área de um retângulo float area(float lado1, float lado2) float a = lado1*lado2; return a; float l1,l2; cout << “Entre os lados do retângulo ”; cin >> l1 >> l2; cout << “A área desse retângulo é “ << area(l1,l2) <<endl;

27 Polimorfismo Uma característica interessante em c é o polimorfismo. É possível definir funções com mesmo nome mas parâmetros distintos. O c se encarrega de decidir qual função chamar. Exemplo: cálculo da área de um retângulo e quadrado float area(float lado1, float lado2) { float a = lado1*lado2; return a; } float area(float lado) float a = lado*lado; ... float area1 = area(10,20); float area2 = area(10);

28 Exemplo prático: cálculo da seção de choque de Rutherford

29 Exemplo prático: cálculo da seção de choque de Rutherford

30 Como obter informações
Vários tutoriais de ROOT em Referências e documentação do ROOT Página principal do root Documentação sobre as classes do root Tutoriais com exemplos simples, passo a passo Como resolver problemas comuns


Carregar ppt "C++ e Root Alexandre Suaide aula 1."

Apresentações semelhantes


Anúncios Google