introdução à linguagem c -...

61
1 Material preparado a partir de slides dos profs. Jesús Mena- Chalco e Fabrício Olivetti MCTA028 – Programação Estruturada Prof. Guilherme Mota Q3-2018 Introdução à linguagem C

Upload: phamdan

Post on 09-Jan-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

1

Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti

MCTA028 – Programação Estruturada

Prof. Guilherme Mota

Q3-2018

Introdução à linguagem C

Page 2: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

2

Linguagens de programação

Page 3: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

3

Linguagem de programação

É um conjunto limitado de:Símbolos (comandos, identificadores, caracteres, etc)Regras de sintaxe (descrevem de forma precisa ações)

Page 4: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

4

Tipos de linguagem de programação

Linguagem de máquina

Compreendida pelocomputador. Dependente daarquitetura do computador

Linguagem debaixo nível

Utiliza mnemonicos para arepresentação de açõeselementaresEx. Assembly

Linguagem de alto nível

Utiliza instruções próximas dalinguagem humanaEx. C, Java, Python, PHP

(*) Fonte: http://www.webopedia.com/TERM/A/assembly_language.html

Page 5: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

Linguagens de programação

250 linguagens de programção: 01/02/2015

Page 6: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

Linguagens de programação

(*) Popularidade das LPs http://langpop.com/

Page 7: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

7

Sobre a linguagem de programação

Atualmente existem várias linguagens que são consideradaspara este tipo de disciplina...(Python, C, C++, Java, Haskell, Ruby)

Também vários paradigmas de programação (e.g. procedural,orientado a objetos,) podem ser consideradas...

Todo programador competente deve saber/entender alinguagem C/C++.

Tradicionalmente é utilizada a linguagem C.

Nessa disciplina usaremos C.

Page 8: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

8

A linguagem de programação C

Page 9: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

9

Sobre a linguagem de programação C

Permite escrever programas de alta performance.

C funciona em um nível mais baixo que outras linguagens (dá uma ideia melhor do que realmente está acontecendo).

É preferida no mundo científico:Poucas palavras reservadas.Bom controle da máquina.SO livres (Linux/UNIX) são feitos em C.Base de outras linguagens: C++, Java, C#

Page 10: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

10

Sobre a linguagem de programação C

C é uma linguaguem estruturada, desenvolvida nos Laboratórios BELL(1969-1972), por Dennis Ritchie.

Dialetos:K&R C (1978)ANSI CISO CC99C11 (Dez. 2011)

Kenneth L. Thompson (ling. B) Dennis M. Ritchie (ling. C)

(*) Fonte: http://www.catb.org/~esr/jargon/html/U/Unix.html

Page 11: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

11

The National Medal of Technology andInnovation 1998 Laureates

(*) Fonte: http://www.uspto.gov/about/nmti/recipients/1998.jsp

Kenneth L. Thompson (1943-) Dennis M. Ritchie (1941-2011)

Page 12: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

12

Sobre a linguagem de programação C

Influenciada por:ALGOL 68AssemblyBBCPLCPLFortranPL/I

Influenciou:AWK, BitC, C++, C#, C Shell, D, Euphoria, Go, Java,JavaScript, Limbo, Logic Basic, Objective-C, Perl, PHP,Python, ...

Page 13: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

13

Sobre a linguagem de programação C

Page 14: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

14

C x Java

Não possui suporte a orentação a objetos

Linguagem de nível intermediário:controle mais direto do hardware, porém

também suporta estruturas complexas

Gerenciamento de memória explícito

Maior performance do programa final

Maior dificuldade de manutenção

Page 15: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

15

Page 16: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

16

Com

para

ção

subj

etiv

a

(*) Fonte: https://helloacm.com/a-quick-performance-comparison-on-languages-at-codeforces/

Page 17: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

17

Sobre a linguagem de programação C

Precisa instalar um compilador no seu computador:Usaremos o GNU Compiler Collection (gcc)

No Linux: é padrão.No Mac/OS: terá que instalar as ferramentasXcode/Developer.No MS-Windows:

Cygwin (simulação completa de um ambiente UNIX).

Ming-W (Minimalist GNU for Windows).

Page 18: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

18

Linguagem C

char tem 8 bits (não é 16 bits como em Java)

não existe tipo booleano (usar int ou char):0 falso

≠ 0 verdadeiro

