3. Linguagem de Programação C

Documentos relacionados
Conteúdo programático

Fundamentos de Sistemas Operacionais

Linguagem de Programação

Introdução à Informática

Fundamentos de Programação. Diagrama de blocos

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Informática I. Aula Aula 19-20/06/06 1

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Introdução à Programação de Computadores Parte I

Introdução. Nível da Linguagem de Montagem. Linguagem de Montagem (2) Linguagem de Montagem (1) Linguagem de Montagem

Linguagem de Programação I

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

OBJETIVO GERAL DA DISCIPLINA

Banco de Dados I. Prof. Edson Thizon

Introdução ao Teste de Software

Aula 11: Desvios e Laços

Nivel de Linguagem de Montagem (Assembly)

PROGRAMAÇÃO DE COMPUTADORES

Diagrama de Componentes e Implantação

Inteligência Artificial

Análise de Requisitos

Arquitetura e Organização de Computadores. Histórico. Gerações

Sobre o Visual C

Algoritmos APRENDENDO A PROGRAMAR COM C#

XML - Extensible Markup Language

II Semana de Ciência e Tecnologia do IFMG campus Bambuí II Jornada Científica 19 a 23 de Outubro de 2009

Programação Orientada a Objetos SANTOS, Rafael

PLANEJAMENTO E AUTOMAÇÃO DE SOFTWARE PARA UTILIZAÇÃO NA DISCIPLINA DE CÁLCULO DIFERENCIAL E INTEGRAL

Programação de Computadores I. Linguagem C Função

Flávia Rodrigues. Silves, 26 de Abril de 2010

Unidade 1: O Computador

Engenharia de Software II

Métricas de Software

Algoritmos e Programação II

Aula 03. Processadores. Prof. Ricardo Palma

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

Manual Mobuss Construção - Móvel

ENGENHARIA DE SOFTWARE

BANCO DE DADOS PARA GERENCIAMENTO E DESENVOLVIMENTO DE SOFTWARE

Introdução à orientação a objetos

Simulado de Linguagem de Programação Java

Manual Remessa Bancária

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

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

Montadores e Compiladores

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

DOCUMENTO DE REQUISITO DE SOFTWARE

Projeto de Desenvolvimento de Software

Introdução a Programação Aula 01

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Depois do estudo deste capítulo, o estudante deve ser capaz de:

Introdução à Programação

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras

T.I. para o DealerSuite: Servidores Versão: 1.1

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I

Prof. Daniela Barreiro Claro

Fundamentos de Teste de Software

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Carlos de Salles Soares Neto Segundas e Quartas, 17h40 às 19h10

Programação de Computadores III

Linguagem de Programação I

Modelagem de Sistemas Web. Metodologias para o desenvolvimento de sistemas web

Conceitos básicos sobre computadores

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

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

2 Segmentação de imagens e Componentes conexas

Leiaute de arquivos XML para Carta-Circular 3254

Introdução a C Tipos de Dados Variáveis Operadores

Série Rações Semanais Xpath e XSLT Rogério Araújo

TOP 20 ROTINAS QUE VOCÊ PODE AUTOMATIZAR HOJE!

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Manual do Desenvolvedor Geração de Tokens

M =C J, fórmula do montante

Arquitecturas de Software Enunciado de Projecto

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

O Processo de Programação

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Redes de Computadores

FACULDADE MULTIVIX CURSO DE ENGENHARIA DE PRODUÇÃO 2º PERÍODO MARIANA DE OLIVEIRA BERGAMIN MONIQUE MATIELLO GOMES THANIELE ALMEIDA ALVES

Programação WEB. Prof. André Gustavo Duarte de Almeida www3.ifrn.edu.br/~andrealmeida. Aula II jquery UI

Os centros de custo classificam-se em produtivos e administrativos e, eventualmente, em auxiliares.

Sistemas Operacionais

Linguagens de programação

BANCO DE DADOS. Vinícius Pádua

