Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas

Documentos relacionados
FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

Paradigmas de Linguagem de. Programação Profª. Roberta B Tôrres de programação referem-se a:

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

TÉCNICO DE INFORMÁTICA - SISTEMAS

Paradigmas de Linguagens

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

Linguagem de Programação III

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

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Fundamentos de Programação

Linguagem de Programação e Compiladores

Algoritmos II prof. Daniel Oliveira

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

ALOCAÇÃO DINÂMICA DE MEMÓRIA

LINGUAGEM C: PONTEIROS

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Capítulo 6: Linguagens de Programação

Laboratório de Programação II

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

A R R A Y S E E X C E P T I O N S P R O F. M E. H É L I O E S P E R I D I Ã O

ALGORITMOS E ESTRUTURA DE DADOS

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Linguagens de Programação Classificação

Cap. 2 Expressões na linguagem C

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

- Mapa de memória de um processo - Ponteiros

Fundamentos de Programação 1

Compiladores. Introdução

3. Linguagem de Programação C

Conceitos de Linguagens de Programação

Linguagens de Programação

Linguagem C: Introdução

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Tópicos de hoje: Cap. 2 Expressões na linguagem C. Bits, Bytes e Palavras. Variáveis e Constantes. Números inteiros num Byte

CAP. VI ANÁLISE SEMÂNTICA

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

Conceitos Básicos de Programação

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Linguagem de Programação III

3. Linguagem de Programação C

Prof. Adriano Maranhão COMPILADORES

Linguagem de Maquina II. Visão Geral

Introdução à linguagem C

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Capítulo 1. Aspectos Preliminares

Classes e Objetos. Sintaxe de classe em Java

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Estrutura de Dados Conceitos Iniciais

Conceito de Linguagens de Programação - 1

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

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

3. Linguagem de Programação C

CURSO DE POO COM JAVA

Working 03 : Conceitos Básicos I

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Arrays. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Capítulo 5. Nomes, Vinculações e Escopos

Array em Java. Figura 1 - Exemplo de um array de inteiros

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Conceitos de Linguagem de Programação - 2

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

Linguagens de Programação Aula 3

Nomes, vinculações e escopos

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1

Linguagens de Programação. Tipos. Carlos Bazilio

Linguagem de Programação III

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1

MC-102 Aula 21 Registros

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Linguagem C: Ponteiros. Prof. Tiago Alves de Oliveira

V.2 Especificação Sintática de Linguagens de Programação

Algoritmos e Programação

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Linguagens de Programação

Introdução à Computação MAC0110

FACULDADE LEÃO SAMPAIO

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

Capítulo 7. Expressões e Sentenças de Atribuição

Slides trabalhados durante a quinta aula

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Instruções, dados e expressões

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Ambientação com a Sintaxe de Java: parte 1

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

SSC304 Introdução à Programação Para Engenharias. Ponteiros. GE4 Bio

Transcrição:

Introdução à Ciência da Computação Prof. Dr. Rogério Vargas http://rogerio.in

O que é dado? - Defino dado como uma sequência de símbolos quantificados ou quantificáveis. - Letras são símbolos quantificados. - Podemos por si só constituir uma base numérica. - Também são dados: fotos, figuras, sons gravados e animação. - É muito importante notar-se que, mesmo se incompreensível para o leitor, qualquer texto constitui um dado ou uma sequência de dados.

O que é dado na computação? - Com essa definição, um dado é necessariamente uma entidade matemática. Isto significa que os dados podem ser totalmente descritos através de representações formais, estruturais. Sendo ainda quantificados ou quantificáveis, eles podem obviamente ser armazenados em um computador e processados por ele. - Dentro de um computador, trechos de um texto podem ser ligados virtualmente a outros trechos, por meio de "ponteiros". Ponteiros podem fazer a ligação de um ponto de um texto a uma representação quantificada de uma figura, de um som, etc.. - O processamento de dados em um computador limita-se exclusivamente a manipulações estruturais dos mesmos, e é feito por meio de programas. Estes são sempre funções matemáticas, e portanto também são "dados".

O que é informação? - Informação é uma abstração informal (isto é, não pode ser formalizada através de uma teoria lógica ou matemática), que está na mente de alguém, representando algo significativo para essa pessoa. Note-se que isto não é uma definição, é uma caracterização, porque "algo", "significativo" e "alguém" não estão bem definidos; assumo aqui um entendimento intuitivo (ingênuo) desses termos. - Por exemplo, a frase "O Rio Grande do Sul é um estado fascinante" é um exemplo de informação desde que seja lida ou ouvida por alguém, desde que Rio Grande do Sul" signifique para essa pessoa um estado do Brasil e "fascinante" tenha a qualidade usual e intuitiva associada com essa palavra.

