Linguagem C. Diagnóstico e correcção de problemas. Arquitectura física. José Pedro Oliveira (jpo@di.uminho.pt) Linguagem de programação

Tamanho: px
Começar a partir da página:

Download "Linguagem C. Diagnóstico e correcção de problemas. Arquitectura física. José Pedro Oliveira (jpo@di.uminho.pt) Linguagem de programação"

Transcrição

1 Conteúdo Diagnóstico e correcção de problemas (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho 1 Arquitectura física Linguagem de programação C Análise estática de programas C Sistemas Operativos I Arquitectura física Arquitectura física Técnicas e ferramentas Arquitectura física Linguagem de programação Análise estática de programas C Bibliotecas de apoio a debugging Debuggers genéricos Debuggers especializados Informação a ter em conta Tamanho da palavra do processador Endereçamento de memória Processador com unidade de gestão de memória Alinhamento byte-order do processador little-endian vs big-endian sizeof(int)! = sizeof(void *)

2 Linguagem de programação C Linguagem de programação C Análise estática de programas C - splint Análise estática de programas C Algumas funcionalidades e propriedades a explorar Utilizar assert.h Substituir gets por fgets strcpy por strncpy strcat por strncat sprintf por snprintf Substituir if (p == 0) por if (0 == p) Utilização $ splint +flag1 -flag ficheiro.c Ficheiro de configuração:.splintrc ### Mode s e l e c t i o n f l a g s # weak, standard ( d e f a u l t ), checks, s t r i c t +checks ### Display Flags #+showscan +showsummary + s t a t s - gcc - gcc Algumas opções úteis -E - Executa apenas o passo de pré-processamento -S - Gera o ficheiro assembly (.s) -g - Gera informação de debugging -Wall - Activa a grande maioria dos avisos -Wextra - Activa ainda mais avisos -Werror - Os avisos passam a ser considerados erros -On - Nível de optimização (por omissão: -O0) -Wp,-D FORTIFY SOURCE=n - detecção de buffer overflows Exemplos gcc -E... gcc -S... gcc -Wall -Wextra... gcc -Wall -Wextra -std=c99... gcc -Wall -Wextra -std=c99 -O0 -g... gcc -O -D FORTIFY SOURCE=... gcc -Wall -Wextra -Werror -O -Wp,-D FORTIFY SOURCE=... gcc -Wall -Wextra -g -lefence... gcc -Wall -Wextra -g -fmudflap -lmudflap...

3 Fortify Source Fortify Source: exemplo 1 FORTIFY SOURCE FORTIFY SOURCE é uma característica adquirida pelo gcc e pela glibc que permite detectar e prevenir um subconjunto de buffers overflows. Mecânica Há diversas situações em que o compilador consegue saber qual a dimensão de um buffer (alocado estaticamente ou alocado dinamicamente via malloc). Com este conhecimento, diversas funções que sobre ele irão operar podem garantir a não existência de buffer overflows. exemplo1.c - detecção: durante a compilação e a execução 1 #include <s t r i n g. h> 5 char s t r [ 4 ] ; 7 s t r c p y ( s t r, 134 ) ; 9 return 0; Fortify Source: exemplo 1 Fortify Source: exemplo $ gcc -O -Wp,-D FORTIFY SOURCE= exemplo1.c exemplo1. c : In function main : exemplo1. c :7: warning : c a l l to b u i l t i n s t r c p y c h k w i l l \ always overflow d s t i n a t i o n b u f f e r e $./a.out b u f f e r overflow detected :. / a. out terminated ======= Backtrace : ========= / l i b / l i b c. so.( c h k f a i l +0x41 ) [0 xaec45 ] / l i b / l i b c. so.( s t r c p y c h k +0x3f ) [0 xaed7 ]. / a. out [0 x043bc ] / l i b / l i b c. so.( l i b c s t a r t m a i n +0xdf ) [0 x9a5d5f ]. / a. out [0 x0431d ] ======= Memory map : ======== d000 r xp : / l i b / ld.3.5. so 009d e000 r xp : / l i b / ld.3.5. so exemplo.c - detecção: durante a execução 1 #include <s t r i n g. h> 3 i n t main ( i n t a t t r i b u t e ( ( unused ) ) argc, char argv [ ] ) 5 char s t r [ 4 ] ; 7 s t r c p y ( s t r, argv [ 1 ] ) ; 9 return 0;

4 Fortify Source: exemplo Fortify Source: referências $ gcc -O -Wp,-D FORTIFY SOURCE= exemplo.c $./a.out ok $./a.out overflow b u f f e r overflow detected :. / a. out terminated ======= Backtrace : ========= / l i b / l i b c. so.( c h k f a i l +0x41 ) [0 xaec45 ] / l i b / l i b c. so.( s t r c p y c h k +0x3f ) [0 xaed7 ]. / a. out [0 x043bd ] / l i b / l i b c. so.( l i b c s t a r t m a i n +0xdf ) [0 x9a5d5f ]. / a. out [0 x0431d ] ======= Memory map : ======== d000 r xp : / l i b / ld.3.5. so 009d e000 r xp : / l i b / ld.3.5. so Referências Limiting buffer overflows with ExecShield http: // Object size checking to prevent (some) buffer overflows Permite detectar dois erros comuns associados à alocação dinâmica de memória: ultrapassar os limites do bloco de memória alocado aceder a memória já libertada com free() Mecânica Esta biblioteca utiliza o hardware de gestão de memória virtual do computador para colocar uma página de memória inacessivel imediatamente depois (ou antes) de cada bloco de memória alocado. Quando o software aceder em modo de leitura ou de escrita a uma das páginas inacessíveis, o hardware irá gerar um segmentation fault. Utilização Linkar o programa com a biblioteca efence Executar o programa modificando o comportamento da biblioteca através das variáveis de ambiente: EF ALIGNMENT EF PROTECT BELOW EF PROTECT FREE EF ALLOW MALLOC 0 EF FILL Permitir a geração de ficheiros core $ ulimit -c unlimited

5 : exemplo : exemplo exemplo.c #include <s t r i n g. h> 3 4 i n t main ( void ) 5 { char str = ( char ) malloc ( 5 ) ; 7 s t r c p y ( s t r, 1345 ) ; 9 ( s t r 1) = \0 ; 10 f r e e ( s t r ) ; 11 s t r = \0 ; 1 13 return 0; 14 } Compilar o programa gcc -Wall -Wextra -O0 -g -lefence -o exemplo exemplo.c Executar o programa (gerar core dumps) 1./exemplo EF ALIGNMENT=1./exemplo 3 EF PROTECT BELOW=1./exemplo Utilizar o debugger para localizar a fonte do problema gdb exemplo core.pid : exemplo 3. $./exemplo é um sistema flexível para realizar o debugging e E l e c t r i c Fence.. 0 Copyright (C) Bruce Perens <bruce@perens. com> profiling de executáveis X/Linux, AMD4/Linux, PPC3/Linux Segmentation f a u l t ( core dumped ) e PPC4/Linux. O sistema consiste num núcleo, que fornece um processador sintético, e num conjunto de ferramentas que $ gdb exemplo core.354 permitem realizar tarefas especificas de debugging ou profiling. Uma das principais ferramentas é a memcheck que permite GNU gdb Red Hat Linux ( f c 5 r h ) detectar problemas associados à gestão de memória de Reading symbols from / l i b / ld l i n u x. so. done. programas. Loaded symbols for / l i b / ld linux. so. #0 0x00449a i n main ( ) at efence. c :11 11 s t r = \ 0 ; Algumas ferramentas ( gdb ) cachegrind - simulador de cache memcheck - verificador de memória (ferramenta por omissão)

6 : exemplo Opções de linha de comando ficheiro.valgrindrc no directório de trabalho ficheiro.valgrindrc na homedir do utilizador variável de ambiente VALGRIND OPTS Exemplo de algumas opções de linha de comando -v - imprime informação adicional (verbose) -q - modo silencioso; apenas imprime mensagens de erro (quiet) --tool=callgrind - selecionar ferramenta callgrind --leak-check=yes - detectar perdas de memória (valor por omissão: summary) exemplo.c 5 int p = malloc (10 sizeof ( int ) ) ; 7 p [ 1 0 ] = 0; ( p 1) = 0; 9 10 return 0; 11 } : exemplo : exemplo Compilar o programa (desactivando optimizações e activando informação de debugging) gcc -Wall -Wextra -O0 -g -o exemplo exemplo.c Executar o programa valgrind exemplo valgrind -q exemplo valgrind --tool=memcheck exemplo valgrind --tool=memcheck -v exemplo valgrind --tool=memcheck --leak-checks=no exemplo valgrind --tool=memcheck --leak-checks=yes exemplo $ valgrind --tool=memcheck exemplo ==374== I n v a l i d w r i t e of size 4 ==374== at 0x043AE : main (exemplo. c :7) ==374== Address 0x1B9F050 is 0 bytes after a block of size 40 alloc d ==374== at 0x1B909 : malloc ( vg replace malloc. c :130) ==374== by 0x043A1 : main (exemplo. c :5) ==374== ==374== I n v a l i d w r i t e of size 4 ==374== at 0x043BA : main (exemplo. c :) ==374== Address 0x1B9F04 is 4 bytes before a block of size 40 alloc d ==374== at 0x1B909 : malloc ( vg replace malloc. c :130) ==374== by 0x043A1 : main (exemplo. c :5) ==374== ==374== ERROR SUMMARY: errors from contexts ( suppressed : 13 from 1) ==374== malloc / f r e e : i n use at e x i t : 40 bytes i n 1 blocks. ==374== malloc / f r e e : 1 allocs, 0 frees, 40 bytes a l l o c a t e d. ==374== For counts of detected errors, rerun with : v ==374== searching f o r p o i n t e r s to 1 not freed blocks. ==374== checked 4915 bytes. ==374== ==374== LEAK SUMMARY: ==374== d e f i n i t e l y l o s t : 40 bytes i n 1 blocks. ==374== possibly l o s t : 0 bytes i n 0 blocks. ==374== s t i l l reachable : 0 bytes i n 0 blocks. ==374== suppressed : 0 bytes i n 0 blocks.

