Software de Telecomunicações. Verificação de modelos com a ferramenta Murphi
|
|
- Eduarda Ramalho Veiga
- 8 Há anos
- Visualizações:
Transcrição
1 Software de Telecomunicações Verificação de modelos com a ferramenta Murphi Prof RG Crespo Software de Telecomunicações Murphi : 1/38 Introdução (1) Passos na análise da segurança de protocolos, baseados em modelos Descrição protocolo Requisitos protocolo (modelo) Modelo intruso Falhas de segurança Analisador Propriedades de segurança (especificação) Prof RG Crespo Software de Telecomunicações Murphi : 2/38
2 Introdução (2) Várias técnicas têm sido exploradas na verificação formal da segurança de protocolos Varrimento dos estados finitos Blast, programas escritos em C Murϕ, programas escritos em Pascal SMV SPIN, Programas escritos em Promela Modelo de estados infinitos (SRI) Álgebra de processos (cálculo π) Modelos probabilísticos (PRISM) Na disciplina usa-se a ferramenta Murϕ, Univ. Stanford/US, acessível em Prof RG Crespo Software de Telecomunicações Murphi : 3/38 Murϕ: introdução (1) O sistema é descrito por Variáveis de estado inicializadas (tabelas de dispersão usadas, para evitar repetição de estados) Regras de transição para cada participante no protocolo Comunicação implementada por variáveis partilhadas O Murϕ varre os estados, por onde o sistema pode passar, terminando quando identificar violação das regras de segurança. bloqueio ( deadlock ) por o estado não ter transições para outro Nota: directiva ndl não verifica bloqueio Prof RG Crespo Software de Telecomunicações Murphi : 4/38
3 Murϕ: introdução (2) Actuais ferramentas permitem analisar até estados. Nota1: Para variáveis com 10 valores, 10 8 é coberto por 8 variáveis. Se o espaço de variáveis for reduzido para 3 valores, 10 3*3 e 10 8 é coberto por 16 variáveis. Nota2: normalmente, os protocolos não cobrem todos os estados gerados pelos espaços das variáveis (certas combinações não têm significado). Para reduzir espaço de pesquisa, adoptadas simplificações: Número finito de participantes (ex: 2 clientes, 2 servidores) Números aleatórios representados por constantes (r1, r2, ) Prof RG Crespo Software de Telecomunicações Murphi : 5/38 Murϕ: introdução (3) Passos na análise de segurança em protocolos 1. Representação do protocolo Definir tipo de dados para cada mensagem. Descrever o comportamento de cada participante, por uma máquina de estados finitos. Descrever a condição de segurança como invariante de estado. 2. Adição do intruso Acede a todas as mensagens ( buffer partilhados) Murϕ tenta todas as combinações possíveis de intercepção, divisão e guarda de mensagens geração de novas mensagens a partir dos dados observados e conhecimentos iniciais (ex: chaves públicas) Prof RG Crespo Software de Telecomunicações Murphi : 6/38
4 Murϕ: introdução (4) O programa a submeter ao Murϕ é formado por 3 partes: 1. Declarações i. Constantes (const) ii. Tipos de dados (type) iii. Variáveis globais (var) 2. Rotinas não aninhadas 3. Comportamento do sistema: Regras de transição Definição dos estados iniciais Invariantes a terem de ser satisfeitos em todos os estados Prof RG Crespo Software de Telecomunicações Murphi : 7/38 Murϕ: introdução (5) Um estado é definido pelo valor das variáveis globais. As falhas de segurança ocorrem quendo o sistema entre num estado que não satisfaz o invariante. Problema Down Benchmark: Numa tabela de inteiros é aplicada uma função de decrementar todas as posições até ao índice máximo. O invariante é detwerminado pela condição da soma da tabela ter de ser positiva (>0). O problema é incluído na distribuição do Murϕ no ficheiro Murphi3.1/ex/toy/down.m Prof RG Crespo Software de Telecomunicações Murphi : 8/38
5 Murϕ: declarações (1) A. Bloco de constantes const {id: expressão-inteira;} Zero, uma, ou mais Ex: Down Benchmark const INITIAL_VAL: 5; -- valor inicial da tabela L: 1; H: 6; -- índices inferior e máximo MAX_VAL:(H-L+1)*INITIAL_VAL; Prof RG Crespo Software de Telecomunicações Murphi : 9/38 Murϕ: declarações (2) B. Tipos type {id: tipo;} O Murϕ suporta os seguintes tipos de dados: boolean -- booleanos, constantes true e false <expr>.. <expr> -- gama de valores enum { id {,id} } -- enumerados scalarset( <expr> {,<expr>} ) -- conjunto de valores, não ordenados e não identificados union { tipo {, tipo} } -- grupos de scalarset record { decl-var } end -- estruturas array [ tipo ] of tipo -- tabelas de objectos multiset [ DIM ] of tipo -- colecções não ordenadas de objectos de -- determinado tipo e tamanho máximo DIM Prof RG Crespo Software de Telecomunicações Murphi : 10/38
6 Murϕ: declarações (3) Nota1: não há inteiros, devido ao elevado espaço ocupado pelos literais. Nota2: limites dos enumerados e dimensão do scalarset devem poder ser calculados na altura da declaração. Nota3: não existem literais nos scalarset. Valores podem ser atribuídos a variável id de tipo scalarset pelas instruções forall, exists, for, ruleset ou atribuição de outra variável de tipo scalarset. Ex: Down Benchmark type ind_t: L..H; val_t: 0..INITIAL_VAL; arr_t: Array[ ind_t ] Of val_t; sum_t: 0.. MAX_VAL; Prof RG Crespo Software de Telecomunicações Murphi : 11/38 Murϕ: declarações (4) C. Variáveis de estado var {id: tipo;} Ex: Down Benchmark var a: arr_t; Prof RG Crespo Software de Telecomunicações Murphi : 12/38
7 Murϕ: instruções (1) <stmts> ::= <stmt> {; <stmt> } --- as instruções são separadas por ; A. Atribuição id := <expr> B. Retorno de função return [ <expr>] C. Condicional if <expr> then [ <stmts> ] { elsif <expr> then [ <stmts> ] } [ else [ <stmts> ] ] endif Prof RG Crespo Software de Telecomunicações Murphi : 13/38 Murϕ: instruções (2) D. Escolha valores switch <expr> { case <expr> then [ <stmts> ] } [ else [ <stmts> ] ] endswitch E. Varrimento for <quantif> do [ stmts ] endfor <quantif> ::= id:<tipo> id := <expr> to <expr> [by <expr>] F. Ciclo while <expr> do [ stmts ] end Prof RG Crespo Software de Telecomunicações Murphi : 14/38
8 Murϕ: instruções (3) G. Geração erro error <string> --- termina verificação e imprime string H. Asserção assert <expr> [ <string> ] --- equivale if!<expr> then error <string> end I. Chamada a procedimento id ( <expr> {, <expr> }) J. Impressão put ( <expr> <string> ) Prof RG Crespo Software de Telecomunicações Murphi : 15/38 Murϕ: instruções (4) As expressões podem ser formadas por Operadores inteiros (+, -, *, /, %) Operadores relacionais (=,!=, >, >=, <, <=) Operadores lógicos (!,, &, ->) Chamada a funções Quantificador universal forall <quantif> do <expr> endforall Quantificador existencial exists <quantif> do <expr> endforall Localização id {. id [ <expr> ] } Nota: nos quantificadores, <expr> deve ser de tipo booleano Prof RG Crespo Software de Telecomunicações Murphi : 16/38
9 Murϕ: rotinas (1) As rotinas (procedure ou function), não aninhadas, são todas declaradas entre as declarações e o programa. procedure id( [ par {; par} ]); [ <decl> begin ] [ <stmts> ] opcional function id ([ par {; par} ]) <tipo>; [ <decl> begin ] [ <stmts> ] Prof RG Crespo Software de Telecomunicações Murphi : 17/38 Murϕ: rotinas (2) Parâmetros podem ser passados por referência ou por valor Ex: Down Benchmark procedure Decrement( var dec : val_t ); begin if dec >= 1 then dec := dec-1; Function Sum( a : arr_t ): sum_t; var sum : sum_t; begin sum := 0; for i : ind_t do sum := sum+a[i]; return sum; Prof RG Crespo Software de Telecomunicações Murphi : 18/38
10 Murϕ: scalarset Seja a declaração var id:multiset[dim] of type; mutisetadd(<expr>,loc) -- armazena valor ismember(<expr>,type) -- verifica se expressão está armazenada multisetcount(i:loc,<expr>) -- devolve numero de valores armazenados, que satisfazem -- condição indicada pela expressão booleana Prof RG Crespo Software de Telecomunicações Murphi : 19/38 Murϕ: regras (1) As regras de comportamento identificam as transições no autómato. Cada regra é dividida em condição e acção. O Murϕ armazena os estados percorridos, por omissão em largura. Os estados visitados são marcados, bem como todas as transições percorridas. O verificador executa todos os traços possíveis. Se for atingido um estado que não satisfaça o invariante, ou um estado sem transições, termina execução. O Murϕ é formado por regras simples. Outros construtores facilitam a especificação do protocolo. ruleset e startstate Invariante Choose Prof RG Crespo Software de Telecomunicações Murphi : 20/38
11 Murϕ: regras (2) A. Simples <simplerule> ::= rule [<string>] [ <expr> ==> ] [ {<decl>} ] begin [ stmts ] -- normalmente altera estado do sistema end Nota: a expressão tem de ser de tipo booleano e determina a pré-condição para execução da transição Prof RG Crespo Software de Telecomunicações Murphi : 21/38 Murϕ: regras (3) B. Conjunto <ruleset> ::= ruleset <quantif> { ; <quantif> } do <regras> end As <regras> são duplicadas, com a substituição dos identificadores por cada um elementos do scalarset ou intervalo de valores. Prof RG Crespo Software de Telecomunicações Murphi : 22/38
12 Murϕ: regras (4) Ex: Down Benchmark ruleset i : L.. H do rule a[i] > 0 ==> begin Decrement( a[i] ); if i+1 < H then if a[i+1] > 0 then Decrement(a[i+1]); Prof RG Crespo Software de Telecomunicações Murphi : 23/38 Murϕ: regras (5) C. Início <startstate> ::= startstate [ <string> ] [ { <decl> } ] begin <stmts> end As regras <startstate> são executada apenas no início da verificação. As instruções devem inicializar as variáveis. Prof RG Crespo Software de Telecomunicações Murphi : 24/38
13 Murϕ: regras (6) Ex: Down Benchmark startstate begin for i : ind_t do a[ i ] := INITIAL_VAL; Prof RG Crespo Software de Telecomunicações Murphi : 25/38 Murϕ: regras (7) D. Invariantes <invariant> ::= invariant [ <string> ] <expr> O invariante corresponde à regra rule end!<expr> ==> error <string> Ex: Down Benchmark invariant "Positive sum" Sum(a) > 0; Prof RG Crespo Software de Telecomunicações Murphi : 26/38
14 Murϕ: regras (8) E. Choose choose i:loc do O Murϕ selecciona um elemento de uma localização de tipo multiset Prof RG Crespo Software de Telecomunicações Murphi : 27/38 Modelo intruso Dolev-Yao As capacidades de um intruso são descritas no modelo proposto por Dolev e Yao*. No modelo, o intruso pode Pode interceptar e emitir mensagens Pode dividir e formar pares Pode cifrar/decifrar mensagens desde que conheça a chave. * On the security of public key protocols; D. Dolev and A. Yao; IEEE Transations on Information Theory 29(2), pp ; Mar Prof RG Crespo Software de Telecomunicações Murphi : 28/38
15 Exemplo (1) Consideremos um protocolo inseguro de envio de uma mensagem secreta As chaves são conhecidas apenas pelos donos. I {M}K I {M}K I K R R Nota: protocolo falha, porque as mensagens não são autenticadas I E R {M}K R {M}K I {M}K I K E {M}K E {O}K E {O}K E K R {O}K R Prof RG Crespo Software de Telecomunicações Murphi : 29/38 Exemplo (2) 1. Canais de comunicação implementados por uma variável global de tipo multiset Const NetworkCap: 2; -- max number of outstanding msgs in the net Type Message: record -- message contents Var net: multiset[networkcap] of Message; -- network Prof RG Crespo Software de Telecomunicações Murphi : 30/38
16 Exemplo (3) 2. Estado do agente determinado por variável de tipo enumerado. O estado de partida deve ser testado na précondição Type InitiatorStates: enum{i_sleep,i_wait, I_COMMIT}; Initiator:record state: InitiatorStates; Var ini: array[initiatorid] of Initiator; Prof RG Crespo Software de Telecomunicações Murphi : 31/38 Exemplo (4) 3. Intercepção implementada por envio de mensagens do nó para todos os restantes agentes Type InitiatorId: scalarset(numinitiators); ResponderId: scalarset(numresponders); EavesdropperId: scalarset(numeavesdroppers); AgendId: union{initiatorid, ResponderId, EavesdropperId}; Prof RG Crespo Software de Telecomunicações Murphi : 32/38
17 Exemplo (5) ruleset i:initiatorid do ruleset d:agentid do rule 01 "Initiator sends ciphered message ini[i].state=i_sleep &!ismember(d,initiatorid) -- only to Responder and Intruder ==> var outm: Message; -- outgoing message begin -- constructs message mutisetadd(outm,net); -- message sent! Prof RG Crespo Software de Telecomunicações Murphi : 33/38 Exemplo (6) 4. Intruso guarda mensagens num multiset Const MaxKnowledge:5; -- max number of msgs intruder can remember Type Intruder:record gotit: boolean; store: mutiset[maxknowledge] of Messages; Var int: array[eavesdropperid] of Intruder; Prof RG Crespo Software de Telecomunicações Murphi : 34/38
18 Verificação (1) Para gerar o ficheiro de verificação, executar o Makefile MU = /usr/local/share/murphi3.1/bin/mu.x86 INCLUDE = /usr/local/share/murphi3.1/include/ CXX = g++ CFLAGS = -DCATCH_DIV -fno-default-inline -Wnodeprecated test: test.c ${CXX} ${CFLAGS} -I${INCLUDE} test.c -o test lm test.c: test.m ${MU} -c test.m clean: rm -f test test.c Prof RG Crespo Software de Telecomunicações Murphi : 35/38 Verificação (2) Verificação executada directamente no programa gerado Opções disponíveis -h imprime lista de comandos -ndl não verifica bloqueio -p muito mais verboso Exemplo de verificação com opção -p Unpacking state from queue: ini[initiatorid_1].state:i_sleep res[responderid_1].state:r_sleep res[responderid_1].deliver:undefined int[eavesdropperid_1].gotit:false Prof RG Crespo Software de Telecomunicações Murphi : 36/38
19 Verificação (3) The following next states are obtained: Firing rule Initiator sends ciphered message, d:responderid_1, i:initiatorid_1 Obtained state: net{0}.mtype:m_inicipher net{0}.data:valid net{0}.source:initiatorid_1 Mensagem inserida na rede net{0}.dest:responderid_1 net{0}.key1:initiatorid_1 net{0}.key2:undefined ini[initiatorid_1].state:i_wait res[responderid_1].state:r_sleep res[responderid_1].deliver:undefined int[eavesdropperid_1].gotit:false Prof RG Crespo Software de Telecomunicações Murphi : 37/38 Verificação (4) Firing rule Initiator sends ciphered message, d:eavesdropperid_1, i:initiatorid_1 Obtained state: net{0}.mtype:m_inicipher net{0}.data:valid net{0}.source:initiatorid_1 net{0}.dest:eavesdropperid_1 net{0}.key1:initiatorid_1 net{0}.key2:undefined ini[initiatorid_1].state:i_wait res[responderid_1].state:r_sleep res[responderid_1].deliver:undefined int[eavesdropperid_1].gotit:false Prof RG Crespo Software de Telecomunicações Murphi : 38/38
Programação Básica em Arduino Aula 2
Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas
Leia maisFaculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação
FaculdadedeCiências UniversidadeAgostinhoNeto DepartamentodeMatemáticaeEngenhariaGeográfica CiênciasdaComputação ProgramaçãoII SegundaParte Adaptado de um original dos docentes de ISCTE Objectivos Os alunos
Leia maisTestes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins
Testes Baseados na Implementação (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins 1 Tópicos O que é Grafo de fluxo de controle Critérios de cobertura 2 Referências B.Beizer R.Binder
Leia maisHugo Pedro Proença, 2007
Stored Procedures À medida que a complexidade dos sistemas aumenta, torna-se cada vez mais difícil a tarefa de integrar o SQL com as aplicações cliente. Além disto, é necessário que todas as aplicações
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisPHP. Hypertext Pre-Processor
PHP Hypertext Pre-Processor O que é o PHP? Uma linguagem de scripting é uma linguagem cujo código não tem de ser compilado para ser executado! O código escrito é interpretado em tempo de execução para
Leia maisOs objetivos indicados aplicam-se a duas linguagens de programação: C e PHP
AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de
Leia maisConjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;
Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo; O tipo de dados tem por base um tipo simples (enumerável); Na verdade, um set representa o conjunto
Leia maisSintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica mleal@inf.puc-rio.br Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner
Leia maisVariáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea
Variáveis Compostas Heterogêneas Variável Composta Heterogênea Conjunto de dados logicamente relacionados, mas de tipos diferentes. Também chamada de registro. Variável Composta Heterogênea 1 Declaração
Leia maisEstrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
Leia maisIFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01
IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 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
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 3: Métodos LEEC@IST Java 1/45 Métodos (1) Sintaxe Qualif Tipo Ident ( [ TipoP IdentP [, TipoP IdentP]* ] ) { [ Variável_local Instrução ]* Qualif: qualificador (visibilidade,
Leia maisBusca em Espaço de Estados
Busca em Espaço de Estados Jomi Fred Hübner jomi@inf.furb.br FURB / BCC Introdução 2 Agente orientado a meta O projetista não determina um mapeamento entre percepções e ações, mas determina que objetivo
Leia maisINTRODUÇÃO OBJECT PASCAL/DELPHI
Introdução Object Pascal/Delphi 1 INTRODUÇÃO OBJECT PASCAL/DELPHI Objetivo Demonstrar a sintaxe e a semântica do Object Pascal e a forma como esse linguagem de programação será aplicada na disciplina de
Leia maisUm sistema SMS 1 simplificado
1 Introdução Um sistema SMS 1 simplificado Projecto de Redes de Computadores I - 2007/2008 LEIC IST, Tagus Park 10 de Setembro de 2007 Pretende-se com este projecto que os alunos implementem um sistema
Leia maisPlanificação Anual da disciplina de TIC 9ºANO
Planificação Anual da disciplina de TIC 9ºANO Conteúdos/Temas Competências Avaliação 1.1. Conceitos Introdutórios - Conhecer os conceitos básicos: Informação Informática Tecnologias da Informação e - Conhecer
Leia maisFerramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)
Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP) Existem inúmeras ferramentas (software) baseadas em RdP que permitem desenvolver modelar e analisar sistema de RdP. Algumas
Leia maisFilas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário
Filas Fila é um tipo de lista linear onde as inserções são realizadas num extremo (final da Fila) e as remoções restritas ao outro (começo da Fila). O primeiro a entrar é o primeiro a sair e último a entrar
Leia maisAlgoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação
1 Algoritmo Prof. Anderson Almeida Ferreira Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação Desenvolvimento de programas 2 Análise do problema Desenvolvimento
Leia maisReconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL
OBJECTIVOS Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL O objecto DOCMD Este objecto permite o acesso a todas as operações sobre todos os objectos
Leia maisSintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por
Leia maisCalculador de preços e prazos de encomendas
Calculador de preços e prazos de encomendas O calculador de preços e prazos de encomendas dos Correios é destinado aos clientes que possuem contrato de SEDEX, e-sedex e PAC, que necessitam calcular, no
Leia maisMANUAL DO UTILIZADOR DE REDE
MANUAL DO UTILIZADOR DE REDE Guardar o registo de impressão na rede Versão 0 POR Definições de notas Ao longo do Manual do utilizador, é utilizado o seguinte ícone: Notas sobre como enfrentar situações
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia maisAlgoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31
APROG Algoritmia e Programação Linguagem JAVA Básico Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Linguagem Java Estrutura de um Programa Geral Básica Estruturas de Dados Variáveis Constantes Tipos de Dados
Leia mais2.3. PHP Tipos de dados e operadores
Programação para Internet II 2.3. PHP Tipos de dados e operadores Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Tipos de dados Embora não seja necessário declarar os tipos de dados das variáveis,
Leia maisMétodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.
Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Construtor: método executado por uma CLASSE (e não por um objeto, instância da classe)
Leia maisO código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.
1 - O que é JAVASCRIPT? É uma linguagem de script orientada a objetos, usada para aumentar a interatividade de páginas Web. O JavaScript foi introduzido pela Netscape em seu navegador 2.0 e posteriormente
Leia maisINTRODUÇÃO À LINGUAGEM C++
INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem
Leia maise à Linguagem de Programação Python
Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto
Leia maisVariáveis e estruturas de controlo. Introdução à Programação André L. Santos
Variáveis e estruturas de controlo Introdução à Programação André L. Santos Variáveis Uma variável pode ser vista como um espaço em memória onde um valor de determinado tipo (p.e. inteiro) pode ser guardado.
Leia maisIdentificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)
Aulas anteriores... Formulação adequada do problema Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução Definição do algoritmo Método de decomposição hierárquica utilizando
Leia maisSincronização. Cooperação entre Processos
Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência
Leia maisProgramação Estruturada e Orientada a Objetos REVISÃO
Programação Estruturada e Orientada a Objetos REVISÃO 2013 O que veremos hoje? Introdução Revisão Estruturas de Controle de Fluxo Exercícios Transparências baseadas no material do Prof. Gilbert Azevedo
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Leia maisProjeto de Banco de Dados
Projeto de Banco de Dados Prof. Marcelo Siedler Objetivos do documento: Apresentar os conceitos de stored procedutes e funções. Exercícios. Referência: http://dev.mysql.com/doc/refman/4.1/pt/stored-procedures.html
Leia maisISCAP. Algoritmia. Pág. 1. Ana Paula Teixeira
Algoritmia Pág. 1 Os Computadores e a resolução de Problemas PROBLEMA Fase de Resolução do Problema Pág. 2 Passo difícil Solução como um PROGRAMA de Computador Solução em forma de Algoritmo Fase de Implementação
Leia maisAluísio Eustáquio da Silva
1 Aluísio Eustáquio da Silva SciLab Programável Material didático usado em aulas de Programação de Computadores, Algoritmos e Lógica de Programação Betim Maio de 2012 2 PROGRAMAÇÃO O SciLab permite que
Leia maisIntrodução. A verificação de tipos pode ser estática e dinâmica
Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,
Leia maisPython: Comandos Básicos. Claudio Esperança
Python: Comandos Básicos Claudio Esperança Primeiros passos em programação Até agora só vimos como computar algumas expressões simples Expressões são escritas e computadas imediatamente Variáveis podem
Leia maisO comando if. O comando condicional permite incluir no programa trechos de código que dependem de uma ou mais condições para sua execução.
O comando if if - else O comando condicional permite incluir no programa trechos de código que dependem de uma ou mais condições para sua execução. O comando condicional tem duas formas básicas: if(condição)
Leia maisLaboratório de Banco de Dados II Aula 1. Stored Procedures
Laboratório de Banco de Dados II Aula 1 Stored Procedures Stored procedures Uma seqüência de comandos SQL pode ser agrupada, formando uma stored procedure A sua execução é comandada, invocando-se o nome
Leia maisCurso de Iniciação ao Access Basic (I) CONTEÚDOS
Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar
Leia maisProgramação Concorrente
Programação Concorrente Monitores e Troca de Mensagens Monitores Considere que, no projeto da solução do produtor-consumidor com semáforos, os 2 downs tenham sido trocados Se o buffer estiver cheio deadlock
Leia mais2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10
1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...
Leia maisO dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:
- Necessidade O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros: Os livros que custarem mais de 10, devem ver o seu preço
Leia maisÁrvores e Árvores Binárias
MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvores do capítulo 4 do livro N. Wirth. Algorithms + Data Structures
Leia maisMódulo III. Folhas de Cálculo
Módulo III Ferramentas do Office Folhas de Cálculo Ferramentas de produtividade 1 Folhas de Cálculo O que é: Uma Folha de Cálculo é, por tradição, um conjunto de células que formam uma grelha ou tabela
Leia maisExpressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Expressão é uma frase de um programa que ao ser avaliada retorna um valor Tipos Literais Agregados Chamadas de Função
Leia maisAlgoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:
Leia mais1. O DHCP Dynamic Host Configuration Protocol
CURSO DE EDUCAÇÃO E FORMAÇÃO TIPO 5 2º ANO TÉCNICO DE INFORMÁTICA/INSTALAÇÃO E GESTÃO DE REDES 2008/2009 INSTALAÇÃO REDES CLIENTE SERVIDOR WINDOWS SERVER 2003 Após a instalação Instalação de serviços de
Leia mais#define SIM 1 equivale a definição de constantes; a palavra SIM é substituída por 1 toda vez que é utilizada no programa.
929292929292929292929292929292929292929292929292929292 15- O Pré-Processador C - O compilador C possui um programa chamado pré-processador: executa modificações no código baseado em instruções chamadas
Leia maisEstruturas de Controle em PHP
Linguagem de Programação III Estruturas de Controle em PHP Estruturas de Controle em PHP - Comandos condicionais - if - switch - Comandos de repetição - while - do...while - for - foreach Estruturas de
Leia maisA4 Projeto Integrador e Lista de Jogos
A4 Projeto Integrador e Lista de Jogos 1ª ETAPA PROJETO INTEGRADOR (2 pontos na A4) Como discutido em sala de aula, a disciplina de algoritmos I também fará parte do projeto integrador, para cada grupo
Leia maisCompiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador
Estrutura de um compilador Compiladores Análise lexical (1) Expressões Regulares 1 2 Plano da aula 1. Motivação do uso de E.R. e definições Linguagens, tokens, lexemas... 2. Regras de formação e exemplos
Leia maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisProgramação 2ºSemestre MEEC - 2010/2011. Programação 2º Semestre 2010/2011 Enunciado do projecto
Mestrado Integrado em Engenharia Electrotécnica e de Computadores Programação 2º Semestre 2010/2011 Enunciado do projecto O projecto a desenvolver pelos alunos consistirá numa sistema de monitorização,
Leia maisInformática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA
Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015 Visual Basic VBA Macros Funções Conjunto de instruções que são executadas sempre que se desejar e pela ordem apresentada As funções são
Leia maisApostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi
Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia
Leia maisResumo da Introdução de Prática de Programação com C. A Linguagem C
Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional
Leia maisGuia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Leia maisPL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL
PL/SQL Laboratório de Bases de Dados PL/SQL Program Language SQL linguagem de programação da Oracle que permite processar dados armazenados no banco de dados Exemplos de operações permitidas alterar, remover,
Leia maisOPERADORES E ESTRUTURAS DE CONTROLE
OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em
Leia maisManual Gespos SMS. (ultima revisão 20 Fev. 2003)
Manual Gespos SMS (ultima revisão 20 Fev. 2003) Prezado Utilizador, É objectivo deste manual servir de ferramenta de formação para que o utilizador dos aplicativos Escripóvoa, possa de uma forma simples
Leia maisCONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa
CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs
Leia maisCapítulo 2: Introdução à Linguagem C
Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso
Leia maisBases de Dados 2007/2008. Aula 9
Bases de Dados 2007/2008 Aula 9 1. T-SQL TRY CATCH 2. TRATAMENTO ERROS RAISERROR 3. TRIGGERS 4. EXERCÍCIOS Sumário Referências http://msdn2.microsoft.com/en-us/library/ms189826.aspx (linguagem t-sql) http://www.di.ubi.pt/~pprata/bd/bd0405-proc.sql
Leia maisIntrodução aos cálculos de datas
Page 1 of 7 Windows SharePoint Services Introdução aos cálculos de datas Aplica-se a: Microsoft Office SharePoint Server 2007 Ocultar tudo Você pode usar fórmulas e funções em listas ou bibliotecas para
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Leia maisColeções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS
Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41 Nota Este material não pode ser reproduzido ou utilizado
Leia maisIntrodução ao Modelos de Duas Camadas Cliente Servidor
Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos
Leia maisProgramação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática
Leia maisNesta aula serão apresentados alguns comandos de condição, repetição e gráficos.
3 COMANDOS CONDICIONAIS E DE LAÇO Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos. 3.1 COMANDOS CONDICIONAIS 3.1.1 Comando IF Como o próprio nome já indica, estes comandos
Leia mais3 Classes e instanciação de objectos (em Java)
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisEscola Secundária de Camarate
Escola Secundária de Camarate Ano Lectivo 2014/2015 Planificação da Disciplina de Tecnologias da Informação e Comunicação Curso Profissional de Técnico Auxiliar de Saúde e Técnico de Restauração e Bar
Leia mais4 Criação de macros e introdução à linguagem VBA
4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação
Leia maisJavascript 101. Parte 2
Javascript 101 Parte 2 Recapitulando O Javascript é uma linguagem de programação funcional Os nossos scripts são executados linha a linha à medida que são carregados. O código que está dentro de uma função
Leia maisA VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO
DOMINE A 110% ACCESS 2010 A VISTA BACKSTAGE Assim que é activado o Access, é visualizado o ecrã principal de acesso na nova vista Backstage. Após aceder ao Access 2010, no canto superior esquerdo do Friso,
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisAnálise Semântica e Tratamento de Erros Dependentes de Contexto
Análise Semântica e Tratamento de Erros Dependentes de Contexto O componente Semântico de uma LP Tarefas da Análise Semântica Implementação da Tabelas de Símbolos Ações Semânticas em Compiladores Dirigidos
Leia mais3.º e 4.º Anos de Escolaridade Competências Conteúdos Sugestões metodológicas Articulações
Introdução ao Ambiente de Trabalho 3.º e 4.º Anos de Escolaridade Distinguir hardware de software; Identificar os principais componentes físicos de um computador e as suas funções; Reconhecer os principais
Leia maisGrupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?
Número: Nome: LEIC/LERC 2011/12-2º Exame de Sistemas Operativos 3/Fevereiro/2012 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo I [4v] 1. [0,6v] A
Leia maisSistemas de Informação
Sistemas de Informação Rules and Triggers André Restivo Sistemas de Informação 2006/07 Rules e Triggers Nem todas as restrições podem ser definidas usando os mecanismos que estudamos anteriormente: - CHECK
Leia maisEstrutura de Dados Pilha (Stack)
Estrutura de Dados Pilha (Stack) Estrutura de Dados que corresponde a uma lista sequencial com a propriedade seguinte: LIFO O primeiro elemento a entrar é o último a sair ( Last in First Out ) Operações
Leia maisPROGRAMAÇÃO II 3. PILHA DINÂMICA
3. PILHA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma pilha é um tipo especial de Pilha na quais todas as inserções e remoções são feitas na primeira posição, que é chamada de topo. Outro nome
Leia maisLaSiD/UFBA. Raimundo J. de A. Macêdo
Fundamentos de Sistemas Distribuídos Terminação Distribuída LaSiD/UFBA Raimundo J. de A. Macêdo 1 Todos os processos envolvidos numa computação distribuída encerraram suas atividades. Ou seja, estão num
Leia maisFUNCTION ) RETURNS INTEGER AS $$ DECLARE
PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos
Leia maisDirecção Regional de Educação do Algarve
MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma
Leia maisDICIONÁRIOS. template<class K,class T> class Par { public: K chave; T valor; Par():chave(),valor()
DICIONÁRIOS Esta estrutura inclui-se nos chamados contentores associativos, que não são mais do que uma colecção de estruturas de tipo Par, com dois membros de dados (chave de pesquisa e valor associado),
Leia mais1 Lógica de Programação
1 Lógica de Programação Técnicas de programação Programação Sequencial Programação Estruturada Programação Orientada a Eventos e Objectos 1.1 Lógica A lógica de programação é necessária para pessoas que
Leia mais9 Comandos condicionais
9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em
Leia maisENSINO BÁSICO CURSO DE EDUCAÇÃO E FORMAÇÃO Praticas Administrativas
Agrupamento de Escolas Nº 1 de Abrantes ENSINO BÁSICO CURSO DE EDUCAÇÃO E FORMAÇÃO Praticas Administrativas ESCOLA: Dr. Solano de Abreu DISCIPLINA:TIC ANO: 1 ANO 2013/2014 CONTEÚDOS Conceitos básicos Informática
Leia maisQuestões de Concursos Públicos sobre Orientação a Objetos e UML
Análise Orientada a Objetos Professora Lucélia Oliveira Questões de Concursos Públicos sobre Orientação a Objetos e UML 1. (BNDES) Analise as seguintes afirmações relativas à Programação Orientada a Objetos:
Leia maisGrupo I [4v] executaprograma();
Número: Nome: LEIC/LERC 2012/13-1º Exame de Sistemas Operativos 15/Janeiro/2013 Identifique todas as folhas. Responda no enunciado, apenas no espaço fornecido. Justifique todas as respostas. Duração: 2h30m
Leia mais