SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
O que é C?
Linguagem de programação imperativa de
uso geral
Médio nível: recursos que são suficientemente
de baixo nível para enfrentar as mais exigentes
tarefas de programação de sistemas
Prof. Fabio Alexandre Spanhol, M. Sc. 2
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Popularidade de C
Desde sua criação uma das linguagens mais
usadas profissionalmente
ambiente comercial e acadêmico
Prof. Fabio Alexandre Spanhol, M. Sc. 3
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
PopularidadedeC
Prof. Fabio Alexandre Spanhol, M. Sc. 4
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
“Família” de C
Influenciou, direta ou indiretamente, várias outras
linguagens
Python, Objective-C, Java, D, Go, C#, etc.
C++ foi derivada inicialmente como um superconjunto de
C
Prof. Fabio Alexandre Spanhol, M. Sc. 5
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
“Família” de C
C foi influenciada e influenciou uma série de
linguagens
ALGOL 68
CPL (1963)
BCPL (1969)
B (1970)
C (1971)
C++ (1985) ANSI C
(1989)
Prof. Fabio Alexandre Spanhol, M. Sc. 6
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
C foi criada no (NJ)
Prof. Fabio Alexandre Spanhol, M. Sc. 7
Background Histórico de C
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Background Histórico de C
Originalmente foi chamada NB e
posteriormente C, sendo projetada e
implementada por Dennis Ritchie
(1941-2011) no então AT&T Bell
Laboratories entre 1969-1973
Prof. Fabio Alexandre Spanhol, M. Sc. 8
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Prof. Fabio Alexandre Spanhol, M. Sc. 9
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Background Histórico de C
C deriva de CPL, BCPL, B e
ALGOL68
CPL origina-se da Cambridge
University, início dos anos 1960
BCPL é uma linguagem de sistemas
simples desenvolvida por Martin
Richards (1940-) em 1966
Prof. Fabio Alexandre Spanhol, M. Sc. 10
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Background Histórico de C
A história de C está intimamente ligada ao do
SO UNIX
O primeiro UNIX foi escrito em assembly (PDP-7)
E a primeira linguagem de alto nível sob o UNIX foi
a B, escrita por Ken Thompson (1943-)e baseada
em BCPL
Prof. Fabio Alexandre Spanhol, M. Sc. 11
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Background Histórico de C
B foi implementada e projetada
por Ken Thompson
Nem B nem BCPL possuam tipo,
todos os dados eram tratados
como palavras de máquina
Problemas motivaram a criação
de uma nova linguagem
*Desde 2006 Thompson trabalha na
Google, sendo co-criador de Go
Prof. Fabio Alexandre Spanhol, M. Sc. 12
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Background Histórico de C
Prof. Fabio Alexandre Spanhol, M. Sc. 13
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Background Histórico de C
Prof. Fabio Alexandre Spanhol, M. Sc. 14
Ken Thompson
was once
asked what he
would do
differently
if he were
redesigning
the UNIX
system. His
reply: "I'd
spell creat
with an e."
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Padronização
Por mais de uma década
o padrão de C foi o livro
de Kernighan e Ritchie,
The C Programming
Language (1978), a
versão K&R C
Prof. Fabio Alexandre Spanhol, M. Sc. 15
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Padronização: ISO/ANSI
1983 – o American National Standards Institute
(ANSI) instituiu um comitê para padronizar a
linguagem
1989 - padronização finalizada, ANSI X3.159-1989,
conhecida como C89
É maior base dos códigos escritos e versão suportada por
quase todos os compiladores atuais
Nosso curso será focado nessa versão!
1990 – torna-se padrão ISO, conhecida como C90
Prof. Fabio Alexandre Spanhol, M. Sc. 16
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Padronização: ISO/ANSI
1999 – padrão C99 adiciona funções inline, novos
tipos de dados (como complex), arrays de tamanho
variável, comentários com //, etc.
Não é suportado por todos os compiladores e alguns,
parcialmente
2011 – o padrão iniciado em 2007, conhecido como
C1X, é publicado e passa a ser conhecido como C11
novas features, macros de tipo genérico, estruturas
anônimas, suporte melhorado a Unicode, operações
atômicas, multi-threading, compatibilidade melhorada com
C++ e etc.
Prof. Fabio Alexandre Spanhol, M. Sc. 17
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Motivação
conhecimento prévio de C, embora não
indispensável, representa uma vantagem para
quem está interessado em programar em C++
e Java
C é ideal para “turbinar” outras linguagens
padrão ANSI para C existe desde 1989
o código escrito neste padrão tem validade em
qualquer ambiente compatível
Prof. Fabio Alexandre Spanhol, M. Sc. 18
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Motivação
programador C é um profissional valorizado
em todo o mundo
código C existente representa um patrimônio de
muitos milhões de dólares
• não pode ser simplesmente abandonado ou convertido
em outras linguagens
• conversão exigirá o trabalho de profissionais com
excelente base em C
Prof. Fabio Alexandre Spanhol, M. Sc. 19
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Motivação
A API MS-Windows foi especificada
originalmente em C
O Kernel Linux é implementado em C
C está estreitamente relacionada com tudo
que diz respeito ao mundo Unix
Prof. Fabio Alexandre Spanhol, M. Sc. 20
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Motivação
C continua sendo a preferida
para o desenvolvimento de
sistemas embarcados
(embedded systems)
software que controla
automóveis, fornos de
microondas, aparelhos de Blu-
Ray e outros dispositivos não-
computacionais
Prof. Fabio Alexandre Spanhol, M. Sc. 21
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Características de C
C é uma linguagem criada por programadores
para programadores
Procedural
Modularizada (com funções)
Científica
Flexível
Case sensitive
Prof. Fabio Alexandre Spanhol, M. Sc. 22
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Keywords de C
O padrão C89 tem 32
Prof. Fabio Alexandre Spanhol, M. Sc. 23
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Compiladores
Existem vários compiladores C, proprietários
e abertos, multiplataforma, etc.
GCC C
Clang
Visual-C
LabWindows/CVI
Intel ICC
Etc.
Prof. Fabio Alexandre Spanhol, M. Sc. 24
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Compilador
Vamos adotar o compilador
GCC (Gnu Compiler Collection)
C, do projeto GNU licenciado sob
GPL
oferece front ends para C, C++,
Objective-C, Fortran, Java, Ada e
Go
http://gcc.gnu.org/
Prof. Fabio Alexandre Spanhol, M. Sc. 25
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ável
chamado a.out
Prof. Fabio Alexandre Spanhol, M. Sc. 26
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Como Compilar?
E naquele outro sistema operacional?
Use por sua conta e risco!
Existem ports como MinGW e Cygwin
Prof. Fabio Alexandre Spanhol, M. Sc. 27
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Comentários
São ignorados pelo compilador
Utilizados para documentar o código-fonte
/* comentario de
varias linhas.
*/
// para comentário de uma linha, a partir do
padrão C99
Prof. Fabio Alexandre Spanhol, M. Sc. 29
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Um Hello World em C
Prof. Fabio Alexandre Spanhol, M. Sc. 30
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
E/S em C
Não existem comandos internos para
efetuar entrada e saída
Mas, há a biblioteca padrão (C Standard
Library) stdio.h que fornece recursos para
manipulação de E/S
Define macros, constantes, variáveis e dezenas
de funções para manipulação de arquivos
• Conceito de stream de bytes
Prof. Fabio Alexandre Spanhol, M. Sc. 31
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
E/S em C
No modelo oriundo do Unix e adotado por C,
stream é uma fonte ou destino de dados
Três streams padrão estão disponíveis para o
programa:
stdin – entrada, normalmente teclado
stdout – saída, normalmente terminal de vídeo
stderr – erros, normalmente terminal de vídeo
Prof. Fabio Alexandre Spanhol, M. Sc. 32
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
E/S em C
Mapeamento das streams padrão
Prof. Fabio Alexandre Spanhol, M. Sc. 33
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Saída em Terminais Texto
Saída básica feita com a função printf,
definida em stdio.h
Lê os dados de uma origem, formata e escreve em
stdout
O parâmetro format é uma string indicando como os
dados devem ser interpretados
O retorno é a quantidade de caracteres escritos ou um
valor negativo, em caso de erro
Prof. Fabio Alexandre Spanhol, M. Sc. 34
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Função printf
Caracteres especiais (como quebra de linha)
devem ser incluídos na string format com
sequências de escape: c, sendo c um
caractere
Prof. Fabio Alexandre Spanhol, M. Sc. 35
Sequência resultado
n nova linha
r retorno de carro
t tabulação horizontal
 barra invertida