7 : referências Conteúdo Referências Valgring homepage The Quick Start Guide User Manual 3 Overflow de buffers estáticos Exemplo 1 - overflow de um buffer estático estatico 1.c Experimentar Utilizar o splint Activar avisos do gcc Compilar com a opção FORTIFY SOURCE Corrigir o programa 1 #include <s t r i n g. h> 5 char s t r [ 4 ] ; 7 s t r c p y ( s t r, 134 ) ; 9 return 0;

8 Exemplo - overflow de um buffer estático Exemplo 3 - overflow de um buffer estático estatico.c 1 #include <s t r i n g. h> 5 char s t r [ 4 ] = N: ; 7 s t r c a t ( s t r, 01 ) ; 9 return 0; estatico 3.c 1 #include <stdio. h> #include <s t r i n g. h> 3 4 i n t main ( void ) 5 { char s t r [ 4 ] = N ; 7 s p r i n t f ( s t r, %s:%d\n, s t r, 1 ) ; 9 10 / / p r i n t f ( S t r i n g = <%s>\n, s t r ) ; 11 1 return 0; Exemplo 4 - overflow de um buffer estático Overflow de buffers alocados dinamicamente estatico 4.c 5 i n t i ; i n t a [ 1 0 ] ; 7 for ( i =0; i <=10; i ++) { 9 a [ i ] = 0; 11 1 return 0; Experimentar Utilizar o splint Activar avisos do gcc Compilar com a opção FORTIFY SOURCE Utilizar a biblioteca Electric Fence Correr o programa com o Corrigir o programa

