Bibliotecas de ligação dinâmica (DLLs)

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

Download "Bibliotecas de ligação dinâmica (DLLs)"

Transcrição

1 Bibliotecas de ligação dinâmica (DLLs) As shared libraries existentes no mundo Unix e utilizadas na UC de PSC têm como equivalente no Windows as chamadas DLLs (Dynamic Link Libraries). O termo no mundo Linux remete para a ideia de partilha (do código) da shared library entre as aplicações cliente. Já no Windows dá-se ênfase à ideia ao tipo de ligação (dinâmica) do código da biblioteca com os seus clientes. Na verdade os dois aspectos são duas faces da mesma moeda: a partilha apenas é possível pelo facto da ligação ser dinâmica. Tal como nas shared libraries, nas DLLs a ligação com os clientes pode ocorrer em dois tempos: em tempo de carregamento com a aplicação cliente (ligação implícita) e a pedido explícito (de forma programática) das aplicações (ligação explícita) Sistemas Operativos 1

2 Bibliotecas de ligação dinâmica (DLLs) - vantagens e desvantagens Relativamente à construção de executáveis auto-suficientes a ligação dinâmica tem as seguintes vantagens: Minimização de espaço em disco ocupado pelas aplicações Minimização de memória por via da partilha de regiões da DLL entre aplicações cliente (regiões de código, regiões de dados read/only e mesmo de dados read/write através do mecanismo de copy-on-write) Facilita a manutenção evolutiva ( é possível modificar a implementação ou corrigir bugs nas DLL s) sem necessidade de reconstrução dos executáveis cliente. Possibilidade de criar aplicações extensíveis por via do carregamento explícito de DLL s. Também tem algumas desvantagens: Distribuição de aplicações mais complicada como consequência da árvore de dependências associada (notem que as DLL s podem ser elas próprias clientes de outras DLL s...) Maior tempo de carregamento das aplicações no caso do carregamento implícito de potencialmente muitas dezenas ou mesmo centenas de DLL s. Contudo, as vantagens sobrepôem-se em muito às vantagens Sistemas Operativos 2

3 Produção e consumo de bibliotecas de ligação dinâmica(dll s) definir DLLMATH_EXPORTS apenas no build da DLL #include "stdafx.h" #include "dllmath.h" #ifdef DLLMATH_EXPORTS #define MATH_API _declspec(dllexport) #else #define MATH_API _declspec(dllimport) #endif dllmath.h #ifdef cplusplus extern C { #endif MATH_API int add(int op1, int op2); #ifdef cplusplus #include <stdafx.h> #endif dllmath.c #include dllmath.h ficheiro de include, partilhado entre DLL e clientes que inclui as funções exportadas e tipos usados nos respectivos parâmetros. mathclient.c other libs & objs int add(int oper1, int oper2) { return oper1 + oper2; build (compile and link) int _tmain(int argc, _TCHAR* argv[]) { _tprintf(_t("%d\n"), add(3,5)); build (compile and link) other libs & obs dllmath.dll dllmath.lib mathclient.exe depends on Sistemas Operativos 3

4 Produção e consumo de Bibliotecas de Ligação Dinâmica(DLL s) all: dllmath.dll mathclient.exe Exemplo de utilização do compilador e do linker em comandos de linha para a produção e consumo de dll s. O makefile exemplifica os comandos necessários, admitindo que as fontes estão na mesma directoria. dllmath.dll: dllmath.obj dllmain.obj link /DLL dllmath.obj dllmain.obj dllmath.obj: dllmath.c cl /c /D dllmath_exports dllmath.c mathclient.exe: mathclient.obj link mathclient.obj dllmath.lib mathclient.obj: mathclient.c cl /c /MD mathclient.c Utilizar a import library (msvcrtd.lib) associada à versão dll do runtime do C (msvcr100.dll). Na sua omissão é usada a biblioteca estática com o runtime (libcmtd.lib). Notem a diferença de tamanho do executável entre os dois casos Sistemas Operativos 4