' apóstrofo
" aspas
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Função printf
No parâmetro format podem ser usados
caracteres de conversão
% seguido de um caractere
Prof. Fabio Alexandre Spanhol, M. Sc. 36
caractere significado
c Caractere único
s string
d ou i inteiro
F ou f flutuante
E ou e Flutuante notação exponencial
o octal
X ou x hexadecimal
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Função printf
Alguns caracteres de conversão em format
aceitam sinalizadores que modificam o
comportamento padrão
Prof. Fabio Alexandre Spanhol, M. Sc. 37
Flag Ação
- Justificado à esquerda
+ Justificado à direita
. Precisão quando aplicado em flutuantes
dígitos Define o tamanho do campo com o valor
0 Completa o campo com zeros ao invés de espaços
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Função printf: Retorno
Exemplo 1
Prof. Fabio Alexandre Spanhol, M. Sc. 38
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Função printf: Formatação
Prof. Fabio Alexandre Spanhol, M. Sc. 39
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Entrada em Terminais Texto
Entrada básica feita com a função scanf,
definida em stdio.h
Lê os dados de stdin, interpreta e armazena em uma
posição de memória
O parâmetro format é uma string indicando como os
dados devem ser interpretados
O retorno é a quantidade de caracteres atribuídos ou um
EOF, em caso de erro
Prof. Fabio Alexandre Spanhol, M. Sc. 40
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Função scanf
No parâmetro format podem ser usados
caracteres de formatação
% seguido de um caractere
Prof. Fabio Alexandre Spanhol, M. Sc. 41
caractere significado
c Caractere único
s String SEM espaço
d ou i inteiro
F, f, G, g, E,
e, A, a
flutuante
u Inteiro sem sinal
o octal
x hexadecimal
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Tipos de Dados em C
Somente 5 tipos primitivos
char – um byte simples (8-bits) para armazenar um
caractere ASCII
int – valor inteiro, baseado no tamanho da palavra da
má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éricos
Prof. Fabio Alexandre Spanhol, M. Sc. 42
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Tamanhos de Inteiros
Dois qualificadores controlam o tamanho dos inteiros
short int – versão ‘curta’ de um int
long int – versão ‘longa’ de um int
Regras
short int <= int <= long int
short int >= 16 bits
int >= 16 bits
long int >= 32 bits
Prof. Fabio Alexandre Spanhol, M. Sc. 43
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Tipos e Tamanhos
Prof. Fabio Alexandre Spanhol, M. Sc. 44
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Sinalização de Inteiros
Qualificadores para inteiros
unsigned – interpreta o valor iniciando em 0
• unsigned aumenta a faixa de valores disponíveis, use
quando tiver certeza que não existirão negativos
signed – permite números negativos
*Cuidado: Misturar valores unsigned e signed
pode gerar bugs!
Prof. Fabio Alexandre Spanhol, M. Sc. 45
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Booleanos em C?
Não há um tipo booleano em C!
Booleanos são implementados e
avaliados como valores inteiro
• TRUE = 1
• FALSE = 0
Convenção
• 0 = FALSE
• Não-zero = TRUE
Prof. Fabio Alexandre Spanhol, M. Sc. 46
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Variáveis
Variáveis são rótulos simbólicos para
posições de memória
Definidas por
Identificador
Tipo de dados
Em C, variáveis precisam ser
declaradas antes de serem
utilizadas! Prof. Fabio Alexandre Spanhol, M. Sc. 47
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Variáveis: Declaração
Podem ser declaradas fora da função main
ou depois de da abertura de um bloco (após o
{)
Sintaxe:<tipo_dado> <lista_de_identificadores>
Ex.:
Prof. Fabio Alexandre Spanhol, M. Sc. 48
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Constantes
Constantes são valores rotulados,
como variáveis, mas imutáveis
(somente leitura) durante toda a
execução do programa
Evite o uso de números mágicos,
use constantes!
Podem ser criadas
• 1) Qualificando variáveis com const
• 2) Usando a diretiva #define
Prof. Fabio Alexandre Spanhol, M. Sc. 49
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Constantes
Uma constante pode ser usada em qualquer
operação que não altere o valor da mesma
Exemplos com const
Prof. Fabio Alexandre Spanhol, M. Sc. 50
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Constantes
Também é possível usar a diretiva de pré-
processamento #define criando uma macro
Use com cautela
• Macro substituição, não há tipagem
• não podem ser referenciados diretamente depois
• Não são acessíveis ao debbuger
Vantagem: menor espaço em memória
Pode ser interessante para sistemas limitados
Prof. Fabio Alexandre Spanhol, M. Sc. 51
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Constantes
As macros são expandidas pelo pré-
processador
A ocorrência do identificador é substituída pela
constante
Exemplos com #define
Prof. Fabio Alexandre Spanhol, M. Sc. 52
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operadores Aritméticos
Prof. Fabio Alexandre Spanhol, M. Sc. 53
Avaliam e retornam um valor numérico
Operador 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 ou
a++
-- Decremento. Versão pré e pós fixada ++a ou
a++
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operadores Relacionais
Prof. Fabio Alexandre Spanhol, M. Sc. 54
Avaliam e retornam um valor booleano
Operador 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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operadores Lógicos
Prof. Fabio Alexandre Spanhol, M. Sc. 55
Avaliam e retornam um valor booleano
Operador Descrição Sintaxe
! Negação lógica, NÃO !a
&& Conjunção lógica, E a && b
|| Disjunção lógica, OU a || b
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operadores Bit-a-bit
Prof. Fabio Alexandre Spanhol, M. Sc. 56
Operam sobre os bits individuais do
operando
Operador 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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operadores Bit-a-bit
No trecho de código seguinte,
a expressão a && b resulta 1 (valor lógico
verdade) e a & b resulta 4
Prof. Fabio Alexandre Spanhol, M. Sc. 57
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Atribuição
Valores constantes, resultados de chamadas
de funções ou resultados de expressões
podem ser armazenados em variáveis usando
o operador de atribuição (=)
Prof. Fabio Alexandre Spanhol, M. Sc. 58
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Atribuição Combinada
O operador de atribuição pode ser combinado com
os operadores aritméticos e bit-a-bit, compactando a
instrução
Prof. Fabio Alexandre Spanhol, M. Sc. 59
Instrução Substituição Possível
a = a + b a += b
a = a - b a -= b
a = a * b a *= b
a = a / b a /= b
a = a % b a %= b
a = a & b a &= b
a = a || b a ||= b
...

