Análise de vulnerabilidades de um código fonte escrito em linguagem C

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

Download "Análise de vulnerabilidades de um código fonte escrito em linguagem C"

Transcrição

1 Análise de vulnerabilidades de um código fonte escrito em linguagem C Fausto Levandoski 1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, São Leopoldo RS Brasil Abstract. This paper presents an analysis of source code written in C language and its main points and vulnerabilities in the end, suggesting a new source code corrected. Resumo. Este artigo apresenta a análise de um código fonte escrito em linguagem C apontando suas vulnerabilidades, falhas de projeto e erros conceituais de programação, ao final sugere um código fonte corrigido. 1. Introdução Programação segura é uma área importante nestes dias em que é muito difundido o desenvolvimento de serviços de rede e WEB. A programação descuidada é a causa maior de erros nos programas e, conseqüentemente, de falhas de segurança em sistemas computacionais, que podem vir a ser descobertos e explorados por atacantes internos ou externos. Este artigo apresenta a análise de um código fonte simples, escrito em linguagem C, apontando suas vulnerabilidades, falhas de projeto e erros conceituais de programação, e, ao final, sugere um código fonte corrigido. 2. Código fonte do programa #include <stdlib.h> #include <stdio.h> #include <syslog.h> #include <unistd.h> static char cmd[128]; static char format[] = "grep %s phone.list\n"; int main(int argc, char *argv[]) { char buf[256]; gets(buf); sprintf(cmd,format,buf+5); puts("\n"); syslog(36,cmd); write(1,"content-type: text/plain\n\n",27); system(cmd); return 0;

2 O programa apresentado age como um CGI (Common Gateway Interface). CGI consiste em uma tecnologia que permite gerar dados dinamicamente, permitindo que parâmetros sejam enviados para um programa, processados e o resultado devolvido para quem os solicitou. A forma mais comum de CGI é utilizada em aplicações para web, onde os dados são enviados a partir de um navegador, processados pelo servidor web e devolvidos para o usuário. O sistema foi programado para comportar-se como uma agenda, onde dados de pessoas estão gravador no arquivo phone.list, e através de um paramento fornecido pelo usuário o programa deve fazer uma busca no arquivo e devolver as informações encontradas. Figura 1. Comportamento normal do CGI A construção do programa seguiu o padrão de um código fonte da linguagem C com a declaração dos includes, declaração de variáveis globais, main, declaração de variáveis locais e o uso de funções pertinentes as bibliotecas declaradas. Analisando o código fonte de maneira mais criteriosa encontramos vulnerabilidades ligadas ao uso de funções sabidamente falhas, erros conceituais de programação, como o uso de variáveis globais quando não há necessidade e erros de projeto, como a declaração de variáveis com tamanhos incompatíveis. Todos estes apontamentos podem levar a uma aplicação vulnerável Uso de variáveis globais Em programação, uma variável global é uma variável acessível em todos os escopos de um programa de computador. O mecanismo de interação com variáveis globais é chamada ambiente global. Em contraste o ambiente local é um mecanismo no qual as variáveis são locais e sem memória compartilhada. O uso de variáveis globais é geralmente considerado inadequado, pois seu conteúdo pode ser potencialmente modificado de qualquer local, e qualquer parte de um código pode depender dela. A técnica possui o potencial de criar dependências mútuas, o que aumenta a complexidade e dificuldade de leitura de um código. Entretanto, para alguns casos seu uso pode ser adequado; um exemplo é a passagem freqüente de variáveis continuamente por diversas funções. [2] Dada a característica bastante simples do programa é dispensada a utilização de variáveis globais, pois não existem chamadas entre funções ou passagens de parâmetros que justifiquem o uso de variáveis deste contexto. Sobre as variáveis, podemos notar também que a variável buf possui capacidade para armazenar até 256 caracteres, tamanho este, incompatível com variável cmd que, posteriormente receberá os dados. Esta falha de projeto pode gerar um stack buffer overflow e causar o encerramento inesperado do programa.