5 dumpbin (exports & imports) Dump of file dllmath.dll File Type: DLL Section contains the following exports for DLLMATH.dll characteristics 4D9835A0 time date stamp Sun Apr 03 09:53: version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name add Summary dumpbin /exports dllmath.dll rdata 1000.reloc 5000 Inicialmente os linkers colocavam a tabela de exports na secção.edata. Actualmente encontra-se na secção de dados constantes (.rdata). dumpbin /imports mathclient.exe Dump of file mathclient.exe File Type: EXECUTABLE IMAGE Section contains the following imports: dll2.dll 4020B4 Import Address Table 4022A8 Import Name Table 0 add MSVCR100.dll Import Address Table Import Name Table 5D7 printf 573 exit 3C9 _onexit KERNEL32.dll Import Address Table 4021F4 Import Name Table 1C0 GetCurrentProcess 4C0 TerminateProcess Summary rdata 1000.reloc 1000 Neste caso as tabelas de import também ficaram na secção.rdata Sistemas Operativos 5

6 Convenções de chamada Por omissão, na chamada de funções, na convenção usada por omissão pelo compilador de C o chamador desempilha os argumentos (add esp, n). No Windows é usada, por razões históricas, outra convenção de chamada. A função invocada é que desempilha os argumentos (ret n). Usa-se o atributo do compilador stdcall (ou a macro equivalente WINAPI) a prefixar o nome da função, para especificar este comportamento. Tal opção permite poupar algum código pois o ajuste do stack fica centralizado. Usando a assinatura DLLMATH_API int WINAPI add(int op1, int op2) para a função exportada, as tabelas de export da dll e import do executável sofrem as seguintes modificações: Dump of file dllmath.dll File Type: DLL Section contains the following exports for DLLMATH.dll ordinal hint RVA name _add@8 Dump of file mathclient.exe File Type: EXECUTABLE IMAGE Section contains the following imports: dll2.dll 4020B4 Import Address Table 4022A8 Import Name Table 0 _add@8 O nome passa a estar decorado com a inclusão da dimensão em bytes dos argumentos a passar à função Sistemas Operativos 6

7 Ligação implícita e explícita A ligação com uma DLL pode ser feita em dois tempos: Em tempo de carregamento do executável quando o executável depende da DLL através de uma import table produzida pela ligação estática com a import library associada à DLL. Neste caso, a ligação dizse automática ou implícita. Em tempo de execução a pedido explícito do programa. Neste caso a ligação diz-se manual ou explícita. Desta forma é possível, por exemplo, escolher a dll a usar em tempo de execução ou estender as funcionalidades da aplicação Sistemas Operativos 7