Más contenido relacionado

La actualidad más candente

Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonOsvaldo Santana Neto
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programaçãoSimples Consultoria
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalGustavo Coutinho
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2Moises de Paula
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 

La actualidad más candente (20)

Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
AulaPython.pdf
AulaPython.pdfAulaPython.pdf
AulaPython.pdf
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programação
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 

Destacado

Linguagem C (Parte 3)
Linguagem C (Parte 3)Linguagem C (Parte 3)
Linguagem C (Parte 3)Daniel Barão
 
C a linguagem de programação
C   a linguagem de programaçãoC   a linguagem de programação
C a linguagem de programaçãoAndrei Bastos
 
Introdução c pucpr
Introdução c   pucprIntrodução c   pucpr
Introdução c pucprMatheus Lima
 
Linguagem C (Parte 1)
Linguagem C (Parte 1)Linguagem C (Parte 1)
Linguagem C (Parte 1)Daniel Barão
 
Linguagem C (UFRPE)
Linguagem C (UFRPE)Linguagem C (UFRPE)
Linguagem C (UFRPE)guest14543db
 
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoLógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoFelipe Fontoura
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
Linguagem C - Resumo dos comandos de controle de programa
Linguagem C - Resumo dos comandos de controle de programaLinguagem C - Resumo dos comandos de controle de programa
Linguagem C - Resumo dos comandos de controle de programaElaine Cecília Gatto
 