3 2.2. Validação de entrada de dados Uma das mais comuns fraquezas de segurança em aplicativos é a falta de validação correta dos dados de entrada recebidos do cliente. Esta fraqueza leva a quase todas as principais vulnerabilidades em aplicações, tais como Interpreter Injection, ataques de locale/unicode,, ataques de sistema de arquivos e buffer overflow. [4] Algo que exemplifica de maneira clara o quanto pode ser perigoso não validar os dados de entrada é a imagem seguinte: Figura 2. Exemplo de falha na validação na entrada de dados Como podemos verificar na figura, a passagem da string Content *.c;id;head -n1 subverteu a natureza original do programa fazendo com que este executasse comandos além dos programados. Isto foi possível por dois motivos, primeiro a falta de validação dos dados recebidos e, em segundo pela natureza da função system() presente no programa. Esta vulnerabilidade será abordada posteriormente. Fica bastante clara a importância da validação dos dados recebidos do cliente antes de se dar seqüência no programa, como falado anteriormente, a falta de validação leva a quase todas as vulnerabilidades que um sistema pode apresentar Como corrigir Uma expressão regular provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres. Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que ou serve um gerador de analisador sintático ou examina o texto e identifica partes que casam com a especificação dada. No exemplo que estamos trabalhando poder-se-ia tratar os dados recebidos com a expressão regular "^[a-za-z\\s]+$, que permite somente o uso de letras. Figura 3. Correção de falha na validação na entrada de dados 2.3. Funções vulneráveis Considera-se se uma função vulnerável quando seu uso possibilita facilmente o aparecimento de erros de programação que originam ataques ao sistema, violando assim

4 a sua especificação. Por exemplo, deixar o sistema inoperante ou a possibilidade de alterar informação confidencial Função gets() Gets() é uma função da biblioteca padrão C,, declarada no arquivo cabeçalho stdio.h, que lê uma linha da entrada padrão e as armazena em um buffer (variável) Vulnerabilidade O programador deve saber um limite máximo para o número de caracteres que a função gets() lerá para que possa garantir que o buffer é grande o suficiente. Isto é impossível sem o conhecimento dos dados. Esta falha de projeto leva a erros e abre uma porta para explorar a segurança do computador através de um buffer overflow. Figura 4. Buffer overflow Como corrigir A alternativa mais simples para desviar desta vulnerabilidade é o uso da função fgets() presente na biblioteca padrão stdio.h. A função fgets() lê um número limitado de caracteres de uma determinada fonte e insere em uma matriz de caracteres de tamanho determinado, evitando assim que caracteres além capacidade sejam inseridos. É preciso ter em mente que o fgets() difere da função gets() não só na proteção buffer overflow,, mas também no que preserva a terminação newline,, enquanto gets() descarta. [3] Figura 5. Vulnerabilidade buffer overflow corrigida Função sprintf() A função sprintf() pode causar um stack buffer overflow uma vez que, esta função não controla a capacidade máxima que uma variável pode suportar. No código fonte podemos perceber que o tamanho máximo do vetor cmd é de 128 posições, se a concatenação dos dados do vetor format com a variável buf execeder o o tamanho do vetor cmd ocasionará um erro no programa.