9 Exemplo 1 - overflow de um buffer alocado dinamicamente Exemplo - overflow de um buffer alocado dinamicamente dinamico 1.c #include <s t r i n g. h> 3 4 i n t main ( void ) 5 { char str = ( char ) malloc ( 4 ) ; 7 s t r c p y ( s t r, 134 ) ; 9 10 f r e e ( s t r ) ; 11 1 return 0; dinamico.c 5 int i, p = malloc (10 sizeof ( int ) ) ; 7 for ( i =0; i <=10; i ++) { p [ i ] = i ; 9 } f r e e ( p ) ; 1 13 return 0; Exemplo 3 - overwrite de buffers Conteúdo dinamico 3.c 5 i n t i ; int p1 = malloc (10 sizeof ( int ) ) ; 7 int p = malloc (10 sizeof ( int ) ) ; 9 for ( i =0; i <10; i ++) { p [ i ] = ; } 10 for ( i =0; i <15; i ++) { p1 [ i ] = 1; } 11 1 return 0; 3

10 associados à alocação de memória Exemplo 1 - problema associado à alocação de memória memoria 1.c Experimentar Utilizar o splint Activar avisos do gcc Compilar com a opção FORTIFY SOURCE Utilizar a biblioteca Electric Fence Correr o programa com o Corrigir o programa 3 s t a t i c void f ( void ) { 4 i n t p1 = NULL ; 5 p1 = ( i n t ) malloc ( sizeof ( i n t ) ) ; 7 p1 = 0; } 9 10 i n t main ( void ) { 11 f ( ) ; 1 return 0; Exemplo - problema associado à alocação de memória Exemplo 3 - problema associado à alocação de memória memoria.c 3 s t a t i c void f ( void ) { 4 i n t p1 = NULL ; 5 p1 = ( i n t ) malloc ( sizeof ( i n t ) ) ; 7 f r e e ( p1 ) ; p1 = 0; 9 } i n t main ( void ) { 1 f ( ) ; 13 return 0; 14 } memoria 3.c 3 s t a t i c void f ( void ) { 4 i n t p1 = NULL ; 5 p1 = ( i n t ) malloc ( sizeof ( i n t ) ) ; 7 p1 = 0; f r e e ( p1 ) ; 9 f r e e ( p1 ) ; 11 1 i n t main ( void ) { 13 f ( ) ; 14 return 0; 15 }

11 Exemplo 4 - problema associado à alocação de memória Exemplo 5 - endereço de memória inválido memoria 4.c 3 s t a t i c void f ( void ) { 4 i n t p1 = NULL, p ; 5 p1 = ( i n t ) malloc ( sizeof ( i n t ) ) ; 7 p = 0; f r e e ( p1 ) ; 9 } i n t main ( void ) { 1 f ( ) ; 13 return 0; 14 } memoria 5.c 3 i n t f ( i n t i ) { 4 i n t p [ 1 0 ] ; 5 p [ i ] = 1; return &p [ i ] ; 7 } 9 i n t main ( void ) { 10 i n t p i = f ( 4 ) ; 11 i n t i = pi ; 1 return 0; Exemplo - endereço de memória inválido memoria.c 3 i n t f ( i n t i ) { 4 int p = ( int ) malloc (10 sizeof ( int ) ) ; 5 p [ i ] = 1; f r e e ( p ) ; 7 return &p [ i ] ; } 9 10 i n t main ( void ) { 11 i n t p i = f ( 4 ) ; 1 i n t i = pi ; 13 return 0; 14 }

Linguagem C. Análise estática de programas C - splint. Compilador de C - gcc. Compilador de C - gcc. Diagnóstico e correcção de problemas

Linguagem C. Análise estática de programas C - splint. Compilador de C - gcc. Compilador de C - gcc. Diagnóstico e correcção de problemas Conteúdo Diagnóstico e correcção de problemas (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho 1 Linguagem de programação C Análise

Leia mais

Ferramentas de desenvolvimento

Ferramentas de desenvolvimento Conteúdo Breve Introdução (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho 1 2 Sistemas Operativos I 2006-2007 - Exemplo de um programa

Leia mais

Chamada ao sistema: sbrk. Chamada ao sistema: brk. brk sbrk. Generalidades. José Pedro Oliveira calloc e malloc free

Chamada ao sistema: sbrk. Chamada ao sistema: brk. brk sbrk. Generalidades. José Pedro Oliveira calloc e malloc free Generalidades (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 2006-2007 1 s Chamada ao sistema: Chamada ao

Leia mais

LEI Sistemas de Computação 2011/12. Níveis de Abstração. TPC4 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença

LEI Sistemas de Computação 2011/12. Níveis de Abstração. TPC4 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença LEI Sistemas de Computação 2011/12 Níveis de Abstração TPC4 e Guião laboratorial Luís Paulo Santos e Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------

Leia mais

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

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor

Leia mais

Conceitos Básicos sobre Programação Prática

Conceitos Básicos sobre Programação Prática Conceitos Básicos sobre Programação Prática Programa de computador conjunto de instruções e informação necessários ao alcance de um objectivo instruções + dados normalmente, guardados em ficheiros (em

Leia mais

Seminário C & C++ para Sistemas Embarcados 2010. Desenvolvendo software seguro em C. Sergio Prado - Novembro/2010

Seminário C & C++ para Sistemas Embarcados 2010. Desenvolvendo software seguro em C. Sergio Prado - Novembro/2010 Seminário C & C++ para Sistemas Embarcados 2010 Desenvolvendo software seguro em C Sergio Prado - Novembro/2010 Quem sou eu? Formado em eletrônica, graduado em Processamento de Dados e pósgraduado em Gestão

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Conversão de tipos. Alocação dinâmica de memória. Recursão. Aula 16 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação

Leia mais

Aspectos de Sistemas Operativos

Aspectos de Sistemas Operativos Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho Serviços de um sistema operativo Interface com o utilizador Chamadas ao sistema Programas de sistema

Leia mais

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre Programação MEAer Bertinho Andrade da Costa 2011/2012 1º Semestre Instituto Superior Técnico Introdução ao Pré-Processador Programação 2011/2012 DEEC-IST Introdução ao Pré-Processador 1 Sumário Introdução

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE 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 mais

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

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

LEI Sistemas de Computação 2014/15. Níveis de Abstração. TPC4 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença

LEI Sistemas de Computação 2014/15. Níveis de Abstração. TPC4 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença LEI Sistemas de Computação 2014/15 Níveis de Abstração TPC4 e Guião laboratorial Luís Paulo Santos e Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Vazamento de memória & Erros em tempo de execução Vazamento de memória Introdução: Vazamento de memória (memory leak),

Leia mais

Programação Estruturada I

Programação Estruturada I Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 thiago.tavares@ifsuldeminas.edu.br 2 mateus.santos@ifsuldeminas.edu.br Última Atualização:

Leia mais

Entradas/Saídas. Programação por espera activa Programação por interrupções

Entradas/Saídas. Programação por espera activa Programação por interrupções Entradas/Saídas Programação por espera activa Programação por interrupções Programação por espera activa 1. O programa lê o estado do periférico: CPU pede ao controlador (IN) o valor no registo ESTADO

Leia mais

O COMPUTADOR. Introdução à Computação

O COMPUTADOR. Introdução à Computação O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:

Leia mais

Introdução rápida ao gerenciamento de memória: ou como evitar o maldito segmentation fault

Introdução rápida ao gerenciamento de memória: ou como evitar o maldito segmentation fault Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Introdução rápida ao gerenciamento de memória: ou como evitar o maldito segmentation fault Moacir Ponti 2012 (v.1.1) Sumário

Leia mais

Programação com Posix Threads

Programação com Posix Threads 9 Programação com Posix Threads Revisão: Data: 11-03-2016 Cap. 9 1/6 Programação multi-threaded com Pthreads 9.1. O que é uma thread? Um processo represente a execução pelo sistema operativo dum programa.

Leia mais

Experimentos com a memória cache do CPU

Experimentos com a memória cache do CPU Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................

Leia mais

Gilberto A. S. Segundo. 24 de agosto de 2011

Gilberto A. S. Segundo. 24 de agosto de 2011 Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo. http://www.dei.isep.ipp.pt/~orlando/so2/processos.

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo. http://www.dei.isep.ipp.pt/~orlando/so2/processos. Página 1 de 5 Processos Consiste num método de descrição das actividades de um sistema operativo; Todo o software incluído no sistema operativo é organizado num grupo de programas executáveis. Cada um

Leia mais

Curso de Programação C em Ambientes Linux Aula 05

Curso de Programação C em Ambientes Linux Aula 05 Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

Leia mais

Módulo 10. Medição do Desempenho

Módulo 10. Medição do Desempenho Módulo 10 Medição do Desempenho 1. Introdução Pretende-se com esta aula prática que os alunos se familiarizem com o processo de profiling de programas e que avaliem o impacto no desempenho de um programa

Leia mais

Desenvolvimento de programas em UNIX

Desenvolvimento de programas em UNIX 4 Desenvolvimento de programas em UNIX Sumário: Fases de desenvolvimento de programas Compiladores Ficheiros em código objecto (.o) Visualização de símbolos dum ficheiro objecto (nm) Unificadores (linkers)

Leia mais

Sistemas de Operação Sockets

Sistemas de Operação Sockets Sistemas de Operação Sockets O que é um socket? Uma interface de comunicação entre processos que podem ou não residir na mesma máquina, mas que não precisam estar relacionados. É usado normalmente para

Leia mais

INTRODUÇÃO BUFFER OVERFLOWS

INTRODUÇÃO BUFFER OVERFLOWS BUFFER OVERFLOW INTRODUÇÃO As vulnerabilidades de buffer overflow são consideradas ameaças críticas de segurança, apesar de ser uma falha bem-conhecida e bastante séria, que se origina exclusivamente na

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em

Leia mais

Aula 10 Optimização de código

Aula 10 Optimização de código Sistemas de Tempo-real Aula 10 Optimização de código Técnicas de optimização de código Ferramentas de profiling Paulo Pedreiras DETI/UA pbrp@ua.pt V1.0, Set/2009 Slides parcialmente baseados no módulo

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,

Leia mais

Tabela ASCII de caracteres de controle

Tabela ASCII de caracteres de controle Caracteres Estruturas de Dados Aula 6: Cadeias de Caracteres 31/03/2010 Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis

Leia mais

Integração de Sistemas Embebidos MECom :: 5º ano

Integração de Sistemas Embebidos MECom :: 5º ano Integração de Sistemas Embebidos MECom :: 5º ano Device Drivers em Linux - Introdução António Joaquim Esteves www.di.uminho.pt/~aje Bibliografia: capítulo 1, LDD 3ed, O Reilly DEP. DE INFORMÁTICA ESCOLA

Leia mais

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS Disciplina de Nivelamento - 2000/1: ALGORITMOS & ESTRUTURAS DE DADOS Professor Responsável: Prof. Fernando Santos

Leia mais

Programação de Computadores Primeiros Passos Práticos em C++

Programação de Computadores Primeiros Passos Práticos em C++ Programação de Computadores Primeiros Passos Práticos em C++ Alan de Freitas! Marco Antonio Carvalho Compilação de Programas O compilador é o responsável por transformar nosso código em um programa propriamente

Leia mais

Sistemas Operativos I

Sistemas Operativos I Arquitectura de um Computador Maria João Viamonte / Luis Lino Ferreira Fevereiro de 2006 Sumário Arquitectura de um Computador Estrutura de I/O Estrutura de Armazenamento Hierarquia de Armazenamento Protecção

Leia mais

Algoritmos e Técnicas de

Algoritmos e Técnicas de INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Algoritmos e Técnicas de Programação Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

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

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos Estruturas de Dados Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos Estruturas de Dados Programação de Computadores 1 de 26 Tipos Estruturados de Dados

Leia mais

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

Trabalho Prático Nº2 Escrita e Leitura em Portos IO Trabalho Prático Nº2 Escrita e Leitura em Portos IO 1. OBJECTIVOS - Saber efectuar a escrita e leitura em portos de entrada saída num PC num com operativo DOS e Windows. 2. INTRODUÇÃO Para este trabalho

Leia mais

Sistemas Operativos I

Sistemas Operativos I Gestão da Memória Luis Lino Ferreira / Maria João Viamonte Fevereiro de 2006 Gestão da Memória Gestão de memória? Porquê? Atribuição de instruções e dados à memória Endereços lógicos e físicos Overlays

Leia mais

Debugging. de aplicações em C e C++

Debugging. de aplicações em C e C++ Debugging de aplicações em C e C++ Nuno Lopes, NEIIST 7º Ciclo de Apresentações. 26/Abril/2007 Agenda Erros/Warnings do compilador Bugs típicos Ferramentas úteis (GDB, Valgrind, et all) Casos Reais Questões

Leia mais

Algoritmo e Técnica de Programação - Linguagem C

Algoritmo e Técnica de Programação - Linguagem C Algoritmo e Técnica de Programação Linguagem C Gilbran Silva de Andrade 5 de junho de 2008 Introdução A liguagem C foi inventada e implementada por Dennis Ritchie em um DEC PDP-11 que utilizava o sistema

Leia mais

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI/LMCC - 4º/5º Ano Passagem de Mensagens João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Novembro 2004 Passagem

Leia mais

INF 1005 Programação I

INF 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 mais

Capítulo 2: Introdução à Linguagem C

Capí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 mais

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00 Fundamentos da Programação 32 A. Conceito Variáveis contém dados: VIII. VARIÁVEIS de entrada que o computador precisa manipular; de saída que o computador precisa imprimir; e temporários, utilizados de

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Diagrama lógico da rede da empresa Fácil Credito

Diagrama lógico da rede da empresa Fácil Credito Diagrama lógico da rede da empresa Fácil Credito Tabela de endereçamento da rede IP da rede: Mascara Broadcast 192.168.1.0 255.255.255.192 192.168.1.63 Distribuição de IP S na rede Hosts IP Configuração

Leia mais

Programação 2009/2010 MEEC MEAer

Programação 2009/2010 MEEC MEAer Programação 2009/2010 MEEC MEAer Guia para criação de um projecto no KDevelop O ambiente de desenvolvimento de software (IDE) a usar durante a unidade curricular de Programação é o KDevelop, que se executa

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 12 CUDA Parte 3 N. Cardoso & P. Bicudo Programação em

Leia mais

Modos de entrada/saída

Modos de entrada/saída Arquitectura de Computadores II Engenharia Informática (11545) Tecnologias e Sistemas de Informação (6621) Modos de entrada/saída Fonte: Arquitectura de Computadores, José Delgado, IST, 2004 Nuno Pombo

Leia mais

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

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado. Memória Armazenamento Sistema de Arquivos

FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado. Memória Armazenamento Sistema de Arquivos FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado Memória Armazenamento Sistema de Arquivos 1 Hierarquia de Memórias 2 Partes físicas associadas à memória Memória RAM Memória ROM Cache

Leia mais

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++ Introdução ao Dev-C++ O Dev-C++ oferece um ambiente que integra um editor de textos a um compilador para linguagem C. O compilador usado pelo Dev-C++ é o gcc (Gnu C Compiler). 1) Primeiro programa Para

Leia mais

gdb - Introdução Adriano Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ

gdb - Introdução Adriano Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ gdb - Introdução Adriano Cruz adriano@nce.ufrj.br 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo Seção Introdução Depurando gdb 2 Bibliografia 1 http://sourceware.org/gdb/current/onlinedocs/gdb/

Leia mais

Sistema de Entrada/Saída

Sistema de Entrada/Saída Conteúdo Ficheiros (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos 2006-2007 2 Descritores de ficheiros Descritores

Leia mais

CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS

CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS PLANO DE ESTUDOS Componentes de Formação Total de Horas (a) (Ciclo de Formação) Componente de Formação Sociocultural Português

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade 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 mais

Variáveis e Comandos de Atribuição

Variáveis e Comandos de Atribuição BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l

Leia mais

Tipo de Dados em Linguagem C

Tipo de Dados em Linguagem C Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa

Leia mais

Linguagem de Programação C

Linguagem de Programação C ICMC USP Linguagem de Programação C Aula: Funções em C Prof Alneu de Andrade Lopes MODULARIZAÇÃO Um problema complexo é melhor abordado se for dividido primeiramente em vários subproblemas MODULARIZAÇÃO

Leia mais

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios CURSO - TADS TURMA 2008.1 2 PERÍODO 3 MÓDULO AVALIAÇÃO MP2 DATA 02/10/2008 SISTEMAS OPERACIONAIS 2008/2 GABARITO COMENTADO SISTEMAS OPERACIONAIS PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida,

Leia mais

Gestão de projectos na Web

Gestão de projectos na Web Gestão de projectos na Web Relatório de desenho de alto nível Versão 1.0, 5 de Maio de 2003 Telmo Pedro Gomes Amaral (mee02013@fe.up.pt) (Grupo 15) Aplicações na Web Mestrado em Engenharia Electrotécnica

Leia mais

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento FISP 1/6 15 a Aula Subprogramação /Subalgoritmos Função e Procedimento Objetivo: Simplificação e racionalização na elaboração de algoritmos mais complexos Recursos: Estruturação de algoritmos e modularização

Leia mais

Tipos de Dados Avançados Vetores e Matrizes

Tipos de Dados Avançados Vetores e Matrizes SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Tipos de Dados Avançados Vetores e Matrizes Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br

Leia mais

First Step Linux. Instalação do VirtualBox Para instalar o software VirtualBox siga os seguintes passos :

First Step Linux. Instalação do VirtualBox Para instalar o software VirtualBox siga os seguintes passos : First Step LINUX First Step Linux Experimente o Linux É possível experimentar o Linux sem alterar o sistema operativo actual do seu computador. Com o software Virtual Box consegue criar um ambiente virtual

Leia mais

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4 INF1 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4 1. Considere uma aplicação que utiliza pontos, retângulos e círculos para representações gráficas. Um ponto é composto pelas suas coordenadas x e y, um retângulo

Leia mais

Desenvolvimento para Sistemas Embarcados (CEA 513) Codificação Segura para Embarcados

Desenvolvimento para Sistemas Embarcados (CEA 513) Codificação Segura para Embarcados Universidade Federal de Ouro Preto Departamento de Computação e Sistemas - DECSI Desenvolvimento para Sistemas Embarcados (CEA 513) Codificação Segura para Embarcados Vicente Amorim vicente.amorim.ufop@gmail.com

Leia mais

Tutorial Ultra-rápido: desenvolvendo programas C em Unix

Tutorial Ultra-rápido: desenvolvendo programas C em Unix Tutorial Ultra-rápido: desenvolvendo programas C em Unix Jerônimo C. Pellegrini 1 Introdução Este é um breve guia para programação em C em Unix. O texto está longe de ser completo (na verdade nem tem estrutura

Leia mais

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta

Leia mais

Representação de Algoritmos - Linguagens de Programação

Representação de Algoritmos - Linguagens de Programação Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve

Leia mais

Convertendo Algoritmos para a Linguagem C

Convertendo Algoritmos para a Linguagem C onvertendo Algoritmos para a Linguagem Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan O objetivo deste texto é mostrar alguns programas em, dando uma breve descrição de seu funcionamento

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AOS SISTEMAS OPERACIONAIS. Prof. Dr. Daniel Caetano 2011-2

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AOS SISTEMAS OPERACIONAIS. Prof. Dr. Daniel Caetano 2011-2 ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AOS SISTEMAS OPERACIONAIS Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 Introdução 2 O que é Sistema Operacional 3 Tarefas de Gerenciamento Material

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

SISTEMAS OPERATIVOS I

SISTEMAS OPERATIVOS I Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Textos de Apoio às Aulas Práticas Pré-processador, compilador e debugger 2004 Jorge Pinto Leite Sugestões

Leia mais

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for FICHA DE TRABALHO Nº 1 MÓDULO: EQUIPAMENTOS ACTIVOS DE REDES DATA: / 03 / 2010 FORMADOR: EDUARDO SEQUEIRA FICHA LABORATORIAL 1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através

Leia mais

Sistema Datachk. Plano de Projeto. Versão <1.0> Z u s a m m e n a r b e i t I d e i a s C o l a b o r a t i v a s

Sistema Datachk. Plano de Projeto. Versão <1.0> Z u s a m m e n a r b e i t I d e i a s C o l a b o r a t i v a s Plano de Projeto Versão Z u s a m m e n a r b e i t I d e i a s C o l a b o r a t i v a s 2010 2 Histórico de Revisões Data Versão Descrição Autores 07/04/2010 1.0 Criação da primeira versão do Plano

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma:

Leia mais

Algoritmos e Programação

Algoritmos 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 mais

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA:

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA: INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA: PROGRAMAÇÃO ORIENTADA A OBJETOS PROFESSOR: REINALDO GOMES ASSUNTO: PRIMEIRO PROGRAMA EM JAVA (COMPILAÇÃO

Leia mais

REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2011 / 2012

REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2011 / 2012 Departamento de Engenharia Electrotécnica REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2011 / 2012 4º ano 8º semestre 2º Trabalho prático: Serviço de distribuição de vídeo com CORBA e JMF http://tele1.dee.fct.unl.pt

Leia mais

3 Revisão de Software

3 Revisão de Software 1 3 Revisão de Software O software é indispensável para a utilização do hardware. Sem o software para utilizar o computador precisaríamos ter um profundo conhecimento do hardware. Alguns softwares são

Leia mais

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java 1 Objetivo: O aluno deverá adquirir capacidades e habilidades

Leia mais

Unified Modeling Language. Diagramas de Implementação

Unified Modeling Language. Diagramas de Implementação Unified Modeling Language Diagramas de Implementação José Correia, Junho 2006 (http://paginas.ispgaya.pt/~jcorreia/) Diagramas de implementação José Correia UML Diagramas de Implementação 2 Diagramas de

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

TIC TECNOLOGIAS DA INFORMAÇÃO (TI) TECNOLOGIAS ORIGEM DA PALAVRA

TIC TECNOLOGIAS DA INFORMAÇÃO (TI) TECNOLOGIAS ORIGEM DA PALAVRA TIC TECNOLOGIAS DA INFORMAÇÃO (TI) TECNOLOGIAS ORIGEM DA PALAVRA Provém das palavras gregas technê, que significa saber fazer, e logia, que significa conhecimento organizado SIGNIFICADO É o conhecimento

Leia mais

É a associação de mais de um fluxo de execução em um único processo.

É a associação de mais de um fluxo de execução em um único processo. Profa. Rita Rodorigo Threads Um processo é uma abstração que reúne uma série de atributos como espaço de endereçamento descritores de arquivos abertos, quotas, etc. Um processo possui ainda uma área de

Leia mais

Engenharia da Programação Problemas (2002/2003)

Engenharia da Programação Problemas (2002/2003) _ modmodelação Problemas Engenharia da Programação Problemas (2002/2003) Versão 1.0 11 de Dezembro de 2002 Paula Ventura Martins (pventura@ualg.pt) Tópicos cobertos nesta série de problemas: em UML: Diagramas

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização

Leia mais

Instalação e utilização do Eclipse / Fortran em Windows

Instalação e utilização do Eclipse / Fortran em Windows Computação e Programação Instalação e utilização do Eclipse / Fortran em Windows Nalgumas versões recentes do Windows o instalador referido na página da disciplina não consegue instalar corretamente o

Leia mais

Ferramentas para FSI

Ferramentas para FSI Ferramentas para FSI Este documento dá algumas pistas acerca de programação básica em linguagem C sob Sistema Operativo (S.O.) Linux. O Sistema Operativo Linux tem sofrido recentes melhoramentos importantes.

Leia mais

ESTRATÉGIAS /ACTIVIDADES. Fazer uma abordagem teórica e simples

ESTRATÉGIAS /ACTIVIDADES. Fazer uma abordagem teórica e simples Conhecer os conceitos básicos relacionados com as Tecnologias da Informação e Comunicação (TIC). Conhecer a terminologia relacionada com as TIC Caracterizar informação Identificar e caracterizar as áreas

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 38 Prof. Daniel Cavalcanti Jeronymo Declaração de tipos (typedef). Tipos enumerados (enum). Registros (struct). Uniões (union). Universidade Tecnológica Federal do

Leia mais