Dado x Informação - Uma distinção fundamental entre dado e informação é que o primeiro é puramente sintático e a segunda contém necessariamente semântica (implícita na palavra "significado" usada em sua caracterização). É interessante notar que é impossível introduzir e processar semântica em um computador, porque a máquina mesma é puramente sintática (assim como a totalidade da matemática). Análise Sintática é o processo de analisar uma sequência de entrada (lida de um arquivo de computador ou do teclado, por exemplo) para determinar sua estrutura gramatical segundo uma determinada gramática formal.

Em ciência da computação tipos de variáveis ou dados é uma combinação de valores e de operações que uma variável pode executar, o que pode variar conforme o sistema operacional e a linguagem de computador.. São utilizados para indicar ao compilador ou interpretador as conversões necessárias para obter os valores em memória durante a construção do programa. Por outro lado, ajudam também o programador a detectar eventuais erros (sintáticos).

Dependendo da linguagem de programação,, o tipo de um dado é verificado diferentemente, de acordo com a análise léxica, sintática e semântica do compilador ou interpretador da linguagem. Os tipos têm geralmente associações com valores na memória ou com objetos (para uma linguagem orientada a objeto) ou variáveis. Análise léxica é o processo de analisar a entrada de linhas de caracteres (tal como o código-fonte de um programa de computador) e produzir uma sequência de símbolos chamado "símbolos léxicos" (lexical tokens), ou somente "símbolos" (tokens), que podem ser manipulados mais facilmente por um parser (leitor de saída).

Estáticos ou Dinâmicos A verificação do tipo de um dado é feita de forma estática em tempo de compilação ou de forma dinâmica em tempo de execução.. Em C, C++, Java e Haskell os tipos são estáticos, em Scheme, Lisp, Smalltalk, Perl, PHP, Visual Basic, Ruby e Python são dinâmicos. Em C uma definição estática do tipo de uma variáveis ficaria assim: printf("o tipo char ocupa %d bytes\n", sizeof(char));

Estáticos ou Dinâmicos Em Linguagem Python a definição dinâmica do tipo de dado é feita em tempo de execução, por exemplo: Variável de tipo "inteiro": >>> a = 123 >>> type(a) <type 'int'> E logo a mudança de estado para tipo string: >>> a = 'teste' >>> type(a) <type 'str'> >>>

Forte e Fraco Linguagens implementadas com tipos de dados fortes, tais como Java e Python, exigem que o tipo de dado de um valor seja do mesmo tipo da variável ao qual este valor será atribuído.

Forte e Fraco (Sintaxe genérica) 1. Declarar Variáveis 2. TEXTO nome 3. INTEIRO idade 4. 5. Atribuições 6. nome = "Fulano" 1. idade = "13" Ocorrerá um erro ao compilar a linha 7, pois o valor "13" precisa ser convertido para o tipo de dado INTEIRO.

Forte e Fraco Em linguagens com tipos de dados fracos, tais como PHP e VBScript,, a conversão não se faz necessária, sendo realizada implicitamente pelo compilador ou interpretador.

Primitivo e Composto Um tipo primitivo (também conhecido por nativo ou básico) é fornecido por uma linguagem de programação como um bloco de construção básico. Dependendo da implementação da linguagem, os tipos primitivos podem ou não possuir correspondência direta com objetos na memória. Um tipo composto pode ser construído em uma linguagem de programação a partir de tipos primitivos e de outros tipos compostos, em um processo chamado composição. Em C, cadeias de caracteres são tipos compostos, enquanto em dialetos modernos de Basic e em JavaScript esse tipo é nativo da linguagem.

Primitivo e Composto Tipos primitivos típicos incluem caracter, inteiro (representa um sub-conjunto dos números inteiros,, com largura dependente do sistema; pode possuir sinal ou não), ponto flutuante (representa o conjunto dos números reais), booleano (lógica booleana, verdadeiro ou falso) e algum tipo de referência (como ponteiro ou handles). Tipos primitivos mais sofisticados incluem tuplas, listas ligadas, números complexos, números racionais e tabela hash,, presente sobretudo em linguagens funcionais.

Primitivo e Composto Espera-se que operações envolvendo tipos primitivos sejam as construções mais rápidas da linguagem. Por exemplo, a adição de inteiros pode ser feita com somente uma instrução de máquina, e mesmo algumas CPUs oferecem instruções específicas para processar sequências de caracteres com uma única instrução. A maioria das linguagens não permite que o comportamento de um tipo nativo seja modificado por programas. como exceção, Smalltalk permite que tipos nativos sejam estendidos, adicionando-se operações e também redefinindo operações nativas.

Primitivo e Composto Uma estrutura em C e C++ é um tipo composto de um conjunto determinado de campos e membros. O tamanho total da estrutura para o tipo composto corresponde a soma dos requerimentos de cada campo da estrutura, além de um possível espaço para alinhamento de bits.. Por exemplo: struct Conta { int numero; char *nome; char *sobrenome; float balanco; };