8 Ligação explícita modelo computacional O Windows expõe as seguintes funções para tirar partido da ligação explícita: O mesmo que TCHAR* HMODULE WINAPI LoadLibrary( LPCTSTR lpfilename ); FARPROC WINAPI GetProcAddress( HMODULE hmodule, LPCSTR lpprocname ); BOOL WINAPI FreeLibrary(HMODULE hmodule ); typedef int (WINAPI * AddFuncPtr)(int i1, int i2); O mesmo que char*. É um dos raros casos em que na Windows API se utilizam forçosamente caracteres a 8 bits. Notem a boa prática de especificar através de um typedef a assinatura da função a invocar. Na versão da dll que expõe a função usando a convenção de chamada stdcall (WINAPI) teremos de ter o cuidado de incluír a convenção ou naturalmente o stack é incorrectamente ajustado. Notem também a utilização do nome decorado na função GetProcAddress. int _tmain(int argc, _TCHAR* argv[]) { HMODULE hlib; AddFuncPtr addfunc; hlib = LoadLibrary(_T("DLL2.DLL")); addfunc = (AddFuncPtr) GetProcAddress(hLib, "_add@8" ); if (addfunc==null) { _tprintf(_t("gelasterror=%d\n"), GetLastError()); return 1; _tprintf(_t("%d\n"), addfunc(3,5)); FreeLibrary(hLib); return 0; Sistemas Operativos 8

9 Algoritmo de LoadLibrary Thread calls LoadLibrary bib: Windows via C/C++, Richter, fig Is DLL already mapped in process address space? NO Can the system find the specified DLL file? NO YES Increment DLL s usage count Map DLL into process address space YES NO Is the usage count equal to 1? YES Call the library s DllMain function with a value of DLL_PROCESS_ATTACH Did DllMain return TRUE? YES Return hinstdll (load address) of the library NO Decrement DLL s usage count and unmap DLL from process address space Return NULL Sistemas Operativos 9

10 dll entry point: DllMain As dll s podem ter um entry point (DllMain). O entry point é invocado nas seguintes situações, entre outras que veremos adiante: Da primeira vez que a dll é carregada no espaço de endereçamento de um processo (DLL_PROCESS_ATTACH), quer na ligação implícita quer na ligação explícita. Quando a dll for retirada do espaço de endereçamento (DLL_PROCESS_DETACH). Isto ocorre no último FreeLibrary ou em fase de terminação do processo. O código seguinte exemplifica a utilização: #include "stdafx.h" sinónimo de WINAPI BOOL APIENTRY DllMain( HMODULE hmodule, DWORD reason_for_call, LPVOID reserved){ switch (reason_for_call) { case DLL_PROCESS_ATTACH: _tprintf(_t("starting Math DLL\n")); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: _tprintf(_t("ending DLLW2\n")); break; return TRUE; Sistemas Operativos 10

11 DLL s ligação estática na construção e dinâmica no carregamento x.dll app.exe process virtual address space.edata x.lib.idata x.dll import stubs app.obj StaticLinker (Link.exe) app.exe.reloc.idata Dynamic Linker (ntdll.dll).idata (Import Table) Construção do Executável (Ligação estática) app.exe Ligação dinâmica no carregamento do executável Sistemas Operativos 11

12 DLL s Detalhe da ligação dinâmica app.exe PE header app base address.reloc (RVA table).idata Import Name Table Import Address Table x.dll Dynamic Linker (ntdll.dll) app.exe process virtual address space.idata (Import Tables) x.dll PE header dll base address.reloc (RVA table).edata Export Name Table Export Address Table (RVAs) app.exe Sistemas Operativos 12

13 dll necessidade de relocalização Por omissão o código e os dados da DLL são localizados na ligação estática a partir de 0x O código de acesso a variáveis globais (e às tabelas de import de outras dll s de que esta dependa) foi gerado tendo em conta essa base. O que fazer se a dll não puder ser carregado nesse endereço? Dump of file dllmath.dll OPTIONAL HEADER VALUES 10B magic # (PE32) linker version 3600 size of code 3600 size of initialized data 0 size of uninitialized data 110C8 entry point DllMainCRTStartup@12) 1000 base of code 1000 base of data image base ( to 1001AFFF) 1000 section alignment função para guardar em variável global (estática) a dimensão da página obtida via GetSystemInfo static int savedpagesize; int GetPageSize() { SYSTEM_INFO si; if (savedpagesize == 0) { GetSystemInfo(&si); savedpagesize=si.dwpagesize; return savedpagesize; Excerto do código gerado para a função, localizado de acordo com o link base address por omissão A4 call ( h)] B1 mov B4 mov dword ptr [ imp GetSystemInfo@4 eax,dword ptr [ebp-24h] savedpagesize ( h),eax Sistemas Operativos 13

14 Mecanismo de relocalização Os ficheiros imagem (dlls e executáveis) contém uma secção (.reloc) que é essencialmente uma tabela de RVAs que indica referência a endereços que necessitam de relocalização (se mudar o endereço base de carregamento). Em tempo de carregamento essas posições de memória são modificadas de acordo com o novo endereço base. Mas o que acontece se houver necessidade de relocalização da DLL no caso desta ser partilhada (como é usual)? Porque razão os executáveis também contêm uma secção.reloc se são sempre carregados no endereço especificado em tempo de ligação? Excerto da tabela de relocações referente ao código do slide anterior e obtida através da opção relocations do comando dumpbin. As colunas representam, respectivamente, o RVA, o tipos da relocação, o valor actual e o símbolo referido AE6 HIGHLOW imp GetSystemInfo@4 AF5 HIGHLOW _savedpagesize Sistemas Operativos 14

15 Optimizações DLL rebase e DLL bind O utilitário rebase permite efectuar a relocalização antecipada de uma dll para o endereço especificado de modo a evitar a recolocação em tempo de carregamento. Deste modo consegue-se maior eficiência em tempo de carregamento e utilização da memória. As dll s do windows estão todas rebased para endereços que evitam colisões. Vantagens de um sistema operativo proprietário REBASE b newbase image-name O comando bind permite efectuar a ligação dinâmica de forma antecipada, isto é, iniciar as import address tables de acordo com os endereços base especificados nas dll s de que depende a imagem sobre a qual é efectuada o bind. Evita a ligação dinâmica se as dll s não forem alteradas e forem carregadas no endereço pré-definido. Caso contrário a ligação dinâmica é efectuada. BIND u image-name Sistemas Operativos 15

16 Objectivos de aprendizagem Identificar as vantagens/desvantagens da utilização de bibliotecas de ligação dinâmica versus bibliotecas de ligação estática. Entender os passos envolvidos na construção e consumo de DLL s, nomeadamente a construção de ficheiros de include partilhados e o papel das bibliotecas de ligação estática (libs) associadas às DLLs. Explicar a existência de várias convenções de chamada ( cdecl, stdcall, fastcall) e a necessidade de garantir o match entre clientes (aplicações) e fornecedores (DLLs). Compreender o mecanismo de ligação dinâmica, explicando o papel das tabelas de importação e exportação. Explicar a potencial necessidade de relocalização do código das DLLs, o processo de relocalização propriamente dito e os seus inconvenientes. Compreender o interesse de utilitários como o rebase e o bind no que concerne, respectivamente, à necessidade de evitar relocalizações e a optimizar o processo de ligação dinâmica implícita Sistemas Operativos 16

17 Bibliografia Windows via C/C++, Fifth Edition, Jeffrey Richter e Christophe Nasarre Cap.19 DLL basics Cap.20 DLL advanced techniques Sistemas Operativos 17

DLL s ligação estática na construção e dinâmica no carregamento

DLL s ligação estática na construção e dinâmica no carregamento DLL s ligação estática na construção e dinâmica no carregamento x.dll app.exe process virtual address space.edata x.lib.idata x.dll.bss import stubs app.obj StaticLinker (Link.exe) Construção do Executável

Leia mais

Bibliotecas de ligação dinâmica (DLLs)

Bibliotecas de ligação dinâmica (DLLs) Bibliotecas de ligação dinâmica (DLLs) As shared libraries existentes no mundo Unix e utilizadas na UC de PSC têm como equivalente no Windows as chamadas DLLs (Dynamic Link Libraries). O termo no mundo

Leia mais

Dynamic Link Library (DLL) e Thread Local Storage (TLS)

Dynamic Link Library (DLL) e Thread Local Storage (TLS) Dynamic Link Library (DLL) e Thread Local Storage (TLS) Jeffrey Richter, Christophe Nasarre, Windows via C/C++, Fifth Edition, Microsoft Press, 2008 [cap. 19, 20 e 21] Microsoft, Microsoft Developer s

Leia mais

Linguagem C. Produção de programas em C (Ligação dinâmica) João Pedro Patriarca

Linguagem C. Produção de programas em C (Ligação dinâmica) João Pedro Patriarca Capítulo 7, secções 10-12 Linguagem C Produção de programas em C (Ligação dinâmica) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt) Ligação estática

Leia mais

Linguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Linguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Capítulo 7, secções.1-.9 Capítulo 4, secções.5-.11 Linguagem C Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)