INTRODUÇÃO À INFORMÁTICA: TERMINOLOGIA BÁSICA RAÍ ALVES TAMARINDO

Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Introdução. Modelo de um Sistema de Comunicação

VII SENABOM TEMA: O REGISTRO ELETRÔNICO DE EVENTOS (RE) Apresentado por: Ten Cel BM Flávio Rocha - CBMERJ

O que é um banco de dados? Banco de Dados. Banco de dados

Transcrição:

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. Linguagem de programação C 3.1. Conceitos básicos 3.1.1. Introdução às Linguagens de Programação 3.1.2. Introdução à Linguagem C 3.1.2.1. Criação de programas em C 3.1.2.2. Erros de programação em C 2

3.1.1. Introdução às Linguagens de Programação No início, os programas de computador eram escritos em linguagem de máquina Instruções primitivas que podiam ser executadas diretamente na máquina» Ex: 001 10110 Estrutura da linguagem refletia a estrutura da máquina» Não reflete as necessidades do programador» Difícil de programar 3

3.1.1. Introdução às Linguagens de Programação Maior parte da computação envolvia o cálculo de fórmulas Fórmulas eram traduzidas para a linguagem de máquina Por que não escrever programas parecidos com as fórmulas que se deseja computar? 4

3.1.1. Introdução às Linguagens de Programação FORTRAN FORMULA TRANSLATION Criado em 1950 por um grupo de programadores da IBM Primeira linguagem de alto nível 5

3.1.1. Introdução às Linguagens de Programação Linguagem de Baixo Nível As Instruções refletem diretamente o código de máquina» Dependente da máquina utilizada Exemplos: Assembler ou Assembly Linguagens de Alto Nível Instruções genéricas que não precisam refletir diretamente o código de máquina» Independem da máquina utilizada 6

3.1.1. Introdução às Linguagens de Programação Linguagens de Alto Nível podem ser de vários tipos: Linguagens Não-Estruturadas» Não usam chamadas de funções e procedimentos» Exemplos: Cobol, Basic Linguagens Procedurais» Os programas determinam uma seqüência de chamadas de procedimentos» Exemplos: C, Pascal Linguagens Funcionais» Utilizam expressões formadas por funções que procuram combinar padrões básicos» Exemplos: Lisp, Prolog 7

3.1.1. Introdução às Linguagens de Programação Linguagens de Alto Nível pode ser de vários tipos: Linguagens Orientadas a Objeto» Utilizam procedimentos encapsulados (objetos) para representar as estruturas de dados» Exemplos: Java, C++ Linguagens Visuais» Utilizam ferramentas visuais de suporte para a programação» Exemplos: Visual Basic, Delphi Linguagens Específicas» Linguagens para Bancos de Dados Exemplos: Clipper, SQL» Linguagens para Scripts Exemplos: HTML, PostScript, PDF (Portable Data Format) 8

3.1.2. Introdução à Linguagem C A origem da linguagem C Linguagem BCPL (Basic Combined Programming Language) Desenvolvida em 1967 BCPL foi refinada para uma linguagem chamada B Em 1972, Dennis Richie aperfeiçoou a linguagem B, para formar a linguagem C tradicional» No início, C ficou conhecida como a linguagem de desenvolvimento do sistema operacional Unix A rápida expansão de C para vários computadores levou a um grande número de variações na linguagem original» Na década de 1980 foi criada a padronização ANSI C Não ambígua Independente de máquina 9

3.1.2. Introdução à Linguagem C Principais vantagens da linguagem C Pode ser utilizada (adequada) para escrever programas que funcionam eficientemente» Vários softwares básicos, sistemas de tempo real e programas de computação gráfica são escritos em C e seus derivados Velocidade de execução é crítica nestas áreas Portabilidade» Mesmo programa C deve poder ser executado em máquinas e sistemas operacionais diferentes Os próprios programadores C demandam consistência nas suas diferentes implementações 10