5 Como corrigir Uma forma de prevenir que dados além da capacidade seja inserida em uma variável é utilização da diretiva %xxs, onde xx é um número. Com o uso desta diretiva somente o valor definido em xx será transferido para outro vetor. Outra solução seria declarar a variável cmd como um ponteiro e alocar o tamanho de memória dinamicamente através da função malloc(); Função write() A função write() é uma system call. System calls, são um conjunto especial de funções disponíveis em várias linguagens de programação. Elas são utilizadas pelos programas para se comunicar diretamente com um sistema operacional. Geralmente, as chamadas do sistema são mais lentas do que as chamadas de função normais. A razão é porque quando você chama uma system call, o controle é abandonado para o sistema operacional para executar a system call. Além disso, dependendo da natureza da chamada, o programa pode ser bloqueado pelo sistema operacional até que esta termine, tornando assim o tempo de execução do seu programa até maior. Não existe necessariamente uma vulnerabilidade no uso de uma system call, mas como a sua execução pode ser mais lenta do que o uso de uma função normal sugeri-se o uso da função puts() Função system() Na biblioteca padrão C, a função system() é usada para executar sub processos e comandos. Ela difere da família de funções exec/spawn que, em vez de passar argumentos para um objeto executado, uma única seqüência é passada para o shell do sistema, normalmente o shell POSIX, /bin/sh - c. O fato da função system() receber parâmetros juntamente com o comando é o que gera esta vulnerabilidade, pois parâmetros poderiam ser subvertidos e/ou outros parâmetros e comando adicionados. Exemplo: system( grep abc phone.list); system( grep Content *;id;head n1 phone.list); O segundo exemplo demonstra como poderíamos subverter a função system() com a inserção de outros comandos simplesmente adicionado um ; (ponto e virgula).

6 Figura 6. Vulnerabilidade da função system() Como Corrigir A solução para esta vulnerabilidade está no uso da função execl(). Na função execl() os parâmetros não são passados em conjunto com o comando, mas sim, um a um, evitando assim, que outros parâmetros ou comandos sejam inseridos. Vejamos como seria o exemplo anterior com o a função execl(): execlp("/bin/grep","grep",cmd,"./phone.list",null);; O primeiro parâmetro da função execl() é path do commando que será executado, o segundo o próprio commando e os demais são os parâmetros enviados para o comando. Figura 6. Vulnerabilidade da função system() corrigida Função syslog() A função syslog() faz parte de um conjunto de funções com finalidade de logar, gravar informações no sistema de logs do sistema. A função syslog() está vulnerável a um ataque conhecido como format string. Format string pode ser utilizada para travar o programa ou para executar código nocivo. O problema decorre do uso de entrada do usuário sem controle como o parâmetro de seqüência de formato em certas funções C que executam formatação, tais como printf().. Um usuário mal-intencionado pode usar o %s e %x,, entre outros, para imprimir dados na memória. [5] Figura 6. Vulnerabilidade format string

7 Como Corrigir Para corrigir esta vulnerabilidade basta que o programado utilize a função syslog() de maneira adequada, informado qual o tipo de dados será tratado. No exemplo que estamos utilizando o tipo de dado é string Código fonte modificado #include <string.h> #include <stdlib.h> #include <stdio.h> #include <syslog.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <regex.h> int valida(char *arg) { regex_t reg; char *padrao = "^[a-za-z\\s]+$"; Figura 7. Vulnerabilidade format string corrigida regcomp(&reg, padrao, REG_EXTENDED REG_NOSUB); if ((regexec(&reg, arg, 0, (regmatch_t *)NULL, 0))!= 0) { return 1; else { return 0; int main(int argc, char **argv) { char *cmd=null; char buff[256]; fgets(buff,256,stdin); if (buff[strlen(buff)-1] == '\n') { buff[strlen(buff)-1]='\0'; if (valida(buff)==0) { pid_t pid; int pipes[2],stats; cmd=malloc(sizeof(buff));