Leia mais

Gestão de memória - Memory Management Unit (MMU)

Gestão de memória - Memory Management Unit (MMU) Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por

Leia mais

Gestão de memória - Memory Management Unit (MMU)

Gestão de memória - Memory Management Unit (MMU) Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por

Leia mais

Sumário. Sistemas Operativos 1

Sumário. Sistemas Operativos 1 Sumário Requisitos mínimos do hardware para suportar um SO protegido (ex: Windows/Linux) Mecanismos hardware de suporte nas arquitecturas x86/x64 Sequência de chamada de serviços sistema no Windows a 32

Leia mais

Gestão de Memória algoritmos e políticas

Gestão de Memória algoritmos e políticas Gestão de Memória algoritmos e políticas Criação de espaços de endereçamento virtual com gestão eficiente (gasto mínimo) da memória física disponível O que carregar(colocar em memória física) e quando?

Leia mais

Ligação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria.

Ligação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria. Ligação e Relocação Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria http://www.inf.puc-rio.br/~inf1018 Compilação e Ligação hello.c Preprocessador hello.i programa fonte expandido (texto) Compilador hello.s

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

Implementação da programação modular II

Implementação da programação modular II Implementação da programação modular II - 1 Implementação da programação modular II Aula 11 Agenda Declaração e definição de dados Os conceitos relacionados com a ligação de programas Os elementos essenciais