3.1.2. Introdução à Linguagem C Principais vantagens da linguagem C Concisão» Conjunto de operadores de C é muito poderoso Várias operações podem ser combinadas em um único comando» Gera códigos menores e mais elegantes» Aumenta a produtividade dos programadores Mais programas em menos tempo Expansão de uso» Surgimento de novas técnicas» Crescimento das demandas por programas mais sofisticados 11

3.1.2. Introdução à Linguagem C Principais vantagens da linguagem C Modularidade» C incentiva a decomposição de um programa em módulos» Diferentes partes do código podem ser escritos por programadores diferentes» Torna a manutenção do código mais simples» Facilita re-uso Códigos reutilizados correspondem a cerca de 93.86% dos novos programas 12

3.1.2. Introdução à Linguagem C No entanto, C tem suas deficiências Sua sintaxe não é clara no início Sua flexibilidade pode levar o programador a erros Programador, muitas vezes, deve ser criativo para propor as soluções de um problema 13

3.1.2.1. Criação de Programas em C Sistema C Geralmente consiste de três partes» O ambiente» A linguagem» A biblioteca padrão C 14

3.1.2.1. Criação de Programas em C Processo de Compilação Código Fonte /* Programa na linguagem C */ #include <stdio.h> main( ) { printf ( Ola!!! \n ); } Bibliotecas 00101001010101010101001 01001101001010101010101 10101011010010101010111 11010101010010101010101... link editor Arquivo Executável 00101001010101010101001 01001101001010101010101 10101011010010101010111 11010101010010101010101... compilador Código Objeto 00101001010101010101001 01001101001010101010101 10101011010010101010111 11010101010010101010101... 15

3.1.2.1. Criação de Programas em C Passos para a criação de um arquivo executável Edição Compilação» Pré-processamento» Compilação» Link-edição Execução 16

3.1.2.1. Criação de Programas em C Edição Processo de criação do código fonte através de um editor de textos Programa é criado no editor e armazenado no disco O arquivo deve ter a extensão.c» Exemplo: prog_1.c» Deve-se escolher um nome representativo para o arquivo Os arquivos em C++ usam, em geral, a extensão.cpp 17

3.1.2.1. Criação de Programas em C Compilação Processo de criação do código objeto a partir do código fonte O programador executa um comando para criar o código objeto Geralmente, se não houverem erros de programação, o compilador gera um arquivo com extensão.obj Programa correspondente com instruções em linguagem de máquina 18

3.1.2.1. Criação de Programas em C Pré-processamento Compiladores da linguagem C possuem um préprocessador Antes de um programa C ser compilado, ele é préprocessado» Linhas que começam com # se comunicam com o préprocessador Exemplo: #include <stdio.h> faz com que o pré-processador inclua uma cópia do arquivo Arquivo stdio.h é fornecido pelo sistema C 19

3.1.2.1. Criação de Programas em C Link-edição Arquivo objeto é combinado com outros arquivos para produzir o arquivo executável» Outros arquivos objetos são arquivos pré-definidos em bibliotecas de funções (libraries) Contém instruções em linguagem de máquina para várias operações geralmente utilizadas pelos programas» O processo de combinação dos arquivos objetos em um arquivo executável é chamado de ligação 20

3.1.2.1. Criação de Programas em C Execução Processo no qual o programa é executado Carregador coloca o programa na memória principal CPU executa cada instrução, possivelmente armazenando novos valores que o programa gera 21

3.1.2.1. Criação de Programas em C Fase 1: Editor Disco Programa é criado em editor e armazenado em disco Fase 2: Pre-processador Disco Programa pré-processador processa o código Fase 3: Compilador Disco Compilador cria o código objeto e o armazena em disco Fase 4: Fase 5: Link-editor Loader. Disco Memória principal Link-editor associa o código objeto com as bibliotecas e armazena o novo código no disco Coloca programa na memória Fase 6: CPU. Memória principal Executa cada instrução e, possivelmente, armazena novos valores 22