8 strcpy(cmd,buff); openlog(argv[0],log_ndelay,log_local0); syslog(36,"%s",cmd); closelog(); puts("content-type: Text/plain\n"); pipe(pipes); if ((pid = fork()) == -1) { perror("demo"); exit(1); else { if (pid == 0) { dup2(pipes[0],0); close(pipes[1]); execl("/bin/grep","grep",cmd,"./phone.list",null); waitpid(pid,&stats,0); else { puts("informacao enviada incompativel com o sistema\n"); return 0; Referências [1]http://cartilha.cert.br/conceitos/sec5.html - consultado em 14 de setembro de [2]http://pt.wikipedia.org/wiki/Vari%C3%A1vel_global consultado em 14 de setembro de [3]http://en.wikipedia.org/wiki/Gets - consultado em 14 de setembro de [4]https://www.owasp.org/index.php/Data_Validation - consultado em 14 de setembro de [5]http://en.wikipedia.org/wiki/Uncontrolled_format_string - consultado em 22 de setembro de 2011.

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento 1/5 Exercício 1 Um sistema de segurança militar, usado num submarino nuclear, controla o acesso de usuários a três subsistemas (armamento, navegação e comunicações) através da digitação do login do usuário

Leia mais

Comunicação entre pai e filho

Comunicação entre pai e filho Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que o resultado de um processo possa ser recebido pelo outro? Exemplos: Processo

Leia mais

Curso de Linguagem C

Curso de Linguagem C Curso de Linguagem C 1 Aula 1 - INTRODUÇÃO...4 AULA 2 - Primeiros Passos...5 O C é "Case Sensitive"...5 Dois Primeiros Programas...6 Introdução às Funções...7 Introdução Básica às Entradas e Saídas...

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

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.

Leia mais

Criação de Processos. O modelo UNIX

Criação de Processos. O modelo UNIX Criação de Processos O processo progenitor (parent/pai) cria processos progénitos (child/filhos), os quais, por sua vez, criam outros processos, formando uma árvore de processos. O progénito criado pela

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais

Sistemas Operacionais INF 09344 Prof. José Gonçalves

Sistemas Operacionais INF 09344 Prof. José Gonçalves Sistemas Operacionais INF 09344 Prof. José Gonçalves 1 o Trabalho de Programação Período: 2014/1 Data de Entrega: 2/6/2014 Parte I. Usando Fork e Wait Você deve criar um programa C partei.c. Durante a

Leia mais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes: Processos O UNIX é um sistema operacional multitarefa (suporta multiprogramação). Isso significa que ele é capaz de gerenciar a execução simultânea de vários programas. O termo processo é usado para caracterizar

Leia mais

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Variáveis na linguagem C: tipo char O tipo char representa um caractere ASCII (ocupa só 1 byte) int main(int argc, char **

Leia mais

http://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html

http://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html http://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html FORK() SYSTEM CALL * UTILIZADO PARA CRIAR SUBPROCESSO * PROCESSO QUE CRIA É PAI * PROCESSO CRIADO É O FILHO * APÓS A CRIAÇÃO AMBOS OS PROCESSO

Leia mais

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1 14. Arquivos W. Celes e J. L. Rangel Neste capítulo, apresentaremos alguns conceitos básicos sobre arquivos, e alguns detalhes da forma de tratamento de arquivos em disco na linguagem C. A finalidade desta

Leia mais

Firewalls de Aplicação WEB, Idiomas e Expressões Regulares. Condições de Bypass

Firewalls de Aplicação WEB, Idiomas e Expressões Regulares. Condições de Bypass Firewalls de Aplicação WEB, Idiomas e Expressões Regulares Condições de Bypass Glaudson Ocampos 18 de Novembro de 2009 SUMÁRIO 1 - INTRODUÇÃO... 03 2 - DESCRIÇÃO DO PROBLEMA...

Leia mais

6. Comunicação entre processos - Pipes

6. Comunicação entre processos - Pipes 6. Comunicação entre s - Pipes 6.1 O que são pipes Os pipes em UNIX constituem um canal de comunicação unidirecional entre s com um ascendente comum (entre um pai e um seu descendente). Uma vez estabelecido

Leia mais

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais SVCs para Controle de Processos no Unix (cont.) Primitivas exec..() As primitivas exec constituem, na verdade, uma família de funções que permitem a um processo executar o código de outro programa. Não

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

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

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1 Curso de C Procedimentos e Funções 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1 Funções Roteiro: Funções Declaração e chamada Funções importantes Exemplos de funções Variáveis Globais,

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação

Leia mais

Funções e protótipos (declaração) de funções

Funções e protótipos (declaração) de funções Funções e protótipos (declaração) de funções Declaração de função tipo_de_retorno nome_da_função (declaração_de_parâmetros); onde o tipo-de-retorno, o nome-da-função e a declaração-de-parâmetros são os

Leia mais

P5 P3. interrupçãocorrespondente. Sistemas Operacionais 2008/1 Profa. Patricia D. CostaLPRM/DI/UFES 3 Sistemas Operacionais 2008/1

P5 P3. interrupçãocorrespondente. Sistemas Operacionais 2008/1 Profa. Patricia D. CostaLPRM/DI/UFES 3 Sistemas Operacionais 2008/1 Conceitos Processos Básicos (Aula 4) Profa. É Provoca Constitui Mecanismo Patricia informa evento controle, a multiprogramação. Ex: rotina um a base de Interrupção de um (1) sistema de D. CostaLPRM/DI/UFES

Leia mais

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Sistemas Operativos 2015-2016 O que construímos até agora... A abstração de processo 2 A possibilidade

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Manipulação de Arquivos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Tipo

Leia mais

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro Programação Concorrente em Linux O Conceito de Processo no Linux O conceito de processo é fundamental para qualquer sistema operacional

Leia mais

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Operações com Strings Introdução a Ponteiros e Funções Profa Rosana Braga 1 Strings Strings são seqüências de caracteres

Leia mais

Conceitos de Sistemas Operacionais: Chamadas de Sistema. Prof Rafael J. Sandim

Conceitos de Sistemas Operacionais: Chamadas de Sistema. Prof Rafael J. Sandim Conceitos de Sistemas Operacionais: Chamadas de Sistema Prof Rafael J. Sandim Conceitos de Sistema Operacional Interface entre o SO e os Programas de usuário é definida pelo conjunto de instruções estendidas

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou

Leia mais

17 - Funções e Procedimentos em C Programação Modular

17 - Funções e Procedimentos em C Programação Modular 17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17

Leia mais

Aplicações Seguras. Carlos.Ribeiro@tagus.ist.utl.pt

Aplicações Seguras. Carlos.Ribeiro@tagus.ist.utl.pt Aplicações Seguras Carlos.Ribeiro@tagus.ist.utl.pt Problemas de segurança Protocolos de autenticação mal desenhados. E.g. WEP, 802.1x (1º versão), PPTP, MS-CHAPv1. Protocolos de comunicação inseguros.

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

Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II

Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II Fundamentos de Arquivos SCC203 Algoritmos e Estruturas de Dados II Arquivos Informação mantida em memória secundária HD Disquetes Fitas magnéticas CD DVD 2 Discos X Memória Principal Tempo de acesso HD:

Leia mais

Arquivos. Estruturas de Dados II Vanessa Braganholo

Arquivos. Estruturas de Dados II Vanessa Braganholo Arquivos Estruturas de Dados II Vanessa Braganholo Entidades } Aplicações precisam armazenar dados sobre as mais diversas entidades, que podem ser concretas ou abstratas } Funcionário de uma empresa (concreto)

Leia mais

Estrutura de um programa em linguagem C

Estrutura de um programa em linguagem C Estrutura de um programa em linguagem C Estrutura de um programa em linguagem C Exemplo de um programa em linguagem C Directivas de Pré-Processamento #include Declarações Globais Declarações

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

Curso de C: uma breve introdução

Curso de C: uma breve introdução V Semana de Engenharia Elétrica - UFBA Licença de uso e distribuição Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da: Creative Commons License:

Leia mais

Aplicação dos conceitos de programação orientada a objeto em linguagens de alto nível

Aplicação dos conceitos de programação orientada a objeto em linguagens de alto nível 95 Aplicação dos conceitos de programação orientada a objeto em linguagens de alto nível 96 Aplicação dos conceitos de programação orientada a objeto em linguagens de alto nível Nesta etapa estudaremos

Leia mais

Aplicações Seguras. Exemplos de vulnerabilidades comuns. Carlos Ribeiro Algoritmos e Aplicações de Segurança

Aplicações Seguras. Exemplos de vulnerabilidades comuns. Carlos Ribeiro Algoritmos e Aplicações de Segurança Aplicações Seguras Exemplos de vulnerabilidades comuns 1 Exemplos de Vulnerabilidades Protocolos de autenticação mal desenhados. E.g. WEP, 802.1x (1º versão), PPTP, MS- CHAPv1. Protocolos de comunicação

Leia mais

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Belo Horizonte 2010 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4 3.1 Strings

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

Laboratório de Programação - Exercícios 12, 13 e 14

Laboratório de Programação - Exercícios 12, 13 e 14 Laboratório de Programação - Exercícios 12, 13 e 14 If, switch e funções João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação

Leia mais

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++ Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++ Belo Horizonte 2009 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4

Leia mais

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Linguagem e Técnicas de Programação I Operadores, expressões e funções Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Operadores básicos Toda linguagem de programação, existem

Leia mais

Métodos Computacionais. Pilha

Métodos Computacionais. Pilha Métodos Computacionais Pilha Definição de Pilha Pilha é uma estrutura de dados dinâmica onde: Inserção e remoção de elementos no topo da pilha O primeiro elemento que sai é o último que entrou (LIFO) Operações

Leia mais

Sistemas Operacionais. Processos. Edeyson Andrade Gomes. edeyson@uol.com.br

Sistemas Operacionais. Processos. Edeyson Andrade Gomes. edeyson@uol.com.br Sistemas Operacionais Processos Edeyson Andrade Gomes edeyson@uol.com.br Roteiro da Aula Conceitos Estados do Processo Controle de Processo Escalonamento Criação e Término de Processos 2 Definição Processo

Leia mais

Alocação dinâmica de memória

Alocação dinâmica de memória Alocação dinâmica de memória Jander Moreira 1 Primeiras palavras Na solução de problemas por meio algoritmos ou programas, é comum surgir a necessidade de manter todo o conjunto de dados a ser processado

Leia mais

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo

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

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

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

Programa ConsoleRPN. PUC-Rio CIV 2802 - Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira Programa ConsoleRPN Programa criado com o Visual Studio Community 2013 para efetuar operações algébricas entre números, uma calculadora funcionando com console usando RPN PUC-Rio CIV 2802 - Sistemas Gráficos

Leia mais

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

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

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++ UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++ Profª ª Danielle Casillo COMPILADORES Toda linguagem de programação

Leia mais

Primeiro Curso de Programação em C 3 a Edição

Primeiro Curso de Programação em C 3 a Edição Edson Luiz França Senne Primeiro Curso de Programação em C 3 a Edição Visual Books Sumário Prefácio da Terceira Edição 9 Prefácio da Primeira Edição 11 Aula 1 13 Regras de sintaxe de uma linguagem de programação...

Leia mais

Estruturas de entrada e saída

Estruturas de entrada e saída capa Estruturas de entrada e saída - A linguagem C utiliza de algumas funções para tratamento de entrada e saída de dados. - A maioria dessas funções estão presentes na biblioteca . - As funções

Leia mais

Registros. Técnicas de Programação. Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes

Registros. Técnicas de Programação. Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes Registros Técnicas de Programação Baseado no material do Prof. Rafael Vargas Mesquita Conceito de Registro (Struct) Vetores e Matrizes

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Cadeias de caracteres (strings) Caracteres Definição e manipulação de strings Vetor de strings Parâmetros

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

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

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

time_t shm_ctime; /* hora da última alteração de atributod da MP através de shmctl + IPC_SET */

time_t shm_ctime; /* hora da última alteração de atributod da MP através de shmctl + IPC_SET */ Página 1 de 6 Memória Partilhada Pedaço de memória virtual que dois ou mais processos podem incluir no seu espaço de endereçamento, permitindo a comunicação entre eles. È o mecanismo mais rápido de comunicação

Leia mais

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO Curso: Engenharia de Computação e Ciência da Computação Data: 10/09/2013 Disciplina: Programação Estruturada Valor: 3,0 pontos Professor: Henrique Monteiro Cristovão Nota: Aluno: Prova resolvida 4ª Prova

Leia mais

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail.

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail. Top Ten OWASP Fausto Levandoski 1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil farole@gmail.com Abstract.

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

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

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas Luiz Henrique Santos

Leia mais

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha conhecimento avançado de C. Exemplo em C: Faça um programa que

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS CST em Análise e Desenvolvimento de Sistemas 3ª Série Programação Estruturada II A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido

Leia mais

1ª versão. #include #include #include #define maxdiscos 1000

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000 #include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];

Leia mais

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I Arquivos Pedro O.S. Vaz de Melo Problema 1 Considere que um arquivo de dados contém os valores das dimensões (tam. max.: 100) e dos elementos de duas matrizes de números

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

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite Laboratório de Redes. Remote Procedure Call - RPC Pedroso 9 de março de 2006 1 Introdução 2 Conceitos básicos OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite que sejam criadas

Leia mais

Curso de C para Engenharias

Curso de C para Engenharias Aula 4 Cristiano Dalbem Dennis Balreira Gabriel Moreira Miller Biazus Raphael Lupchinski Universidade Federal do Rio Grande do Sul Instituto de Informática Grupo PET Computação Sintaxe Funções Exemplos

Leia mais

Exemplos. char c; int i=67;... c= A ; c=c+1; if (c== B )... c=i; i=c; i++; if (i>= C )...

Exemplos. char c; int i=67;... c= A ; c=c+1; if (c== B )... c=i; i=c; i++; if (i>= C )... Caracteres Conceitos Tipo de dados simples (char), cujo valor é a codificação numérica de um caracter; Caracteres literais são representados por aspas simples, como em A e a ; Variáveis do tipo char podem

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: Introdução à Programação Carga horária total: 60 Carga horária teórica: 0 Carga horária prática: 60 Código da Disciplina: CCMP0041 Período de oferta: 2010.2 Turma: CA

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

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1620 P1-10/04/02 Questão 1 Nome: INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,

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

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Arquivos Pedro O.S. Vaz de Melo Problema 1 Considere que um arquivo de dados contém os valores das dimensões (tam. max.: 100) e dos elementos de duas matrizes

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

Aspectos de Segurança em Programação com Java

Aspectos de Segurança em Programação com Java Aspectos de Segurança em Programação com Java Marcos Alexandre de Melo Medeiros Paulo Sérgio Motta Pires Departamento de Engenharia de Computação e Automação DCA UFRN marcosam@info.ufrn.br, pmotta@dca.ufrn.br

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

Conceitos Básicos da Linguagem C. Prof. Leonardo Barreto Campos 1

Conceitos Básicos da Linguagem C. Prof. Leonardo Barreto Campos 1 Conceitos Básicos da Linguagem C Prof. Leonardo Barreto Campos 1 Sumário As Origens da linguagem C, Características da linguagem C, Interpretação X Compilação, Estrutura básica de um programa em C, Tipos

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas FIFOs Programação de Sistemas FIFOs : 1/13 Introdução APUE 15.5 Os tubos só podem ser usados por processos que tenham um antecessor comum. Para resolver a limitação dos tubos, o

Leia mais

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros Algoritmo e Programação Aula 06 - Funções Colegiado de Engenharia da Computação

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Trabalho 3: Agenda de Tarefas

Trabalho 3: Agenda de Tarefas INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma

Leia mais

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Expressão é uma frase de um programa que ao ser avaliada retorna um valor Tipos Literais Agregados Chamadas de Função

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

5 Apresentando a linguagem C

5 Apresentando a linguagem C 5 Apresentando a linguagem C O criador da linguagem de programação C foi Dennis Ritchie que, na década de 70, programou-a por meio de um computador DEC PDP-11 rodando sistema operacional Unix. Entretanto,

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

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

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