Primitivo e Composto struct Conta define um tipo composto chamado Conta. A partir de uma variável minhaconta do tipo acima, pode-se acessar o número da conta através de minhaconta.numero. Conta minhaconta;

Strings de Caracteres Em programação e em linguagens formais, uma cadeia de caracteres (também conhecida como string) é uma sequência ordenada de caracteres (símbolos) escolhidos a partir de um conjunto pré-determinado. Em programação, cada símbolo armazenado na memória é representado por um valor numérico. Uma variável declarada com tipo de dado cadeia geralmente armazena um número pré-determinado de caracteres.

Strings de Caracteres Teoria Formal Seja Σ um alfabeto,, um conjunto finito e não vazio. Os elementos de Σ são chamados caracteres. Uma cadeia sobre Σ é qualquer sequência finita de caracteres de Σ. Por exemplo, se Σ = {0, 1}, então 0101 é uma cadeia sobre Σ. O tamanho da cadeia é a quantidade de caracteres, e pode ser qualquer valor inteiro não negativo. A cadeia vazia é uma cadeia única sobre Σ de tamanho 0, sendo denotada por ε ou λ.

Strings de Caracteres Tipo de Dados. Um tipo de dado cadeia de caracteres (referido em programação geralmente como string) é uma modelagem de uma cadeia formal de caracteres. São bastante usados em programação, sendo implementados em quase todas as linguagens de programação. Em algumas linguagens esse tipo é definido nativamente, em outras é um tipo composto, derivado.

Arrays Em programação de computadores, um array, também conhecido como vetor ou lista (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), é uma das mais simples estruturas de dados. Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais são acessados por sua posição no array. A posição é dada por um índice, também chamado de subscrição.

Arrays O índice geralmente utiliza uma sequência de números inteiros. Alguns arrays são multi-dimensionais, significando que eles são indexados por um número fixo de números inteiros, por exemplo, por um sequência (ou sucessão) finita de quatro números inteiros. Geralmente, arrays uni- e bi-dimensionais são os mais comuns.

Arrays Os arrays podem-se considerar como as estruturas de dado mais simples que é possível imaginar. Têm a vantagem de que os seus elementos são acessíveis de forma rápida, mas têm uma notável limitação: são de tamanho fixo, não podem ser incrementados ou diminuídos sem implicar complexos processos de cópia. Estas estruturas de dado são ajeitadas nas situações em que o acesso aos dados seja realizado de forma aleatória e imprevisível.

Arrays Forma de Acesso. A forma de acesso aos elementos de um array é direta, ao contrário das listas. Isto quer dizer que o elemento desejado obtêm-se a partir do seu índice e não é preciso procurá-lo elemento por elemento. No caso das listas, por exemplo, para alcançar o terceiro elemento ter-se-á de acessar primeiro aos dois anteriores (ou bem de guardar um ponteiro que permita acessar de maneira rápida a esse elemento em particular).

Arrays declarando e alocando um array. Em Java, os arrays são objetos que necessitam ser inicializados. Isto geralmente é feito usando o operador new. Para um array, o programador especifica o tipo dos elementos do array e o número de elementos como parte da operação new. Ex.: int[] A = new int[5]. String[] S = new String[5]; double[] d = new double[10]; int[][] d2 = new int[10][10]; // matriz 10x10, array de arrays double[] a; a = new double[100];

Arrays declarando e alocando um array. Em C, os arrays são declarados, definindo primeiro o seu tipo, em seguida do seu nome e por fim a sua dimensão. Ex.: int array[10];. int quadro[10]; double array[100]; int matrix[20][10]; /* matriz 20x10 */

Arrays declarando e alocando um array. Inicializando arrays no momento da criação int[] A = {5, 7, 9, 2, 0}; int[][] d2 = { {1,2,3}, {4,5,6} }; long[] a; a = new long[] {10,20,30,40};

Arrays declarando e alocando um array. Automaticamente o Java inicializa com um valor default cada elemento do array: Null para tipo Objetos; 0 (zero) para short, byte, int, long, float e double; Unicode 0 para char; False para boolean; Em C, os arrays quando inicializados no momento da declaração, são definidos do seguinte modo: int array[5] = {3,4,5,6,3}; double quadro[5] = {3.0,4.0,5.0,6.03,3.0}; int matrix[4][4] = {{3,4,3,4},{5,6,2,3}};

Referências Slides extraídos da internet - V. Setzer, Dado, Informação, Conhecimento e Competência, Depto. de Ciência da Computação, Universidade de São Paulo. Disponível em: http://www.ime.usp.br/~vwsetzer/dado-info.html. - E. Silvestre, Modelos de Linguagem de Programação I Aula 06. Disponível em: http://www.eduardosilvestri.com.br

Dúvidas http://rogerio.in prof. Dr. Rogério Vargas