Leia mais

Sistemas Operativos. Gestão de memória no Windows NT

Sistemas Operativos. Gestão de memória no Windows NT Sistemas Operativos Gestão de memória no Windows NT Windows Internals, Russinovich, cap. 9, Memory Management Windows Via C/C++, Richter, cap. 13, cap. 14. MSDN, http://msdn.microsoft.com/en-us/library/aa366779(v=vs.85).aspx

Leia mais

Compilação, Amarração e Relocação

Compilação, Amarração e Relocação Compilação, Amarração e Relocação Desenvolvimento modular Programas grandes devem ser implementados de forma modular Limitam a complexidade de manutenção do código Mudança em um módulo não requer a re-compilação

Leia mais

Existe uma diferença entre o enlace estático de uma DLL e o uso estático do enlace.

Existe uma diferença entre o enlace estático de uma DLL e o uso estático do enlace. E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I 8. Criando DLLs As bibliotecas de enlace dinâmico (DLL - Dynamic-link libraries) fornecem uma forma modular de construir aplicações de

Leia mais

Processos. Programas e Processos. Aula 1 - Chamadas ao sistema. José Pedro Oliveira fork exit getpid, getppid wait, waitpid

Processos. Programas e Processos. Aula 1 - Chamadas ao sistema. José Pedro Oliveira fork exit getpid, getppid wait, waitpid Conteúdo Programas e Aula 1-1 Programas e (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 006-007 3 Referências

Leia mais

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Programação em Sistemas Computacionais

Programação em Sistemas Computacionais Programação em Sistemas Computacionais Linguagem C Introdução, tipos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Jorge Martins (jmartins@isel.pt) baseado no slides de Pedro Pereira Enquadramento

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Software Básico. Silvio Fernandes Aula 15: Carregamento dinâmico

Software Básico. Silvio Fernandes Aula 15: Carregamento dinâmico Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 15: Carregamento dinâmico Silvio Fernandes 2009.1 1 Introdução Bibliotecas

Leia mais

Controlo de Execução. K&R: Capitulo 3

Controlo de Execução. K&R: Capitulo 3 Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010

Leia mais

13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica

13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica 13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física

Leia mais

Compiladores Ambiente de Execução

Compiladores Ambiente de Execução Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho)

Leia mais

Gerenciamento de Memória. Memória Principal

Gerenciamento de Memória. Memória Principal Gerenciamento de Memória Memória Principal Principais tópicos: Aspectos Básicos Alocação de Memória Paginação Segmentação Com a possibilidade de executar mais do que um processo simultaneamente, surgiu

Leia mais

Instituto Superior de Engenharia de Lisboa Licenciatura em Engenharia Informática e de Computadores

Instituto Superior de Engenharia de Lisboa Licenciatura em Engenharia Informática e de Computadores Instituto Superior de Engenharia de Lisboa Licenciatura em Engenharia Informática e de Computadores Sistemas Operativos, Verão de 2014/2015 Exame de 1ª Época Parte I Duração 1h 15m 1. [2,5] Considere um

Leia mais

Elementos de Linguagem C

Elementos de Linguagem C Elementos de Linguagem C Parte II Elementos de linguagem C Parte II 1 Macros O pré-processador da linguagem C suporta a substituição de macros, criadas com #define nome_macro texto de substituição As macros