tipos inteiros podem ser signed ou unsigned

não tem tipo string: usa-se vetor de char

Na verdade C99 permite o uso de palavras true/false nosprogramas (mas o compilador os trata como os valores 1 e 0de qualquer forma)

Page 19: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

19

Linguagem C: Tipos de dados

Tipos de dados primários.Tipos de dados derivados.Tipos definidos pelo usuário.

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 20: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

20

Linguagem C: Números inteiros

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 21: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

21

Linguagem C: Números reais

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 22: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

22

Linguagem C: Caracteres

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 23: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

23

Linguagem C: void

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 24: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

24

Conversão de tipo

int a = 20; long b;

b = (long) a; // converte int em long

→ Valor preservado, só o tipo é alterado

Para fazer a conversão, basta colocar entre parênteses o tipo para oqual deseja converter e, então, colocá-lo antes de umavariável/expressão específica ou depois do operador de atribuição (=)para indicar que o resultado proveniente daquela operação deve serconvertido.

Page 25: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

25

Conversão de tipo

int a;long b = 32;

a = (int) b; // converte long em int

→ Perigoso: se b não “cabe” em int, seu valor será truncado.

Page 26: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

26

Conversão de tipo

int a = 17, int b = 3;

double x = a / b;

→ Nesse caso x contém o valor 5

Page 27: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

27

Conversão de tipo

int a = 17, int b = 3;

double x = (double) a / b;

→ Neste caso x contém o valor 5.66667

Page 28: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

28

Conversão de tipo

double x = 5.93487;int y = (int) x;

→ Neste caso y contém o valor 5

Page 29: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

Forma geral de um programa C

29

diretivas de processamento

tipo main ( lista parâmetros )‏ {

//corpo da função main

}

tipo nome_da_funcao ( lista parâmetros )‏ {

//corpo da função

}

.

.

.

Page 30: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

Primeiro Programa: Hello World

//-----------------------------// Primeiro Programa em C// Autor: xxxx // Data: Setembro de 2018//-----------------------------

#include <stdio.h>

void main()‏{ printf("Hello World! \n"); }

30

Page 31: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

Entrada e saída de dados

void main() { int x; float y; printf ("Digite um valor para x: "); scanf("%d", &x);

printf ("Digite um valor para y: "); scanf("%f", &y); printf ("x * y = %f\n", x*y); }

scanf – captura valores fornecidos via teclado

printf – saída de valores

31

Page 32: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

32

Constantes

Page 33: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

33

Constantes

Page 34: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

34

Operadores

Page 35: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

35

Operadores

Page 36: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

36

Operadores

Page 37: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

37

Linguagem Bloco-Estruturada

Page 38: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

38

Comentários

Page 39: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

39

Condicionais

Page 40: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

40

Condicionais

Page 41: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

41

Condicionais

Page 42: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

42

Condicionais

Page 43: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

43

Condicionais

Page 44: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

44

Estruturas de Repetição

Page 45: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

45

Estruturas de Repetição

Page 46: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

46

Estruturas de Repetição

Page 47: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

47

Estruturas de Repetição

Page 48: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

48

Convenções

Page 49: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

49

Convenções

Page 50: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

50

Convenções

Page 51: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

51

Convenções

Page 52: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

52

Convenções

Page 53: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

Sobre listas de exercíciosURI Online Registro obrigatório

Crie uma conta no URI-Online:https://www.urionlinejudge.com.br

Faça um cadastro no seguinte formulário:https://goo.gl/forms/CY0TedgsbqzotFAf2

Dê uma investigada no site do URI e seacostume com as funcionalidades (é simples!)

Page 54: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

54

URI - Online

URI Online Depois de preencher o formulário você receberá um convitepara se cadastrar na nossa disciplina

Page 55: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

55

Page 56: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

56

Page 57: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

57

Page 58: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

58

Page 59: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

59

Page 60: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

60

Page 61: Introdução à linguagem C - professor.ufabc.edu.brprofessor.ufabc.edu.br/~g.mota/courses/programacao_estruturada... · arquitetura do computador Linguagem de baixo nível Utiliza

61

Lista 01

Fazer os seguintes exercícios cadastrados naplataforma URI:

1001; 1002, 1006; 1010; 1011; 1015; 1019; 1035;1044; 1047; 1066; 1075; 1113; 1134; 1589