Linguagem C (Parte 2)
Linguagem C (Parte 2)Linguagem C (Parte 2)
Linguagem C (Parte 2)Daniel Barão
 
UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.
UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.
UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.Bruno Eustáquio
 
Por quê e como desenvolver a habilidade de programar?
Por quê e como desenvolver a habilidade de programar?Por quê e como desenvolver a habilidade de programar?
Por quê e como desenvolver a habilidade de programar?Fernando Kenji Kamei
 
Arquitetura e organização de computadores
Arquitetura e organização de computadoresArquitetura e organização de computadores
Arquitetura e organização de computadoresHenrique Freitas
 

Destacado (20)

Linguagem C (Parte 3)
Linguagem C (Parte 3)Linguagem C (Parte 3)
Linguagem C (Parte 3)
 
C a linguagem de programação
C   a linguagem de programaçãoC   a linguagem de programação
C a linguagem de programação
 
Apresentação Linguagem C
Apresentação Linguagem CApresentação Linguagem C
Apresentação Linguagem C
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Introdução c pucpr
Introdução c   pucprIntrodução c   pucpr
Introdução c pucpr
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
E booklingc
E booklingcE booklingc
E booklingc
 
Linguagem C (Parte 1)
Linguagem C (Parte 1)Linguagem C (Parte 1)
Linguagem C (Parte 1)
 