Leia mais

Linguagem C (continuação)

Linguagem C (continuação) Linguagem C (continuação) Funções, arrays e ponteiros Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João

Leia mais

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física

Leia mais

Sistemas de Operação (2018/2019) Ficha 4

Sistemas de Operação (2018/2019) Ficha 4 Sistemas de Operação (2018/2019) Ficha 4 Q1. Considere a seguinte implementação de um comando mycat (semelhante ao cat da shell Bash) utilizando directamente a API do Unix (system calls) em vez da Biblioteca

Leia mais

SISTEMAS OPERATIVOS I

SISTEMAS OPERATIVOS I Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Ficha 6 Abril de 2006 Nuno Malheiro Maria João Viamonte Berta Batista Luis Lino Ferreira Sugestões

Leia mais

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Argumentos da linha de comando Funções recursivas Programação 2010/2011 DEEC-IST Arg. da linha de comando;

Leia mais

16. Compilação no Linux

16. Compilação no Linux 16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código

Leia mais

Procedimentos. Sistemas de Computação

Procedimentos. Sistemas de Computação Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem

Leia mais

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Nivel de Linguagem de Montagem (Assembly)

Nivel de Linguagem de Montagem (Assembly) Nivel de Linguagem de Montagem (Assembly) Orlando Loques setembro 2006 Referências: Structured Computer Organization (capítulo 7), A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization and

Leia mais

COMPILAÇÃO. Ricardo José Cabeça de Souza

COMPILAÇÃO. Ricardo José Cabeça de Souza COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o

Leia mais

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão A - Introdução O C é orientado para a produção de aplicações informáticas de grande dimensão Na geração de aplicações informáticas há ficheiros gerados a partir de outros: logo, os segundos têm obrigatoriamente

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Linguagem C Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João

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

Leandro Soares de Sousa (DSc.) Página: Aula 04 - desenvolvimento multithread

Leandro Soares de Sousa (DSc.)   Página:   Aula 04 - desenvolvimento multithread Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 04 - desenvolvimento multithread Mais e mais ferramentas! 2 Processos e Threads: desenvolvimento

Leia mais

