aula 12: introdução à linguagem cfernanda/2016-1/progiv/aulas/aula12.pdf · agenda 1 revis˜ao e...
TRANSCRIPT
Aula 12: Introducao a Linguagem C
Fernanda Passos
Universidade Federal Fluminense
Programacao de Computadores IV
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 1 / 38
Agenda
1 Revisao e Contexto
2 Introducao a Linguagens
3 A Linguagem C
4 Primeiros Programas em C
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 2 / 38
Agenda
1 Revisao e Contexto
2 Introducao a Linguagens
3 A Linguagem C
4 Primeiros Programas em C
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 3 / 38
Aulas Anteriores:
Algoritmos: sequencia de passos.Uma maneira de representa-los e atraves de pseudocodigo.I Vimos uma sintaxe para ele.I Como declarar variaveis primitivas e compostas,I como usar atribuicoes,I comandos de leitura e escrita,I estruturas de selecao,I estruturas de repeticao (definida e indefinida),I modularizacao (funcoes e procedimentos).
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 4 / 38
Foco da Aula de Hoje
Linguagens de Programacao:De maquina, de montagem e alto nıvel.Traducao de linguagens de alto nıvel para linguagem de maquina.Paradigmas de linguagens de programacao.
Introducao a Linguagem C:Escrita, compilacao e execucao.
Objetivos:Aprender os conceitos de linguagens de programacao.Como as linguagens sao entendidas pelo computador.Conhecer os tipos de linguagens.Mostrar como escrever, compilar e executar um programa em linguagem C.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 5 / 38
Agenda
1 Revisao e Contexto
2 Introducao a Linguagens
3 A Linguagem C
4 Primeiros Programas em C
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 6 / 38
Introducao
O que e uma Linguagem de Programacao (LP):E um instrumento utilizado para se escrever programas de computadores, isto e, conjuntos deinstrucoes a serem seguidas pelo computador para realizar um determinado processo.
Quem computa as instrucoes?
I O processador.E como ele funciona?
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 7 / 38
Introducao
O que e uma Linguagem de Programacao (LP):E um instrumento utilizado para se escrever programas de computadores, isto e, conjuntos deinstrucoes a serem seguidas pelo computador para realizar um determinado processo.
Quem computa as instrucoes?I O processador.
E como ele funciona?
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 7 / 38
Introducao
O que e uma Linguagem de Programacao (LP):E um instrumento utilizado para se escrever programas de computadores, isto e, conjuntos deinstrucoes a serem seguidas pelo computador para realizar um determinado processo.
Quem computa as instrucoes?I O processador.
E como ele funciona?
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 7 / 38
Introducao (II)
Arquitetura simplificado de um computador:
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 8 / 38
Introducao (III)
Arquitetura simplificado de um processador:
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 9 / 38
Linguagem de Maquina
Processador entende apenas 0’s e 1’s.As instrucoes e dados sao representadas de forma binaria.Exemplo:
0 1 0 0 0 0 0 0 0 0 1 0 0 1 0
Registrador 2Registrador 1Registrador 0Operador de adição
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 10 / 38
Linguagem de Montagem
Conhecida como Assembly.Usam codigos com letras e numeros para representar os comandos.Necessita de um montador:I responsavel por traduzir a linguagem de montagem para linguagem de maquina.
Exemplo:I MOV &1 3I MOV &2 5I ADD &0 &1 &2
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 11 / 38
Linguagens de Alto Nıvel
Linguagens de programacao mais faceis de serem entendidas pelo homem.I Proxima a linguagem natural.
Apresentam:I Lexicografia: vocabulario.I Sintaxe: definida por uma gramatica.I Semantica: significado.
Exemplos de linguagens:I C, C++, Java, Python, Pascal, Fortran, Ada, Cobol, Lisp, Prolog.
Exemplo de escrita:
a = 3; b = 5; c = a + b;
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 12 / 38
Traducao de Linguagens de Programacao
Um codigo fonte escrito em linguagem de alto nıvel precisa ser traduzido paralinguagem de maquina.Existem 3 metodos de traducao:I compilacao,I interpretacao eI hıbrido.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 13 / 38
Compilacao
O processo de compilacao efetua a traducao integral do programa fonte para o codigo demaquina.Uma vez traduzido, o programa em linguagem de maquina (executavel) pode serexecutado diretamente.Vantagens:I eficiencia no tempo de execucao e utilizacao de memoria;I requer apenas o executavel (nao necessita codigo fonte para executar).
Desvantagens:I portabilidade;I depuracao (embora existam programas para depurar usando o executavel).
Exemplos: C, C++, pascal, fortran.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 14 / 38
Interpretacao
Cada instrucao do codigo fonte (ou conjunto) e traduzida para a linguagem de maquina.O interpretador recebe a instrucao, a traduz e a executa, retornando seu resultado.Vantagens:I facil depuracao,I portabilidade.
Desvantagens:I ineficiencia no tempo de execucao e utilizacao de memoria.I pouco usado.
Exemplos: Python, prolog, lisp.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 15 / 38
Compilacao vs. Interpretacao
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 16 / 38
Hıbrido
Usa ambos os metodos:I compilacao eI interpretacao.
Apresenta duas etapas:1 compilacao para um codigo intermediario e2 interpretacao do codigo intermediario.
Exemplo: Java.I Primeiro usa um compilador para gerar codigo intermediario (bytecode).I Depois a JVM (maquina virtual) interpreta o bytecode.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 17 / 38
Hıbrido (II)
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 18 / 38
Metodos de Traducao de LP: Resumo
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 19 / 38
Paradigmas de Linguagens de Programacao
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 20 / 38
Paradigmas de LP’s: Imperativo
Apresenta sequencia de alteracoes no estado da memoria do computador.Os conceitos fundamentais sao de variavel, valor e atribuicao.Estruturado:I uso de bloco aninhado de comandos,I desvios condicionais e incondicionais eI subprogramas.I Exemplos: C, pascal, fortran.
Orientado a objetos:I abstracao de dados.I Exemplos: Java, C++.
Concorrente:I processos executam simultaneamente eI concorrem por recursos.I Exemplo: Ada.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 21 / 38
Paradigmas de LP’s: Declarativo
Sao especificacoes sobre a tarefa a ser realizada.Sao especificacoes de relacoes ou funcoes.Abstrai-se de como o computador e implementado.I O compilador ou interpretador gerencia memoria (aloca e desaloca).
Funcional:I programa composto por funcoes.
Logico:I uso de predicados logicos.I Deducao automatica.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 22 / 38
Origem das Linguagens de Programacao
FORTRAN (1957):I aplicacoes numericas.
LISP (1959):I programacao funcional.
ALGOL (1960):I programacao
estruturada.COBOL (1960):I aplicacoes comerciais.
BASIC (1964):I ensino para leigos.
PASCAL (1971):I ensino de programacao
estruturada.I simplicidade.
C (1972):I implementacao de
UNIX.PROLOG (1972):I programacao logica.
SMALLTALK (1972):I programacao orientada
a objetos.ADA (1983):I programacao
concorrente.C++ (1985):I disseminacao da
programacao orientadaa objetos.
JAVA (1995):I mais simples e confiavel
que C++.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 23 / 38
Agenda
1 Revisao e Contexto
2 Introducao a Linguagens
3 A Linguagem C
4 Primeiros Programas em C
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 24 / 38
A Linguagem C
A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de pesquisas da BellLaboratories.Primeiramente usada na reescrita do Sistema Operacional UNIX.I Que ate entao era escrito em assembly.
E uma linguagem imperativa estruturada e compilada.I Gera um executavel.
Algumas caracterısticas:I geracao de codigo eficiente,I compilacao separada,I recursos de baixo nıvel,I confiabilidade,I portabilidade.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 25 / 38
Agenda
1 Revisao e Contexto
2 Introducao a Linguagens
3 A Linguagem C
4 Primeiros Programas em C
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 26 / 38
Ola Mundo!
#include <stdio.h>
/* Programa que escreve a mensagem "Ola Mundo!" na tela */int main(int argc, char ** argv){
printf("Ola mundo!\n");
return(0);
}
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 27 / 38
Explicacao do Codigo
Inicialmente, uma inclusao de uma biblioteca para escrever texto na tela.I Veremos o que sao bibliotecas mais a frente e como usa-las.
Comentarios:I Servem para colocarmos explicacoes pelo codigo.I Comentario de linha: toda linha iniciada por //.I Comentario de bloco: todo texto entre /* e */.
F Pode ter mais de uma linha.I Sao ignorados pelo compilador.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 28 / 38
Explicacao do Codigo II
A linguagem C trabalha com funcoes:I A funcao main e a funcao principal.
F Sempre retorna um inteiro: int.I Ela e obrigatoria para um programa.I argc e argv sao parametros do programa.
F Nao sao obrigatorio mas sao muito uteis!F Nos permite passar valores por linha de comando para o programa, ao executa-lo.F Veremos como usa-los em aulas posteriores.
I Corpo do main e delimitado por { e }.I Comando de impressao printf e usado.I Como e funcao, devemos especificar o seu retorno no final.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 29 / 38
Compilando e Executando
Como vimos, C e uma linguagem compilada.Apos escrever o codigo, devemos compilar usando um programa.I Em linha de comando, podemos chamar o programa gcc.
GCC – GNU Compiler Collection.I Software livre sob licenca da GNU General Public License.I Em Linux, geralmente ja vem instalado.I Em Windows, existe uma implementacao chamada MinGW.
F http://www.mingw.org/wiki/howto_install_the_mingw_gcc_compiler_suite.F Existem outros diversos tutoriais na Internet ensinando a instalar.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 30 / 38
Compilando e Executando (II)
Primeiro, editar o arquivo e salvar com a extensao .c.I Pode ser editado em qualquer editor de texto sem formatacao.I E bom escolher um que faca syntax highlight: coloca cores de acordo com a sintaxe.I Em Linux, gedit, notepad, vim . . .I Em Windows, notepad++, bloco de notas (sem syntax highlights) . . .
Para simplificar, usaremos linha de comando.I No Linux, abrir um terminal.I No Windows, abrir um terminal DOS.
Compilando:gcc nome_arquivo.c -o nome_executavel
Executando:./nome_executavel
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 31 / 38
Compilando e Executando: Exemplo
Escrever o codigo para imprimir a mensagem “Ola mundo!”.I Salvar como hello.c.
Para simplificar, usaremos linha de comando.Compilando:gcc hello.c -o hello
Executando:./hello
Saıda em tela:Ola mundo!
Atividade: realizar os passos acima, em um computador.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 32 / 38
Resumo: Gerando um Programa em C
Etapa 1: Escrever o codigo (fase de implementacao do algoritmo) em um editor de texto:I Salvar o arquivo com a extensao .c.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 33 / 38
Resumo para Gerar um Codigo C (II)
Etapa 2: Em linha de comando, chamar o programa compilador gcc passando o arquivocom o codigo .c:
Etapa 3: Chamar o executavel gerado pelo compilador (execucao do programa):
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 34 / 38
Biblioteca
O padrao ANSI C possui um conjunto de bibliotecas com o compilador.I Permitem manipular entrada e saıda;I Permitem manipular entrada e saıda em arquivos;I Permitem trabalhar com funcoes matematicas;I etc.
Biblioteca:E uma colecao de subprogramas utilizados no desenvolvimento de programasde computadores.
Cada biblioteca apresenta o seu arquivo de cabecalho (header) com a extensao “.h”.I Exemplo: stdio.h
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 35 / 38
Inclusao de Biblioteca
Bibliotecas devem ser incluıdas (include) no inıcio do arquivo do programa.I Sintaxe de inclusao de arquivo:
#include<nome_da_biblioteca.h>A biblioteca padrao C e a stdio.h (standard input-output header).I Permite manipular entrada e saıda padrao.I Geralmente queremos incluı-la.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 36 / 38
Erros
A linguagem C apresenta uma sintaxe especıfica.I Ela deve ser seguida corretamente.I Caso contrario, ocorrerao erros.I Neste caso, temos um erro de compilacao.
Erros podem ocorrer mesmo apos ser gerado o programa pelo compilado.I Erro de execucao.I Geralmente ocorrem devido a:
F erros de manipulacao de variaveis,F erros de logica,F divisao por 0, etc.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 37 / 38
Exercıcios
1 Reproduza, em um computador, o codigo em linguagem C do exemplo apresentado hello.c;2 Compile o codigo;3 Execute.4 Faca uma alteracao no codigo trocando o primeiro int por INT, compile novamente.
I Leia o erro indicado e explique porque ele ocorreu.5 Remova a linha onde ha o include e compile.
I Leia o erro indicado e explique porque ele ocorreu.
Fernanda Passos (UFF) Introducao a Linguagem C Programacao de Computadores IV 38 / 38