Linguagem C 01 - Tópicos Introdutórios

612 views
474 views

Published on

Aula introdu

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
612
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Linguagem C 01 - Tópicos Introdutórios

  1. 1. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
  2. 2. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁO que é C?Linguagem de programação imperativa deuso geralMédio nível: recursos que são suficientementede baixo nível para enfrentar as mais exigentestarefas de programação de sistemasProf. Fabio Alexandre Spanhol, M. Sc. 2
  3. 3. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPopularidade de CDesde sua criação uma das linguagens maisusadas profissionalmenteambiente comercial e acadêmicoProf. Fabio Alexandre Spanhol, M. Sc. 3
  4. 4. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPopularidadedeCProf. Fabio Alexandre Spanhol, M. Sc. 4
  5. 5. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ“Família” de CInfluenciou, direta ou indiretamente, várias outraslinguagensPython, Objective-C, Java, D, Go, C#, etc.C++ foi derivada inicialmente como um superconjunto deCProf. Fabio Alexandre Spanhol, M. Sc. 5
  6. 6. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ“Família” de CC foi influenciada e influenciou uma série delinguagensALGOL 68CPL (1963)BCPL (1969)B (1970)C (1971)C++ (1985) ANSI C(1989)Prof. Fabio Alexandre Spanhol, M. Sc. 6
  7. 7. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁC foi criada no (NJ)Prof. Fabio Alexandre Spanhol, M. Sc. 7Background Histórico de C
  8. 8. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBackground Histórico de COriginalmente foi chamada NB eposteriormente C, sendo projetada eimplementada por Dennis Ritchie(1941-2011) no então AT&T BellLaboratories entre 1969-1973Prof. Fabio Alexandre Spanhol, M. Sc. 8
  9. 9. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁProf. Fabio Alexandre Spanhol, M. Sc. 9
  10. 10. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBackground Histórico de CC deriva de CPL, BCPL, B eALGOL68CPL origina-se da CambridgeUniversity, início dos anos 1960BCPL é uma linguagem de sistemassimples desenvolvida por MartinRichards (1940-) em 1966Prof. Fabio Alexandre Spanhol, M. Sc. 10
  11. 11. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBackground Histórico de CA história de C está intimamente ligada ao doSO UNIXO primeiro UNIX foi escrito em assembly (PDP-7)E a primeira linguagem de alto nível sob o UNIX foia B, escrita por Ken Thompson (1943-)e baseadaem BCPLProf. Fabio Alexandre Spanhol, M. Sc. 11
  12. 12. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBackground Histórico de CB foi implementada e projetadapor Ken ThompsonNem B nem BCPL possuam tipo,todos os dados eram tratadoscomo palavras de máquinaProblemas motivaram a criaçãode uma nova linguagem*Desde 2006 Thompson trabalha naGoogle, sendo co-criador de GoProf. Fabio Alexandre Spanhol, M. Sc. 12
  13. 13. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBackground Histórico de CProf. Fabio Alexandre Spanhol, M. Sc. 13
  14. 14. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBackground Histórico de CProf. Fabio Alexandre Spanhol, M. Sc. 14Ken Thompsonwas onceasked what hewould dodifferentlyif he wereredesigningthe UNIXsystem. Hisreply: "Idspell creatwith an e."
  15. 15. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPadronizaçãoPor mais de uma décadao padrão de C foi o livrode Kernighan e Ritchie,The C ProgrammingLanguage (1978), aversão K&R CProf. Fabio Alexandre Spanhol, M. Sc. 15
  16. 16. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPadronização: ISO/ANSI1983 – o American National Standards Institute(ANSI) instituiu um comitê para padronizar alinguagem1989 - padronização finalizada, ANSI X3.159-1989,conhecida como C89É maior base dos códigos escritos e versão suportada porquase todos os compiladores atuaisNosso curso será focado nessa versão!1990 – torna-se padrão ISO, conhecida como C90Prof. Fabio Alexandre Spanhol, M. Sc. 16
  17. 17. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPadronização: ISO/ANSI1999 – padrão C99 adiciona funções inline, novostipos de dados (como complex), arrays de tamanhovariável, comentários com //, etc.Não é suportado por todos os compiladores e alguns,parcialmente2011 – o padrão iniciado em 2007, conhecido comoC1X, é publicado e passa a ser conhecido como C11novas features, macros de tipo genérico, estruturasanônimas, suporte melhorado a Unicode, operaçõesatômicas, multi-threading, compatibilidade melhorada comC++ e etc.Prof. Fabio Alexandre Spanhol, M. Sc. 17
  18. 18. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁMotivaçãoconhecimento prévio de C, embora nãoindispensável, representa uma vantagem paraquem está interessado em programar em C++e JavaC é ideal para “turbinar” outras linguagenspadrão ANSI para C existe desde 1989o código escrito neste padrão tem validade emqualquer ambiente compatívelProf. Fabio Alexandre Spanhol, M. Sc. 18
  19. 19. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁMotivaçãoprogramador C é um profissional valorizadoem todo o mundocódigo C existente representa um patrimônio demuitos milhões de dólares• não pode ser simplesmente abandonado ou convertidoem outras linguagens• conversão exigirá o trabalho de profissionais comexcelente base em CProf. Fabio Alexandre Spanhol, M. Sc. 19
  20. 20. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁMotivaçãoA API MS-Windows foi especificadaoriginalmente em CO Kernel Linux é implementado em CC está estreitamente relacionada com tudoque diz respeito ao mundo UnixProf. Fabio Alexandre Spanhol, M. Sc. 20
  21. 21. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁMotivaçãoC continua sendo a preferidapara o desenvolvimento desistemas embarcados(embedded systems)software que controlaautomóveis, fornos demicroondas, aparelhos de Blu-Ray e outros dispositivos não-computacionaisProf. Fabio Alexandre Spanhol, M. Sc. 21
  22. 22. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁCaracterísticas de CC é uma linguagem criada por programadorespara programadoresProceduralModularizada (com funções)CientíficaFlexívelCase sensitiveProf. Fabio Alexandre Spanhol, M. Sc. 22
  23. 23. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁKeywords de CO padrão C89 tem 32Prof. Fabio Alexandre Spanhol, M. Sc. 23autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile
  24. 24. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁCompiladoresExistem vários compiladores C, proprietáriose abertos, multiplataforma, etc.GCC CClangVisual-CLabWindows/CVIIntel ICCEtc.Prof. Fabio Alexandre Spanhol, M. Sc. 24
  25. 25. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁCompiladorVamos adotar o compiladorGCC (Gnu Compiler Collection)C, do projeto GNU licenciado sobGPLoferece front ends para C, C++,Objective-C, Fortran, Java, Ada eGohttp://gcc.gnu.org/Prof. Fabio Alexandre Spanhol, M. Sc. 25
  26. 26. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁComo Compilar?Na linha de comando (Linux-like)gcc arquivo.c –o arquivo*inclui as etapas de pré-processamento, compilação,montagem e ligação**Sem o parâmetro -o, o padrão é gerar um executávelchamado a.outProf. Fabio Alexandre Spanhol, M. Sc. 26
  27. 27. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁComo Compilar?E naquele outro sistema operacional?Use por sua conta e risco!Existem ports como MinGW e CygwinProf. Fabio Alexandre Spanhol, M. Sc. 27
  28. 28. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁIDE?Muitos!• Vim• TextMate• Code::Blocks• Sublime• Geany• Aptana• NetBeans• MS-Visual Studio• Eclipse• SlickEdit• Source Insight• Etc.Prof. Fabio Alexandre Spanhol, M. Sc. 28
  29. 29. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁComentáriosSão ignorados pelo compiladorUtilizados para documentar o código-fonte/* comentario devarias linhas.*/// para comentário de uma linha, a partir dopadrão C99Prof. Fabio Alexandre Spanhol, M. Sc. 29
  30. 30. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁUm Hello World em CProf. Fabio Alexandre Spanhol, M. Sc. 30
  31. 31. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁE/S em CNão existem comandos internos paraefetuar entrada e saídaMas, há a biblioteca padrão (C StandardLibrary) stdio.h que fornece recursos paramanipulação de E/SDefine macros, constantes, variáveis e dezenasde funções para manipulação de arquivos• Conceito de stream de bytesProf. Fabio Alexandre Spanhol, M. Sc. 31
  32. 32. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁE/S em CNo modelo oriundo do Unix e adotado por C,stream é uma fonte ou destino de dadosTrês streams padrão estão disponíveis para oprograma:stdin – entrada, normalmente tecladostdout – saída, normalmente terminal de vídeostderr – erros, normalmente terminal de vídeoProf. Fabio Alexandre Spanhol, M. Sc. 32
  33. 33. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁE/S em CMapeamento das streams padrãoProf. Fabio Alexandre Spanhol, M. Sc. 33
  34. 34. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁSaída em Terminais TextoSaída básica feita com a função printf,definida em stdio.hLê os dados de uma origem, formata e escreve emstdoutO parâmetro format é uma string indicando como osdados devem ser interpretadosO retorno é a quantidade de caracteres escritos ou umvalor negativo, em caso de erroProf. Fabio Alexandre Spanhol, M. Sc. 34
  35. 35. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁFunção printfCaracteres especiais (como quebra de linha)devem ser incluídos na string format comsequências de escape: c, sendo c umcaractereProf. Fabio Alexandre Spanhol, M. Sc. 35Sequência resultadon nova linhar retorno de carrot tabulação horizontal barra invertida apóstrofo" aspas
  36. 36. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁFunção printfNo parâmetro format podem ser usadoscaracteres de conversão% seguido de um caractereProf. Fabio Alexandre Spanhol, M. Sc. 36caractere significadoc Caractere únicos stringd ou i inteiroF ou f flutuanteE ou e Flutuante notação exponencialo octalX ou x hexadecimal
  37. 37. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁFunção printfAlguns caracteres de conversão em formataceitam sinalizadores que modificam ocomportamento padrãoProf. Fabio Alexandre Spanhol, M. Sc. 37Flag Ação- Justificado à esquerda+ Justificado à direita. Precisão quando aplicado em flutuantesdígitos Define o tamanho do campo com o valor0 Completa o campo com zeros ao invés de espaços
  38. 38. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁFunção printf: RetornoExemplo 1Prof. Fabio Alexandre Spanhol, M. Sc. 38
  39. 39. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁFunção printf: FormataçãoProf. Fabio Alexandre Spanhol, M. Sc. 39
  40. 40. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁEntrada em Terminais TextoEntrada básica feita com a função scanf,definida em stdio.hLê os dados de stdin, interpreta e armazena em umaposição de memóriaO parâmetro format é uma string indicando como osdados devem ser interpretadosO retorno é a quantidade de caracteres atribuídos ou umEOF, em caso de erroProf. Fabio Alexandre Spanhol, M. Sc. 40
  41. 41. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁFunção scanfNo parâmetro format podem ser usadoscaracteres de formatação% seguido de um caractereProf. Fabio Alexandre Spanhol, M. Sc. 41caractere significadoc Caractere únicos String SEM espaçod ou i inteiroF, f, G, g, E,e, A, aflutuanteu Inteiro sem sinalo octalx hexadecimal
  42. 42. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁTipos de Dados em CSomente 5 tipos primitivoschar – um byte simples (8-bits) para armazenar umcaractere ASCIIint – valor inteiro, baseado no tamanho da palavra damáquina (geralmente 32-bits)float – um ponto flutuante de precisão simples(normalmente 32-bit, IEEE)double – um ponto flutuante de precisão dupla(normalmente 64-bit, IEEE)void – valor “vazio”• Usado em retornos de funções e ponteiros genéricosProf. Fabio Alexandre Spanhol, M. Sc. 42
  43. 43. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁTamanhos de InteirosDois qualificadores controlam o tamanho dos inteirosshort int – versão ‘curta’ de um intlong int – versão ‘longa’ de um intRegrasshort int <= int <= long intshort int >= 16 bitsint >= 16 bitslong int >= 32 bitsProf. Fabio Alexandre Spanhol, M. Sc. 43
  44. 44. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁTipos e TamanhosProf. Fabio Alexandre Spanhol, M. Sc. 44
  45. 45. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁSinalização de InteirosQualificadores para inteirosunsigned – interpreta o valor iniciando em 0• unsigned aumenta a faixa de valores disponíveis, usequando tiver certeza que não existirão negativossigned – permite números negativos*Cuidado: Misturar valores unsigned e signedpode gerar bugs!Prof. Fabio Alexandre Spanhol, M. Sc. 45
  46. 46. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁBooleanos em C?Não há um tipo booleano em C!Booleanos são implementados eavaliados como valores inteiro• TRUE = 1• FALSE = 0Convenção• 0 = FALSE• Não-zero = TRUEProf. Fabio Alexandre Spanhol, M. Sc. 46
  47. 47. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁVariáveisVariáveis são rótulos simbólicos paraposições de memóriaDefinidas porIdentificadorTipo de dadosEm C, variáveis precisam serdeclaradas antes de seremutilizadas! Prof. Fabio Alexandre Spanhol, M. Sc. 47
  48. 48. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁVariáveis: DeclaraçãoPodem ser declaradas fora da função mainou depois de da abertura de um bloco (após o{)Sintaxe:<tipo_dado> <lista_de_identificadores>Ex.:Prof. Fabio Alexandre Spanhol, M. Sc. 48
  49. 49. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁConstantesConstantes são valores rotulados,como variáveis, mas imutáveis(somente leitura) durante toda aexecução do programaEvite o uso de números mágicos,use constantes!Podem ser criadas• 1) Qualificando variáveis com const• 2) Usando a diretiva #defineProf. Fabio Alexandre Spanhol, M. Sc. 49
  50. 50. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁConstantesUma constante pode ser usada em qualqueroperação que não altere o valor da mesmaExemplos com constProf. Fabio Alexandre Spanhol, M. Sc. 50
  51. 51. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁConstantesTambém é possível usar a diretiva de pré-processamento #define criando uma macroUse com cautela• Macro substituição, não há tipagem• não podem ser referenciados diretamente depois• Não são acessíveis ao debbugerVantagem: menor espaço em memóriaPode ser interessante para sistemas limitadosProf. Fabio Alexandre Spanhol, M. Sc. 51
  52. 52. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁConstantesAs macros são expandidas pelo pré-processadorA ocorrência do identificador é substituída pelaconstanteExemplos com #defineProf. Fabio Alexandre Spanhol, M. Sc. 52
  53. 53. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁOperadores AritméticosProf. Fabio Alexandre Spanhol, M. Sc. 53Avaliam e retornam um valor numéricoOperador Descrição Sintaxe+ Adição a + b- Subtração a - b* Multiplicação a * b/ Divisão a / b% Resto da divisão inteira (módulo) a % b++ Incremento. Versão pré e pós fixada ++a oua++-- Decremento. Versão pré e pós fixada ++a oua++
  54. 54. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁOperadores RelacionaisProf. Fabio Alexandre Spanhol, M. Sc. 54Avaliam e retornam um valor booleanoOperador Descrição Sintaxe== Igual a a == b!= Não igual a, diferente de a != b> Maior que a > b< Menor que a < b>= Maior ou igual a a >= b<= Menor ou igual a a <= b
  55. 55. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁOperadores LógicosProf. Fabio Alexandre Spanhol, M. Sc. 55Avaliam e retornam um valor booleanoOperador Descrição Sintaxe! Negação lógica, NÃO !a&& Conjunção lógica, E a && b|| Disjunção lógica, OU a || b
  56. 56. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁOperadores Bit-a-bitProf. Fabio Alexandre Spanhol, M. Sc. 56Operam sobre os bits individuais dooperandoOperador Descrição Sintaxe~ Negação lógica ~a&& E lógico a & b| Ou lógico a | b^ Ou exclusivo (XOR) a ^ b>> Deslocamento à direita a >> b<< Deslocamento à esquerda a << b
  57. 57. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁOperadores Bit-a-bitNo trecho de código seguinte,a expressão a && b resulta 1 (valor lógicoverdade) e a & b resulta 4Prof. Fabio Alexandre Spanhol, M. Sc. 57
  58. 58. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁAtribuiçãoValores constantes, resultados de chamadasde funções ou resultados de expressõespodem ser armazenados em variáveis usandoo operador de atribuição (=)Prof. Fabio Alexandre Spanhol, M. Sc. 58
  59. 59. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁAtribuição CombinadaO operador de atribuição pode ser combinado comos operadores aritméticos e bit-a-bit, compactando ainstruçãoProf. Fabio Alexandre Spanhol, M. Sc. 59Instrução Substituição Possívela = a + b a += ba = a - b a -= ba = a * b a *= ba = a / b a /= ba = a % b a %= ba = a & b a &= ba = a || b a ||= b...

×