%LEOLRWHFDV(VWiWLFDVH'LQkPLFDV

%LEOLRWHFDV(VWiWLFDVH'LQkPLFDV 38& 81,; Prof. Renato Mauro Carlos Henrique Pereira de Oliveira kkrj@terra.com.br 16 de setembro de 2002 %LEOLRWHFDV(VWiWLFDVH'LQkPLFDV %LEOLRWHFDV Biblioteca é um recurso de programação que trás vantagens

Leia mais

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço

Leia mais

A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software.

A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software. Módulos A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software. Uma parte de um programa num módulo interage com outra

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas. 25-215 Volns Bernal 1 25-215 Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br Os problemas Controle do endereço de retorno da função Controle do quadro da pilha de Departamento de Sistemas Eletrônicos

Leia mais

LEIC/LERC 2010/11 1º Teste de Sistemas Operativos

LEIC/LERC 2010/11 1º Teste de Sistemas Operativos Número: Nome: LEIC/LERC 2010/11 1º Teste de Sistemas Operativos 13 de Novembro de 2010 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I [6,8 v.] 1.

Leia mais

Linguagens e a máquina

Linguagens e a máquina Linguagens e a máquina Seguem algumas breves definições das etapas utilizadas na geração de programas a partir de linguagens de programação: 1. A compilação pode ser entendida como o processo de traduzir

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Arquitetura e Organização de Computadores. Compiladores e processamento

Arquitetura e Organização de Computadores. Compiladores e processamento Arquitetura e Organização de Computadores Compiladores e processamento Verificar a existência dos pacotes: - GCC (Gnu C Compiler); - GDB (Gnu Debuger); - Libc (blibliotecas C); - nano, vi, emacs ou outro

Leia mais

Básico: estrutura de programa, sintaxe Interface com linha de comando

Básico: estrutura de programa, sintaxe Interface com linha de comando Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências

Leia mais

Sistemas Operativos, 3. o MIEIC 2009/10, FEUP

Sistemas Operativos, 3. o MIEIC 2009/10, FEUP Sistemas Operativos, 3. o MIEIC 2009/10, FEUP RMA, JVV, HSF December 20, 2009 2. o Trabalho Prático: SO Shell Stats (sosh s) Objectivos Completando com sucesso todas as fases deste trabalho, os alunos

Leia mais

Compiladores Ambiente de Execução

Compiladores Ambiente de Execução Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Desenvolvimento de Bibliotecas

Desenvolvimento de Bibliotecas 5 Desenvolvimento de Bibliotecas Sumário: Tipos de bibliotecas: arquivo (.a) e partilhada (.so)bibliotecas do sistema (libc, libm,...) Criação duma biblioteca estática Visualização do conteúdo duma biblioteca

Leia mais

TE091 Programação Orientada a Objetos Engenharia Elétrica

TE091 Programação Orientada a Objetos Engenharia Elétrica TE091 Programação Orientada a Objetos Engenharia Elétrica Revisão Rápida de Programação em C Prof. Carlos Marcelo Pedroso 2015 Revisão Linguagem C Características principais Modularidade: uso de procedimentos

Leia mais

Orientação a Objetos - Programação em C++

Orientação a Objetos - Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 14: As classes List e Vector da STL (Standard Template Library). Prof. Jean Marcelo SIMÃO Classe List Uma classe Predefinida na

Leia mais

Compiladores Geração de Código

Compiladores Geração de Código Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Revisão para Prova 2. Mirella M. Moro

Revisão para Prova 2. Mirella M. Moro Revisão para Prova 2 Mirella M. Moro 2 Roteiro 1. Estruturas de decisão 2. Estruturas de repetição 3. Funções 4. Vetores 5. Matrizes 6. Ponteiros 7. Alocação dinâmica 3 1. Estruturas decisão if (condição)

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Estruturação de código e outros

Leia mais

Pragmática das Linguagens de

Pragmática das Linguagens de Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Primeiro Exame/Segundo Teste 17/12/2004 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das

Leia mais

Leandro Soares de Sousa (DSc.) Página: Parte II

Leandro Soares de Sousa (DSc.)   Página:   Parte II Tópicos Especiais em Sistemas Computacionais Leandro Soares de Sousa (DSc.) e-mail: leandro.uff.puro@gmail.com Página: http://www.ic.uff.br/~lsousa Parte II Mais e mais ferramentas! 2 Processos e Threads:

Leia mais

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Ponteiros & tabelas (cont.) K&R: Capítulo 5 Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:

Leia mais

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 12: Const, Static, NameSpace e Nested Prof. Jean Marcelo SIMÃO Métodos Const #ifndef _MINHASTRING_H_ #define _MINHASTRING_H_ class

Leia mais

Argumentos da linha de comando Exemplos Recursividade de funções Exemplos

Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Sumário Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Programação 2007/2008 DEEC-IST 1 Argumentos da linha de comando Motivação: Nas aulas de laboratório foi utilizado o compilador

Leia mais

Projecto hipotético para resolvermos hoje

Projecto hipotético para resolvermos hoje Projecto hipotético para resolvermos hoje 12/13 Sistemas Distribuídos 1 Projecto hipotético para resolvermos hoje Implementar servidor de contagem que mantém contador e oferece estas operações aos clientes:

Leia mais

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make Departamento de Engenharia Informática Sistemas Operativos 1 Utilitário Make Março 2003 1. Modelo de Compilação da Linguagem C Compilar um programa muito simples em C requer, pelo menos, o ficheiro de

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica) SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{

Leia mais

Preprocessador. Macros. #include. #define

Preprocessador. Macros. #include. #define Preprocessador O preprocessamento é uma das primeiras etapas na compilação do código em C. Toda linha que começa com # é uma diretiva para o preprocessador, e se extende até o fim da linha (diferentemente

Leia mais

Tabelas de Dispersão - Introdução (1)

Tabelas de Dispersão - Introdução (1) Algoritmos e Estruturas de Dados LEE 2013/14 Tabelas de Dispersão Tabelas de Dispersão - Introdução (1) As tabelas de dispersão (hash tables) são estruturas de dados adequadas para: Tabelas de símbolos

Leia mais

Arquitecturas Alternativas. Java Virtual Machine

Arquitecturas Alternativas. Java Virtual Machine Arquitecturas Alternativas Java Virtual Machine Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual

Leia mais

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 Apontadores O que é um apontador? Variável que contém

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos

Leia mais

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 1 Pilha de execução Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 2 Agenda Os desafios da execução

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Visão geral de montadores, ligadores e carregadores 2 a edição Revisão: Fev/2003 Sistemas Operacionais Montadores, ligadores e carregadores Anexo A Como um programa é construído até ser executado? Montadores

Leia mais

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011 Ana Paula Tomás Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011 Aula 1 Objectivos e programa da disciplina. Critérios de avaliação. Um primeiro programa

Leia mais

TAD: Tipo Abstrato de Dados (parte 2)

TAD: Tipo Abstrato de Dados (parte 2) TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c

Leia mais

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. LINGUAGEM SQL SQL CREATE DATABASE MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. SQL CREATE TABLE SQL NOT NULL O valor NOT NULL obriga que o campo contenha sempre

Leia mais

PCS-2042 Sistemas Operacionais. Projeto 3: Drivers

PCS-2042 Sistemas Operacionais. Projeto 3: Drivers PCS-2042 Sistemas Operacionais Projeto 3: Drivers Mark Hodgkin Pedro d Aquino Rafael da Silva 13/07/2008 CONTEÚDO Objetivo... 3 Drivers no Minix... 4 Criando um Driver... 4 Proposta do Projeto... 5 Bibliografia...

Leia mais

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira x86 Data types In C: char short int/long double/long long 2 O stack O stack cresce em direção a endereços de memória menores Instruções fundamentais: push, pop 0xFF90 0xA331 0xFF8E 0xFF8C 0xFF8A 0x4712

Leia mais

TAD: Tipo Abstrato de Dados (parte 2)

TAD: Tipo Abstrato de Dados (parte 2) TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve

Leia mais

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos 1 1997-2005 - Volnys Bernal 1 1997-2005 - Volnys Bernal 2 Agenda Processos Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Laboratório de Sistemas Integráveis http://www.lsi.usp.br/!

Leia mais

Introdução à Programação Aula 16. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 16. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 16 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação COMO UM PROGRAMA C É COMPILADO? 2 Compilação de um Programa A compilação

Leia mais

UNIX Gerência de Memória

UNIX Gerência de Memória UNIX Gerência de Memória Introdução Unix implementado sobre muitos computadores diferen tes baseada, segmentada, paginada, segmentada/paginada A gerência de memória garante: Proteção do espaço de endereçamento

Leia mais

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função

Leia mais

PE Binary Infection. Maycon Maia Vitali aka 0ut0fBound

PE Binary Infection. Maycon Maia Vitali aka 0ut0fBound PE Binary Infection Maycon Maia Vitali aka 0ut0fBound Agenda Introdução Estrutura do PE Headers / Directories / Sections RVA (Relative Virtual Address) e Align Rva2Section() / Rva2Offset() Alinhando por

Leia mais

4.6. UML Diagramas de componentes

4.6. UML Diagramas de componentes Engenharia de Software 4.6. UML Diagramas de componentes Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Componentes são partes, executáveis e substituíveis, (idealmente reutilizáveis) de um sistema

Leia mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Organização de um ambiente computacional Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC

Leia mais

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

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas

Leia mais

Programação I A Linguagem C. Prof. Carlos Alberto

Programação I A Linguagem C. Prof. Carlos Alberto Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada

Leia mais

FORMATO DO PROGRAMA FONTE

FORMATO DO PROGRAMA FONTE FORMATO DO PROGRAMA FONTE As declarações do programa fonte são constituídas pelos seguintes campos: 1) Campo do Rótulo: o primeiro caractere deve ser alfabético

Leia mais

Linguagem de Programação C

Linguagem de Programação C Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem

Leia mais