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



Documentos relacionados
Aspectos de Sistemas Operativos

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

Capítulo 8. Software de Sistema

Introdução à Arquitetura de Computadores

Sistemas Operacionais Aula 2

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

Descrição geral do Android

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

PROGRAMAÇÃO JAVA. Parte 1

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

Edeyson Andrade Gomes

SISTEMAS OPERATIVOS I

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

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

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

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

Introdução à Engenharia de Computação

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo.

3 Revisão de Software

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistemas Operativos I

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

1. SINTAXE DA LINGUAGEM ASSEMBLY

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Programação com Posix Threads

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Figura 01 Kernel de um Sistema Operacional

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Capítulo 7 Nível da Linguagem Assembly

Introdução à Computação: Sistemas de Computação

Java. Marcio de Carvalho Victorino

Infra-Estrutura de Software. Introdução. (cont.)

Sistemas Operacionais

SISTEMAS OPERACIONAIS

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

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

Linguagem de Programação

Programa ConsoleRPN. PUC-Rio CIV Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira

Processamento com SPOOL. Utilização do CPU e periféricos. Perfis dos programas. Exemplo IBM 1460 (1963) Problemas no escalonamento.

(Aula 15) Threads e Threads em Java

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

Descrição e análise da implementação em Assembly MIPS da função itoa

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Programação científica C++

Aula 05 Ferramentas de desenvolvimento


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

Conceitos básicos de programação de sistemas. ambientes UNIX e Linux Taisy Silva Weber

AULA Uma linguagem de programação orientada a objetos

Linguagens de Programação

Planeamento. Introdução ao Sistema Operativo UNIX. Java: Ferramentas, Entradas/Saídas, Excepções. Threads e Semáforos. Problemas de Sincronização

Apresentação. Rio de Janeiro, 19 de fevereiro de 2002 Waldemar Celes

4 Estrutura do Sistema Operacional Kernel

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

UFRPE Prof. Gustavo Callou

Programação online em Java

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

Organização de Computadores Software

Ambiente de Desenvolvimento

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Figura 1 - O computador

FBV - Linguagem de Programação II. Um pouco sobre Java

Introdução a Computação

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Sistemas Operacionais

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

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

O que é o Android? O que é o Android

Sistemas Operacionais

Computador Cleópatra

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal

Tutorial :: Introdução ao VHDL em ambiente Design Works

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

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

Editor Eclipse para Programas F

1 Code::Blocks Criação de projetos

Convertendo Algoritmos para a Linguagem C

Transcrição:

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 disco > durabilidade) característico ou não de uma dada plataforma plataforma: sistema operativo & cia. + processador & cia. quando em execução, designa se processo J. Magalhães Cruz Programação 2 Programação Prática 1 15

Processo actividade e uso de recursos necessários ao cumprimento de um programa controlado pelo sistema operativo tem associado: espaço de endereçamento (memória) instruções (text) dados (data) zona de trabalho (heap, stack) variáveis nas tabelas de sistema outros recursos necessários (partilhados...) portos de comunicação semáforos... memória alta ~ ~ vars amb, opcs comd stack heap dados (data) ~ ~ instruções memória (text) baixa Espaço de endereçamento típico de um processo Unix, executando um programa em C. J. Magalhães Cruz Programação 2 Programação Prática 2 15

Código de Programa instruções e informação de dados guardados em ficheiros mas... quem o faz? quem o usa? é compreensível? é estruturado? pode ser alterado? onde é executado?... J. Magalhães Cruz Programação 2 Programação Prática 3 15

Código: compreensão fontes informação normalmente textual compreensível por quem conhecer a linguagem em que foi escrita (linguagem de programação) podem ser utilizadas (executadas) directamente ou não ter as fontes é possuir o programa binários informação codificada na linguagem natural do processador só compreensível após descodificação podem ser usados (executados) sozinhos ou necessitam de acompanhamento (código de loading) ter os binários é poder usar o programa J. Magalhães Cruz Programação 2 Programação Prática 4 15

Código: estrutura partes específicas (programador!) declarações (e.g. ficheiros de inclusão, classes) instruções (e.g. rotinas) dados (e.g. variáveis pré definidas) partes gerais (sistema de desenvolvimento e execução) declarações > ficheiros de inclusão (texto!) Unix: /usr/include/ bibliotecas (libraries) > arquivos binários! estáticas Unix: /usr/lib/ (e.g. C: libc.a ; C++: libstdc++.a) dinâmicas (ou partilhadas) Unix: /usr/lib/ (e.g. C: libc.so ; C++: libstdc++.so) MSWindows: *.dll.a > archive.so > shared object.dll > dynamic link library J. Magalhães Cruz Programação 2 Programação Prática 5 15

Bibliotecas dinâmicas partilhadas Pró: partilha de espaço de memória actualização automática de aplicações limitações... perigo de ruptura... ficheiro executável tem tamanho mínimo prog 1 dados código prog 2 dados código Contra: mobilidade... desempenho... código dinâmico partilhado Partilha de rotinas de bibliotecas dinâmicas por vários processos. J. Magalhães Cruz Programação 2 Programação Prática 6 15