3. Eletrônica Digital: Lógica Combinacional e Seqüencial
3. Eletrônica Digital: Lógica Combinacional e Seqüencial3. Eletrônica Digital: Lógica Combinacional e Seqüencial
3. Eletrônica Digital: Lógica Combinacional e Seqüencial
 
O que é programar
O que é programarO que é programar
O que é programar
 
Linguagem C (UFRPE)
Linguagem C (UFRPE)Linguagem C (UFRPE)
Linguagem C (UFRPE)
 
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoLógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Linguagem C - Resumo dos comandos de controle de programa
Linguagem C - Resumo dos comandos de controle de programaLinguagem C - Resumo dos comandos de controle de programa
Linguagem C - Resumo dos comandos de controle de programa
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Funções em C
Funções em CFunções em C
Funções em C
 
Linguagem C (Parte 2)
Linguagem C (Parte 2)Linguagem C (Parte 2)
Linguagem C (Parte 2)
 
UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.
UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.
UFV 2013 - 10 dicas para criar uma empresa inovadora de sucesso... Ou não.
 
Por quê e como desenvolver a habilidade de programar?
Por quê e como desenvolver a habilidade de programar?Por quê e como desenvolver a habilidade de programar?
Por quê e como desenvolver a habilidade de programar?
 
Arquitetura e organização de computadores
Arquitetura e organização de computadoresArquitetura e organização de computadores
Arquitetura e organização de computadores
 

Similar a Introdução à linguagem C

Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoMonike Santos
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Microprocessadores ii revisão de linguagem de programação (parte2)
Microprocessadores ii revisão de linguagem de programação (parte2)Microprocessadores ii revisão de linguagem de programação (parte2)
Microprocessadores ii revisão de linguagem de programação (parte2)Mauro Pereira
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem corvel
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430Texas Instruments
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem CDaniel Barão
 
Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02Lucas Antonio
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 

Similar a Introdução à linguagem C (20)

Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Apostila c
Apostila cApostila c
Apostila c
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Microprocessadores ii revisão de linguagem de programação (parte2)
Microprocessadores ii revisão de linguagem de programação (parte2)Microprocessadores ii revisão de linguagem de programação (parte2)
Microprocessadores ii revisão de linguagem de programação (parte2)
 
Linguagem c parte 1
Linguagem c parte 1Linguagem c parte 1
Linguagem c parte 1
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila chardwere
Apostila chardwereApostila chardwere
Apostila chardwere
 
C hardware
C hardwareC hardware
C hardware
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem C
 
Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02Logica5 141120062157-conversion-gate02
Logica5 141120062157-conversion-gate02
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Gcc
Gcc Gcc
Gcc
 

Más de Fabio Spanhol

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasFabio Spanhol
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Fabio Spanhol
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6 Fabio Spanhol
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioFabio Spanhol
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Fabio Spanhol
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosFabio Spanhol
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Fabio Spanhol
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?Fabio Spanhol
 
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem PythonFabio Spanhol
 
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2Fabio Spanhol
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 

Más de Fabio Spanhol (14)

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino Médio
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos Introdutórios
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Tutorial Python - 1
Tutorial Python - 1Tutorial Python - 1
Tutorial Python - 1
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?
 
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
 
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 