3.1.2.1. Criação de Programas em C /* Programa ex_1.c */ #include <stdio.h> main( ) { printf ( Ola!!! \n ); } Comentários do programa Inclusão de bibliotecas Programa principal 23

3.1.2.1. Criação de Programas em C Padrões de programação Nomes de variáveis com significado Código estruturado Código adequadamente tabulado Boa documentação» Nome do programador e meio de contato» Descrição geral» Bons comentários 24

3.1.2.1. Criação de Programas em C /* Programa ex_1.c */ #include <stdio.h> main ( ) { int n, i, soma; float final; } n = 4; soma = 0; for (i = 1; i < n; i++){ soma = soma + i; } final = soma/(n-1); printf ( Resultado = %f, final); 25

3.1.2.2. Erros de Programação Muitas vezes, os programadores cometem erros ao escrever seus programas Em geral, um programa pode apresentar 4 categorias de erros Erros sintáticos ou de compilação Erros de composição Erros de execução Erros semânticos 26

3.1.2.2. Erros de Programação Erros sintáticos ou de compilação Código não obedece às regras de sintaxe da linguagem não compila» Sintaxe de uma linguagem é a sua gramática Erros são indicados através de mensagens de erros resumidas na tela do computador» Mensagens de erros mais detalhadas podem ser encontradas em manuais da linguagem» Feitas as correções necessárias, a compilação pode ser reinicializada 27

3.1.2.2. Erros de Programação /* Programa ex_2.c */ #include <stdio.h> main ( ) { int n, i, soma; float final; n = 4 soma = 0; for (i = 1; i < n; i++){ soma = sa + i; } final = soma/(n-1); printf ( Resultado = %f \n, final); Ausência de ; Identificador Desconhecido Falta final do Programa } 28

3.1.2.2. Erros de Programação Erros de composição Ocorrem na fase de link-edição Geralmente estão relacionados a erros na chamada de funções em outras bibliotecas» Exemplo: chamar a função de saída de prtl ao invés de printf» O link-editor não encontra a função prtl nas bibliotecas usadas Erros são indicados através de mensagens de erros resumidas na tela do computador 29

3.1.2.2. Erros de Programação /* Programa ex_3.c */ #include <stdio.h> main ( ) { int n, i, soma; float final; } n = 4; soma = 0; for (i = 1; i < n; i++){ soma = soma + i; } final = soma/(n-1); prin ( Resultado = %f, final); Nome de função que não existe nas bibliotecas usadas 30

3.1.2.2. Erros de Programação Erros de execução Código obedece às regras de linguagem» programa é compilado Mas ao ser executado, código executa operações não permitidas» Exemplos dividir por zero raiz quadrado de número negativo São mais difíceis de descobrir e interpretar 31

3.1.2.2. Erros de Programação /* Programa ex_4.c */ #include <stdio.h> main ( ) { int n, i, valor, soma; float final; } soma = 0; n = 4; for (i = 1; i <n; i++){ soma = soma + i; } final = soma/(n-4); printf ( Resultado = %f, final); Divisão por 0 32

3.1.2.2. Erros de Programação /* Programa ex_2.c */ #include <stdio.h> main ( ) { int n, i, valor, soma; float final; } soma = 0; n = 4; for (i = 1; i >0; i++){ soma = soma + i; } final = soma/(n-1); printf ( Resultado = %f, final); Programa nunca termina execução 33

3.1.2.2. Erros de Programação Erros semânticos Semântica = significado Erros no projeto lógico do programa» Forma utilizada para resolver o problema Provoca erros indesejáveis no programa» Mensagens indicativas dos erros não são apresentadas» Sua correção exige mudanças na concepção do programa São os erros de detecção mais difícil 34

3.1.2.2. Erros de Programação /* Programa ex_3.c */ #include <stdio.h> main ( ) { int n, i, soma; float final; } n = 4; soma = 0; for (i = 1; i < n; i++){ soma = i; } final = soma/(n-1); printf ( Resultado = %f, final); Observe que o resultado esperado (calcular a média dos n-1 números) não é produzido!!! 35