Construção de um programa obter requisitos, meditar, planear, escolher ambiente de programação ferramenta base: cérebro, papel e lápis... escrever programa numa linguagem de programação > código fonte ferramenta base: editor de texto (e.g. kate) compilar > código objecto ferramentas base: compilador (máquina ou bytecode) gerar executável > código objecto de bibliotecas (e.g. C, C++) ferramenta base: linker executar > código fonte, intermédio (bytecode) ou máquina ferramentas base: loader, interpretador (bytecode ou fonte) corrigir e aperfeiçoar > código fonte ferramentas base: cérebro, depurador (debugger), profiler, time (Unix)... J. Magalhães Cruz Programação 2 Programação Prática 7 15

Execução de um programa: possuir: código fonte > fontes interpretadas (e.g. BASIC, Bourne shell) código máquina > fontes compiladas (e.g. C, C++) código intermédio (bytecode) > fontes semi compiladas (e.g. JAVA) comandar: interpretador de comandos (shell, normal ou gráfica) sistema operativo interpretador de linguagem carregador (loader) ligador dinâmico (dynamic linker) computador (hardware) : processador, memória interna, barramentos, dispositivos E/S...... simulador (software) idem... J. Magalhães Cruz Programação 2 Programação Prática 8 15

Depuração de um programa (debugging): editor (e.g. kate) alterar o código fonte ambiente de execução (e.g. PC com JVM Java Virtual Machine) interpretador / compilador preparar e executar o programa computador / simulador fornecer os recursos ao programa depurador (e.g. gdb (texto) ; e.g. ddd (gráfico)) executa de forma controlada (saltos, paragens...) revela os valores das variáveis cérebro conhecimento, engenho, paciência, intuição J. Magalhães Cruz Programação 2 Programação Prática 9 15

Ferramentas auxiliares ambiente de desenvolvimento (IDE Integrated Development Environment) e.g. Eclipse, KDevelop documentação manuais gerais de utilização manuais de referência (API Application Program Interface) man, info (e.g. shell> man atoi ; e.g man:/atoi (KDE)) construção programada (controlada) e.g. make (ver à frente) ambiente de compilação pré processador (e.g. g++ E) #include <iostream.h> ; #define DOIS 2 assemblador (e.g. g++ S) código assembly J. Magalhães Cruz Programação 2 Programação Prática 10 15

make é um interpretador de programas que: estão num ficheiro de texto, makefile usam uma linguagem própria (~shell) blocos são semelhantes às receitas de culinária: produto final, ingredientes, instruções funciona com base em regras de dependência entre ingredientes e produtos comparação de idades entre ingredientes e produtos pode ser usado em aplicações múltiplas preparação e actualização de programas, documentação... utilização shell> make [existe Makefile] shell> make f fich makefile J. Magalhães Cruz Programação 2 Programação Prática 11 15

...make (cont.) ##### Makefile example # Two executables are to be created: ex1, ex2 # Their source code is, respect.: ex1.c, ex2.c # The sources use, respect.: (com.h, ex1.h), com.h # all: ex1 ex2 ex1: ex1.o cc ex1.o o ex1 ex2: ex2.o cc ex2.o o ex2 ex1.o: ex1.c com.h ex1.h cc Wall c ex1.c ex2.o: ex2.c com.h cc Wall c ex2.c clean: rm f ex1 ex2 ex1.o ex2.o J. Magalhães Cruz Programação 2 Programação Prática 12 15

Vida e morte de um programa em C: arranque rotina de arranque em C! int main(int argc, char *argv[], char *envp[]); terminação void exit(int status); argv argv[0] argv[1] prog.name\0 1st.prog.arg\0 argv[argc-1] NULL last.prog.arg\0 envp envp[0] envp[1] environ NULL HOME=/home/user1\0 SHELL=/bin/sh\0 J. Magalhães Cruz Programação 2 Programação Prática 13 15

...Vida e morte de um programa em C: (cont.) call call user or library functions user s main() function C startoff routine exec() ret ret call call or drop off exit() C exit() routine user process _exit() C _exit() routine sys call kernel Arranque e terminação de um programa em C. J. Magalhães Cruz Programação 2 Programação Prática 14 15

Utilização do compilador e observação de aspectos diversos: criação de executáveis estáticos e dinâmicos shell> g++ test.c o test shell> g++ static test.c o test.stat shell> ls l test* rw r r 1 user grp 366 2007 03 27 15:18 test.c rwxr xr x 1 user grp 8335 2007 04 07 10:42 test rwxr xr x 1 user grp 1184013 2007 04 07 14:33 test.stat criação de código assembly shell> g++ S test.c o test.asmb shell> ls l test.asmb rw r r 1 user grp 4910 2007 04 07 14:34 test.asmb criação de código pré compilação (depois do pré processador) shell> g++ E test.c o test.prec shell> ls l test.c test.prec rw r r 1 user grp 366 2007 03 27 15:18 test.c rw r r 1 user grp 694897 2007 04 07 14:34 test.prec J. Magalhães Cruz Programação 2 Programação Prática 15 15