Introdução à linguagem C

  • 2. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ O que é C? Linguagem de programação imperativa de uso geral Médio nível: recursos que são suficientemente de baixo nível para enfrentar as mais exigentes tarefas de programação de sistemas Prof. Fabio Alexandre Spanhol, M. Sc. 2
  • 3. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Popularidade de C Desde sua criação uma das linguagens mais usadas profissionalmente ambiente comercial e acadêmico Prof. Fabio Alexandre Spanhol, M. Sc. 3
  • 4. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PopularidadedeC Prof. Fabio Alexandre Spanhol, M. Sc. 4
  • 5. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ “Família” de C Influenciou, direta ou indiretamente, várias outras linguagens Python, Objective-C, Java, D, Go, C#, etc. C++ foi derivada inicialmente como um superconjunto de C Prof. Fabio Alexandre Spanhol, M. Sc. 5
  • 6. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ “Família” de C C foi influenciada e influenciou uma série de linguagens ALGOL 68 CPL (1963) BCPL (1969) B (1970) C (1971) C++ (1985) ANSI C (1989) Prof. Fabio Alexandre Spanhol, M. Sc. 6
  • 7. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ C foi criada no (NJ) Prof. Fabio Alexandre Spanhol, M. Sc. 7 Background Histórico de C
  • 8. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Background Histórico de C Originalmente foi chamada NB e posteriormente C, sendo projetada e implementada por Dennis Ritchie (1941-2011) no então AT&T Bell Laboratories entre 1969-1973 Prof. Fabio Alexandre Spanhol, M. Sc. 8
  • 9. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Prof. Fabio Alexandre Spanhol, M. Sc. 9
  • 10. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Background Histórico de C C deriva de CPL, BCPL, B e ALGOL68 CPL origina-se da Cambridge University, início dos anos 1960 BCPL é uma linguagem de sistemas simples desenvolvida por Martin Richards (1940-) em 1966 Prof. Fabio Alexandre Spanhol, M. Sc. 10
  • 11. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Background Histórico de C A história de C está intimamente ligada ao do SO UNIX O primeiro UNIX foi escrito em assembly (PDP-7) E a primeira linguagem de alto nível sob o UNIX foi a B, escrita por Ken Thompson (1943-)e baseada em BCPL Prof. Fabio Alexandre Spanhol, M. Sc. 11
  • 12. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Background Histórico de C B foi implementada e projetada por Ken Thompson Nem B nem BCPL possuam tipo, todos os dados eram tratados como palavras de máquina Problemas motivaram a criação de uma nova linguagem *Desde 2006 Thompson trabalha na Google, sendo co-criador de Go Prof. Fabio Alexandre Spanhol, M. Sc. 12
  • 13. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Background Histórico de C Prof. Fabio Alexandre Spanhol, M. Sc. 13
  • 14. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Background Histórico de C Prof. Fabio Alexandre Spanhol, M. Sc. 14 Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: "I'd spell creat with an e."
  • 15. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Padronização Por mais de uma década o padrão de C foi o livro de Kernighan e Ritchie, The C Programming Language (1978), a versão K&R C Prof. Fabio Alexandre Spanhol, M. Sc. 15
  • 16. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Padronização: ISO/ANSI 1983 – o American National Standards Institute (ANSI) instituiu um comitê para padronizar a linguagem 1989 - padronização finalizada, ANSI X3.159-1989, conhecida como C89 É maior base dos códigos escritos e versão suportada por quase todos os compiladores atuais Nosso curso será focado nessa versão! 1990 – torna-se padrão ISO, conhecida como C90 Prof. Fabio Alexandre Spanhol, M. Sc. 16
  • 17. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Padronização: ISO/ANSI 1999 – padrão C99 adiciona funções inline, novos tipos de dados (como complex), arrays de tamanho variável, comentários com //, etc. Não é suportado por todos os compiladores e alguns, parcialmente 2011 – o padrão iniciado em 2007, conhecido como C1X, é publicado e passa a ser conhecido como C11 novas features, macros de tipo genérico, estruturas anônimas, suporte melhorado a Unicode, operações atômicas, multi-threading, compatibilidade melhorada com C++ e etc. Prof. Fabio Alexandre Spanhol, M. Sc. 17
  • 18. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Motivação conhecimento prévio de C, embora não indispensável, representa uma vantagem para quem está interessado em programar em C++ e Java C é ideal para “turbinar” outras linguagens padrão ANSI para C existe desde 1989 o código escrito neste padrão tem validade em qualquer ambiente compatível Prof. Fabio Alexandre Spanhol, M. Sc. 18
  • 19. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Motivação programador C é um profissional valorizado em todo o mundo código C existente representa um patrimônio de muitos milhões de dólares • não pode ser simplesmente abandonado ou convertido em outras linguagens • conversão exigirá o trabalho de profissionais com excelente base em C Prof. Fabio Alexandre Spanhol, M. Sc. 19
  • 20. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Motivação A API MS-Windows foi especificada originalmente em C O Kernel Linux é implementado em C C está estreitamente relacionada com tudo que diz respeito ao mundo Unix Prof. Fabio Alexandre Spanhol, M. Sc. 20
  • 21. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Motivação C continua sendo a preferida para o desenvolvimento de sistemas embarcados (embedded systems) software que controla automóveis, fornos de microondas, aparelhos de Blu- Ray e outros dispositivos não- computacionais Prof. Fabio Alexandre Spanhol, M. Sc. 21
  • 22. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Características de C C é uma linguagem criada por programadores para programadores Procedural Modularizada (com funções) Científica Flexível Case sensitive Prof. Fabio Alexandre Spanhol, M. Sc. 22
  • 23. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Keywords de C O padrão C89 tem 32 Prof. Fabio Alexandre Spanhol, M. Sc. 23 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
  • 24. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Compiladores Existem vários compiladores C, proprietários e abertos, multiplataforma, etc. GCC C Clang Visual-C LabWindows/CVI Intel ICC Etc. Prof. Fabio Alexandre Spanhol, M. Sc. 24
  • 25. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Compilador Vamos adotar o compilador GCC (Gnu Compiler Collection) C, do projeto GNU licenciado sob GPL oferece front ends para C, C++, Objective-C, Fortran, Java, Ada e Go http://gcc.gnu.org/ Prof. Fabio Alexandre Spanhol, M. Sc. 25
  • 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ável chamado a.out Prof. Fabio Alexandre Spanhol, M. Sc. 26
  • 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 Cygwin Prof. Fabio Alexandre Spanhol, M. Sc. 27
  • 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Comentários São ignorados pelo compilador Utilizados para documentar o código-fonte /* comentario de varias linhas. */ // para comentário de uma linha, a partir do padrão C99 Prof. Fabio Alexandre Spanhol, M. Sc. 29
  • 30. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Um Hello World em C Prof. Fabio Alexandre Spanhol, M. Sc. 30
  • 31. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ E/S em C Não existem comandos internos para efetuar entrada e saída Mas, há a biblioteca padrão (C Standard Library) stdio.h que fornece recursos para manipulação de E/S Define macros, constantes, variáveis e dezenas de funções para manipulação de arquivos • Conceito de stream de bytes Prof. Fabio Alexandre Spanhol, M. Sc. 31
  • 32. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ E/S em C No modelo oriundo do Unix e adotado por C, stream é uma fonte ou destino de dados Três streams padrão estão disponíveis para o programa: stdin – entrada, normalmente teclado stdout – saída, normalmente terminal de vídeo stderr – erros, normalmente terminal de vídeo Prof. Fabio Alexandre Spanhol, M. Sc. 32
  • 33. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ E/S em C Mapeamento das streams padrão Prof. Fabio Alexandre Spanhol, M. Sc. 33
  • 34. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Saída em Terminais Texto Saída básica feita com a função printf, definida em stdio.h Lê os dados de uma origem, formata e escreve em stdout O parâmetro format é uma string indicando como os dados devem ser interpretados O retorno é a quantidade de caracteres escritos ou um valor negativo, em caso de erro Prof. Fabio Alexandre Spanhol, M. Sc. 34
  • 35. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Função printf Caracteres especiais (como quebra de linha) devem ser incluídos na string format com sequências de escape: c, sendo c um caractere Prof. Fabio Alexandre Spanhol, M. Sc. 35 Sequência resultado n nova linha r retorno de carro t tabulação horizontal barra invertida ' apóstrofo " aspas
  • 36. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Função printf No parâmetro format podem ser usados caracteres de conversão % seguido de um caractere Prof. Fabio Alexandre Spanhol, M. Sc. 36 caractere significado c Caractere único s string d ou i inteiro F ou f flutuante E ou e Flutuante notação exponencial o octal X ou x hexadecimal
  • 37. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Função printf Alguns caracteres de conversão em format aceitam sinalizadores que modificam o comportamento padrão Prof. Fabio Alexandre Spanhol, M. Sc. 37 Flag Ação - Justificado à esquerda + Justificado à direita . Precisão quando aplicado em flutuantes dígitos Define o tamanho do campo com o valor 0 Completa o campo com zeros ao invés de espaços
  • 38. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Função printf: Retorno Exemplo 1 Prof. Fabio Alexandre Spanhol, M. Sc. 38
  • 39. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Função printf: Formatação Prof. Fabio Alexandre Spanhol, M. Sc. 39
  • 40. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Entrada em Terminais Texto Entrada básica feita com a função scanf, definida em stdio.h Lê os dados de stdin, interpreta e armazena em uma posição de memória O parâmetro format é uma string indicando como os dados devem ser interpretados O retorno é a quantidade de caracteres atribuídos ou um EOF, em caso de erro Prof. Fabio Alexandre Spanhol, M. Sc. 40
  • 41. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Função scanf No parâmetro format podem ser usados caracteres de formatação % seguido de um caractere Prof. Fabio Alexandre Spanhol, M. Sc. 41 caractere significado c Caractere único s String SEM espaço d ou i inteiro F, f, G, g, E, e, A, a flutuante u Inteiro sem sinal o octal x hexadecimal
  • 42. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Tipos de Dados em C Somente 5 tipos primitivos char – um byte simples (8-bits) para armazenar um caractere ASCII int – valor inteiro, baseado no tamanho da palavra da má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éricos Prof. Fabio Alexandre Spanhol, M. Sc. 42
  • 43. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Tamanhos de Inteiros Dois qualificadores controlam o tamanho dos inteiros short int – versão ‘curta’ de um int long int – versão ‘longa’ de um int Regras short int <= int <= long int short int >= 16 bits int >= 16 bits long int >= 32 bits Prof. Fabio Alexandre Spanhol, M. Sc. 43
  • 44. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Tipos e Tamanhos Prof. Fabio Alexandre Spanhol, M. Sc. 44
  • 45. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Sinalização de Inteiros Qualificadores para inteiros unsigned – interpreta o valor iniciando em 0 • unsigned aumenta a faixa de valores disponíveis, use quando tiver certeza que não existirão negativos signed – permite números negativos *Cuidado: Misturar valores unsigned e signed pode gerar bugs! Prof. Fabio Alexandre Spanhol, M. Sc. 45
  • 46. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Booleanos em C? Não há um tipo booleano em C! Booleanos são implementados e avaliados como valores inteiro • TRUE = 1 • FALSE = 0 Convenção • 0 = FALSE • Não-zero = TRUE Prof. Fabio Alexandre Spanhol, M. Sc. 46
  • 47. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Variáveis Variáveis são rótulos simbólicos para posições de memória Definidas por Identificador Tipo de dados Em C, variáveis precisam ser declaradas antes de serem utilizadas! Prof. Fabio Alexandre Spanhol, M. Sc. 47
  • 48. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Variáveis: Declaração Podem ser declaradas fora da função main ou 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Constantes Constantes são valores rotulados, como variáveis, mas imutáveis (somente leitura) durante toda a execução do programa Evite o uso de números mágicos, use constantes! Podem ser criadas • 1) Qualificando variáveis com const • 2) Usando a diretiva #define Prof. Fabio Alexandre Spanhol, M. Sc. 49
  • 50. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Constantes Uma constante pode ser usada em qualquer operação que não altere o valor da mesma Exemplos com const Prof. Fabio Alexandre Spanhol, M. Sc. 50
  • 51. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Constantes Também é possível usar a diretiva de pré- processamento #define criando uma macro Use com cautela • Macro substituição, não há tipagem • não podem ser referenciados diretamente depois • Não são acessíveis ao debbuger Vantagem: menor espaço em memória Pode ser interessante para sistemas limitados Prof. Fabio Alexandre Spanhol, M. Sc. 51
  • 52. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Constantes As macros são expandidas pelo pré- processador A ocorrência do identificador é substituída pela constante Exemplos com #define Prof. Fabio Alexandre Spanhol, M. Sc. 52
  • 53. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operadores Aritméticos Prof. Fabio Alexandre Spanhol, M. Sc. 53 Avaliam e retornam um valor numérico Operador 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 ou a++ -- Decremento. Versão pré e pós fixada ++a ou a++
  • 54. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operadores Relacionais Prof. Fabio Alexandre Spanhol, M. Sc. 54 Avaliam e retornam um valor booleano Operador 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operadores Lógicos Prof. Fabio Alexandre Spanhol, M. Sc. 55 Avaliam e retornam um valor booleano Operador 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operadores Bit-a-bit Prof. Fabio Alexandre Spanhol, M. Sc. 56 Operam sobre os bits individuais do operando Operador 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operadores Bit-a-bit No trecho de código seguinte, a expressão a && b resulta 1 (valor lógico verdade) e a & b resulta 4 Prof. Fabio Alexandre Spanhol, M. Sc. 57
  • 58. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Atribuição Valores constantes, resultados de chamadas de funções ou resultados de expressões podem ser armazenados em variáveis usando o operador de atribuição (=) Prof. Fabio Alexandre Spanhol, M. Sc. 58
  • 59. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Atribuição Combinada O operador de atribuição pode ser combinado com os operadores aritméticos e bit-a-bit, compactando a instrução Prof. Fabio Alexandre Spanhol, M. Sc. 59 Instrução Substituição Possível a = a + b a += b a = a - b a -= b a = a * b a *= b a = a / b a /= b a = a % b a %= b a = a & b a &= b a = a || b a ||= b ...