Anda di halaman 1dari 71

/*******************************************************

*
*
*
*
*
*
*
****************************************************

*
*
Nomes: Bruna Fernandes, Gabriel Pereira, Matheus Millis

*
*******************************************************/
void Histria();

void Caractersticas();

void Curiosidades();

void Aplicaes();

void Referncias();
Histria (){
Criada em 1972 por Dennis Ritchie no
laboratrio Bell Telephone Labs da AT&T, para
ser utilizada no sistema operacional Unix;

Baseada na linguagem B, desenvolvida por Ken


Thompson(1970);

Fonte: http://www.gripinit.com/wp-content/uploads/2015/02/evolution-of-c.jpg
Acesso em 09/10/2016.
Ken Thompson(esq.) e Dennis Ritchie(dir.)

Fonte: http://linuxbeard.com/post/6855753580/ken-thompson-and-dennis-ritchie-were-researchers
Acesso em 09/10/2016.
Dennis Ritchie e Ken
Thompson reescreveram
o UNIX em C(1972) num
computador DEC PDP-
11;

Verso conhecida como


K&R C.
Fonte:
https://upload.wikimedia.org/wikipedia/commons/
e/ee/Pdp-11-40.jpg
Acesso em 09/10/2016.
American National Standards Institute - 1980

C89/90
C99
C11
Primeira edio - 1978 Segunda edio 1988

Fonte:
https://en.wikipedia.org/wiki/The_C_Programming_La Fonte:
nguage#/media/File:The_C_Programming_Language, https://en.wikipedia.org/wiki/File:The_C_Programm
_First_Edition_Cover_(2).svg ing_Language_cover.svg
Acesso em 09/10/2016. Acesso em 09/10/2016.
Compiladores para Windows/Linux/Mac Os

}
Caractersticas (){
O C "Case Sensitive"!

Ponto de suma importncia: o C "Case Sensitive", isto ,


maisculas e minsculas fazem diferena.

Exemplo: Uma varivel com o nome soma ser diferente


de Soma, SOMA, SoMa ou sOmA.

Da mesma maneira, os comandos do C if e for, por


exemplo, s podem ser escritos em minsculas pois
seno o compilador no ir interpret-los como sendo
comandos, mas sim como variveis.
//Bibliotecas (Arquivos de Cabealho)
So os arquivos de cabealho que possibilitam o uso das
funes em C. Quando voc abre um documento no Dev-
C++ por exemplo, dois arquivos de cabealho (tambm
conhecidos como bibliotecas) so includos
automaticamente:

#include <stdio.h>
#include <stdlib.h>

Bibliotecas so includas com o uso de #include. O nome


da biblioteca sempre estar entre < > e sempre terminar
com .h, pois no possuem cdigo, apenas cabealhos
(headers files). Por no ser C, no seguida de ;.
A biblioteca stdio responsvel por funes de entrada e
sada de dados (funes printf e scanf). O termo stdio
quer dizer standard input/output.

J a biblioteca stdlib responsvel pela converso de


strings para nmeros, gerenciamento de alocao
dinmica na memria e o uso da funo system().

Existem outras bibliotecas que devem ser adicionadas para


o uso de determinadas funes:

#include <ctype.h> // classificao e transformao de


caracteres
#include<math.h> // uso de operaes matemticas
#include<string.h> // manipulao de strings
#include<time.h> // manipulao de datas e horas
//Funo main( )

Funo main() a funo principal do programa.

por ela que se inicia a execuo do programa.

O cabealho da funo main dividido em trs


partes:

main (int argc, char *argv [])


Int: indica o tipo de valor produzido pela funo,
o valor que a funo retornar, neste caso um
valor inteiro;

Main: indica o nome da funo. Neste caso, a


funo principal;

(int argc, char *argv []): lista de parmetros da


funo
//Instrues Simples e Compostas

Na linguagem C o ponto e vrgula ; o


terminador de instrues.

As chavetas { } so usadas agrupar instrues


em instrues compostas ou blocos de modo a
serem sintaticamente equivalentes a uma
instruo nica. Assim uma instruo em
sentido lato pode ser:

Uma nica instruo.


Um conjunto de instrues.
Nenhuma instruo (instruo vazia).
Uma instruo composta ou bloco tem a
estrutura:

declaraes (opcional)
instrues

}
//Entrada e sada de dados

A sada de dados (impresso na tela) geralmente


realizada pela funo printf():

printf(Digite o nome do funcionrio: );

O printf() sempre mandar para a tela o que houver


entre seus parnteses.
A entrada de dados (recepo dos dados digitados)
responsabilidade da funo scanf():

scanf(%i,&numFunc);

Em scanf(), o uso de especificadores de formato


obrigatrio, pois ele define na memria se o espao
a ser reservado ser para um nmero inteiro ( %i ou
%d ), real ( %f ), um caractere ( %c ) , uma cadeia
de caracteres (strings) ou uma notao cientfica.
Aps a vrgula, vem o endereo onde essa varivel
ser alocada, obrigatoriamente precedido do sinal
&.
//Estruturas de Deciso

//Instruo if...else
Uma das estruturas de deciso a instruo if que
admite diversas variantes. A forma genrica desta
instruo :
Sendo o else opcional. A condio
uma expresso que avaliada. Se for
if (condio) verdadeira (tiver um valor no nulo)
instruo 1; executada a instruo 1, se for falsa e
existir o else ento executada a
instruo 2. claro que cada uma
else destas instrues pode ser na
instruo 2; realidade um bloco delimitado por
chavetas.
//Instruo else...if

Uma construo comum em C so os else..ifs encadeados.


A sua sintaxe :
if (condio 1)
instruo 1;

else if (condio 2)
instruo 2;

else
instruo 3;

Esta sequncia de else..ifs uma maneira de implementar


uma deciso mltipla.
//Instruo Switch
A sintaxe desta instruo :
Apesar da instruo else..if
permitir construir uma switch (varivel)
estrutura de escolha {
mltipla, o C fornece uma
case exp_1 : instr_1;
instruo especfica para break ;
isso, a instruo switch. case exp_2 : instr_2;
break ;

Nesta instruo testada ...


sucessivamente uma varivel
para verificar se coincide default : instr_n; break
;
com uma lista de valores
inteiros (ou caracteres). }
Cada um dos casos rotulado por uma ou mais constantes
inteiras ou expresses com constantes, i. e., exp_i pode ser
um inteiro, uma carcter ou uma expresso de constantes.

Se a varivel coincidir com um dos casos a execuo


comea a partir desse ponto. Todos os casos exp_i tm de
ser diferentes.

O caso com rtulo default executado se no houver mais


nenhuma coincidncia.

O uso de default opcional, se no for usado e nenhuma


coincidncia for encontrada no ser executada nenhuma
ao.
//Estruturas de Repetio ou Ciclos

//Lao for

O loop (lao) for usado para repetir um comando, ou


bloco de comandos, diversas vezes, de maneira que se
possa ter um bom controle sobre o loop. Sua forma
geral :

for (inicializao ; condio ; incremento) declarao;

A declarao no comando for tambm pode ser um


bloco ({ }) e neste caso o ; omitido.
A declarao no comando for tambm pode ser
um bloco ({ }) e neste caso o ; omitido.

O melhor modo de se entender o loop for ver de


que maneira ele funciona "por dentro". O loop for
equivalente a se fazer o seguinte:

inicializao;
if (condio)
{
declarao;
incremento;
"Volte para o comando if"
}
observvel que o for executa a inicializao
incondicionalmente e testa a condio:

Se a condio for falsa ele finaliza.

Se a condio for verdadeira ele executa a


declarao, o incremento e volta a testar a condio.

O lao repete estas operaes at que a condio


seja falsa.
//Lao while

O comando while permite que um certo trecho


de programa seja executado enquanto uma
certa condio for verdadeira.

A forma do comando while a seguinte:


while (condio)
{
// comandos a serem repetidos
// comandos a serem repetidos
}
// comandos aps o 'while'
O funcionamento o seguinte:

Testa a condio:

Se a condio for falsa ento pula todos os comandos


do bloco subordinado ao while e passa a executar os
comandos aps o bloco do while.

Se condio for verdadeira ento executa cada um dos


comandos do bloco subordinado ao while.

Aps executar o ltimo comando do bloco do while, o


lao volta a repetir.
O comando while deve ser usado sempre que:

No soubermos exatamente quantas vezes o lao


deve ser repetido;

O teste deva ser feito antes de iniciar a execuo de


um bloco de comandos;

Houver casos em que o lao no deva ser repetido


nenhuma vez.
//Lao do...while

O comando do...while permite que um certo


trecho de programa seja executado enquanto
uma certa condio for verdadeira.

A forma do comando do...while a seguinte:

do
{
// comandos a serem repetidos
// comandos a serem repetidos
} while (condio);
// comandos aps o 'do...while'
O funcionamento o seguinte:

Executar os comandos dentro do bloco do-while;

Testa a condio;
Se a condio for falsa ento executa o comando que
est logo aps o bloco subordinado ao do-while;

Se a condio for verdadeira ento volta a repetir.


O comando do...while deve ser usado sempre
que:

No soubermos exatamente quantas vezes o lao


deve ser repetido;

O teste deva ser feito depois da execuo de um


bloco de comandos;

o bloco de comandos deve se executado pelo


menos 1 vez;
//Comentrios

Os comentrios em C so iniciados pelos caracteres /* e


terminados por */, para que se possa efetuar alguma
observao sobre aquela linha de cdigo ou um conjunto,
assim podendo posteriormente acessar o cdigo e saber
para o que exatamente aquela linha serve e ou outra
pessoa que use o cdigo identifique.

Comentrios tambm podem ser feitos aps os caracteres


//. Esse formato utilizado para comentrios curtos, que
podem ser feitos na mesma linha dos comandos:

int nomeFunc; //varivel para nome do funcionrio


char sexoFunc; //varivel que define o sexo do funcionrio
//Funo system(pause) e comando
return
Um programa em linguagem C sempre finalizado da
seguinte maneira:
system(pause);
return 0;
A funo system() com o parmetro pause permite que o
usurio veja os resultados antes que a janela seja fechada.
Sem essa funo, o programa seria executado e a janela
seria automaticamente fechada.

O comando return indica o trmino da funo main(). O


retorno do valor 0 (positivo) indica que o programa foi
executado normalmente, enquanto o retorno de um valor
negativo indicaria erro.
//Vetores
O vetor uma estrutura de dados indexada, que pode
armazenar uma determinada quantidade de valores do
mesmo tipo.

Os dados armazenados em um vetor so chamados de


itens do vetor.

Para localizar a posio de um item em um vetor usamos


um nmero inteiro denominado ndice do vetor.

Vantagem de utilizao do vetor:

Facilidade de manipular um grande conjunto de dados


do mesmo tipo declarando-se apenas uma varivel.
Uso no Pseudocdigo

NomeDoVetor: Vetor[inicio..final] de tipodevariavel

Exemplo:

V: vetor[0..9] de Real;

Uso em linguagem C

Sintaxe:

Tipo NomeDoVetor[quantidade_de_itens];
Exemplo:

Declarao do vetor do tipo float com 10 nmeros:

float V[10];
Pode-se dizer que em C:

A primeira posio de um vetor tem ndice


zero.

A ltima posio de um vetor tem ndice igual


ao nmero de posies menos 1.
//Declarando e inicializando de vetores

Exemplo:

Pode-se declarar e inicializar um vetor com um


tamanho constante, como abaixo:

int numeros[5] = {10, 20, 30, 40, 50};


//Estruturas

Estruturas em C, permitem colocar, dentro de um nico


elemento, variveis de diferentes tipos.

Uma estrutura um conjunto de variveis agrupadas sob


um mesmo nome para facilitar a referncia. Ela pode
conter qualquer tipo de dado vlido em C.

Sintaxe: Exemplo:

struct [nome_da_estrutura] struct Data


{ {
tipo1 campo1, campo2; int Dia, Ano;
tipon campo1, campo2; char Mes[12];
}; };
Aps a declarao, o compilador toma
conhecimento de outro tipo denominado
struct Data, que, por sua vez, composto por
dois inteiros e um vetor de caracteres.

importante destacar que Data no uma


varivel e sim o nome da nova definio de
tipo de dados.
//Varivel do tipo da estrutura

Para declarar uma varivel do tipo struct basta indicar


o tipo seguido do nome das variveis.

Exemplo:

struct Data d, datas [100];

onde:

d do tipo struct Data;


datas um vetor, e em cada uma das posies deste
h uma estrutura do tipo struct Data
//Acesso aos membros

Para acessar um membro de uma struct utiliza-se o


operador . .

Exemplo:
struct Data {
int dia, ano;
char mes [12];
}dt_nasc;

dt_nasc.dia = 23;
dt.nasc.mes = Janeiro;
dt_nasc.ano = 1966;
printf(Data: %d/%s/%d\n,dt_nasc.dia,dt_nasc.mes,dt_nasc.ano);
//Funes

A forma da funo visa a modularizao do cdigo,


caracterstica presente em linguagem estruturada.

Quando precisamos usar a funo no cdigo


invocamos ela pelo seu nome.

As variveis podem ter o mesmo nome de variveis


da funo main ( ), pois so locais.
A sintaxe para criao de uma funo a seguinte:

tipo_de_retorno nome_da_funo ()
{

//Instrues

//Retorno

}
Passagem de parmetros: Variveis declaradas
diretamente no cabealho da funo (quando precisamos
interligar a funo criada com a funo main().

No so obrigatrios;

Podem ser feitos por referncia (os dados na varivel


so alterados);

Exemplo de declarao: Exemplo de chamada da funo:

main(){
void altera_valor (int *num){ int num = 0;

num = 2; //num vale 2 altera_valor (&num); /* Passa


endereo da varivel */
}
}
Por valor (os valores das variveis no so
alterados pela funo):

Exemplo de cabealho:

void soma (int num, int num1){

printf(Resultado: %i,num+num1);

Exemplo de chamada da funo:

main(){

int num = 1, num1 = 2;

soma ( num, num1 ); /* Passa o valor da varivel, sem alter-la */


Funo sem retorno: Quando preciso executar um
comando ou um bloco e no necessrio retornar
nada. Utilizamos o tipo de retorno void antes do
nome da funo.

Exemplo:

void impressao (void) {

printf (" FUNO SEM RETORNO \n");

}
Funo com retorno: As funes podem retornar
valores de determinado tipo.

Exemplo:

int multiplica (int num, int num1){ /*Retorna um


valor inteiro */
int res; //Varivel para armazenar o valor da operao
res = num * num1;
return res;
}
O retorno pode ser armazenado em uma varivel do
mesmo tipo da funo.

Exemplo:

main(){
int num, num1, resultado;
//Comandos
resultado = multiplica ( num , num1 ); /* A
varivel resultado receber o valor da funo */
}

}
Curiosidades (){
A linguagem recebe esse nome pois derivada da
linguagem B;

Java e C#, por exemplo, foram influenciadas pela


linguagem C;

Possui alto desempenho de execuo, pois opera


prxima ao hardware (mdio nvel);

uma das linguagens mais requisitadas pelo mercado;

Pode ser compilada em diferentes plataformas (em


virtude do padro ANSI);
a segunda linguagem mais utilizada no
mundo;

Fonte: http://www.tiobe.com/tiobe-index/
Acesso em 25/09/2016.
O uso do termo Hello World foi feito por Brian
Kernighan (ajudou a documentar a linguagem
BCPL) no livro The C Programming Language
para explicar o uso de entradas e sadas;

Fonte: http://www.timetoast.com/timelines/linha-de-tempo-linguagem-dos-programas
Acesso em 08/10/2016
Permite ao programador escrever cdigos com
a forma que desejar;

Fonte: Damas, Lus. Linguagem C. 10 edio. LTC. Janeiro 1999


Permite ao programador visualizar os endereos
de memria;
de propsito geral (no h uma rea de
desenvolvimento especfico;

Surgiu com o advento da programao estruturada e


do computador pessoal;

Evoluiu para linguagens com orientao objetos


como por exemplo C++, que possui a mesma sintaxe,
porm com caractersticas adicionais;

No necessrio, geralmente, conhecer o processador


para programar em C;

possvel utilizar instrues de Assembly em C (para


isso necessrio conhecer o processador);
}
Aplicaes (){
Na criao de sistemas operacionais:

Exemplo: Unix, algumas partes do Linux e seu


Kernel, algumas partes do Windows, o Kernel do
Android (baseado em Linux);

Sistemas embarcados;

Drivers de alguns dispositivos como placas de


rede, som, vdeo, etc;
mbito acadmico;

Programao de hardwares;
Exemplo: Arduino.

Fonte: https://upload.wikimedia.org/wikipedia/commons/7/71/Arduino-uno-perspective-transparent.png
Acesso em 09/10/2016.
Mario Theme.

}
Referncias (){
http://www.inf.pucrs.br/~pinho/LaproI/Historico/Historico.htm
Acessado em 24/09/2016;

https://sergioprado.org/linguagem-c-historia-e-padroes/
Acessado em 25/09/2016;

http://linguagemc.com.br/breve-historia-da-linguagem-c/
Acessado em 25/09/2016;

http://www.dinocomp.com.br/index.php?page=shop.product_details&category_id=7
&flypage=shop.flypage&product_id=69&option=com_virtuemart&Itemid=29
Acessado em 26/09/2016;

http://www.ime.usp.br/~slago/slago-C.pdf
Acessado em 26/09/2016;
http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node122.html
Acessado em 27/09/2016;

http://c-faq.com/ansi/ansi1.html
Acessado em 27/09/2016;

http://fresh2refresh.com/c-programming/c-language-history/
Acessado em 27/09/2016;

https://upload.wikimedia.org/wikipedia/commons/e/ee/Pdp-11-40.jpg
Acessado em 27/09/2016;

http://linuxbeard.com/post/6855753580/ken-thompson-and-dennis-ritchie-were-
researchers
Acessado em 27/09/2016;

http://linguagemc.com.br/breve-historia-da-linguagem-c/
Acessado em 06/10/2016;

http://www.tiexpert.net/programacao/algoritmo/lista-compiladores-c.php
Acessado em 09/10/2016;

https://gcc.gnu.org/
Acessado em 09/10/2016;
http://www.eclipse.org/org/
Acessado em 09/10/2016;

https://upload.wikimedia.org/wikipedia/en/thumb/5/5e/The_C_Programming_Lan
guage_cover.svg/792px-The_C_Programming_Language_cover.svg.png
Acessado em 09/10/2016;

http://www.ime.usp.br/~pf/Kernighan-Ritchie/C-Programming-Ebook.pdf
Acessado em 09/10/2016;

https://upload.wikimedia.org/wikipedia/commons/9/95/The_C_Programming_Lang
uage%2C_First_Edition_Cover_%282%29.svg
Acessado em 09/10/2016;

https://en.wikipedia.org/wiki/File:The_C_Programming_Language_cover.svg
Acessado em 09/10/2016;

Damas, Lus. Linguagem C. 10 edio. LTC. Janeiro 1999;

http://linguagemc.com.br/breve-historia-da-linguagem-c/
Acessado em 24/09/2016;

http://tecnologia.hsw.uol.com.br/programacao-em-c23.htm
Acessado em 26/09/2016;
https://alinguagemc.wordpress.com/2013/10/21/a-linguagem-c-nos-dias-atuais/
Acessado em 24/09/2016;

http://www.dicasdeprogramacao.com.br/as-10-linguagens-de-programacao-mais-
requisitadas-pelo-mercado/
Acessado em 24/09/2016;

http://www.tiobe.com/tiobe-index/
Acessado em 25/09/2016;

http://canaltech.com.br/materia/programacao/c-a-linguagem-de-programacao-
que-esta-em-tudo-o-que-voce-usa-19512/
Acessado em 25/09/2016;

https://coolerlab.wordpress.com/2012/04/07/um-pouco-de-assembly-com-
linguagem-c/
Acessado em 25/09/2016;

http://cienciacomputacao.com.br/curiosidade/a-origem-do-hello-world/
Acessado em 26/09/2016;

http://www.cursoemvideo.com/blog/hello-world-origem/
Acessado em 29/09/2016;
http://www.timetoast.com/timelines/linha-de-tempo-linguagem-dos-programas
Acessado em 09/10/2016;

http://pt.wikihow.com/Fazer-um-Sistema-Operacional-de-Computador
Acessado em 25/09/2016;

http://www.programacaoprogressiva.net/2012/08/comece-programar-linguagem-
de_3132.html
Acessado em 26/09/2016;

http://www.embarcados.com.br/editorial-linguagens-para-sistemas-embarcados/
Acessado em 26/09/2016;

http://blog.novaeletronica.com.br/qual-diferenca-entre-microprocessador-e-
microcontrolador/
Acessado em 26/09/2016;

http://www.mentebinaria.com.br/artigos/0x13/0x13-cfaculdade.html
Acessado em 26/09/2016;

https://updatedcode.wordpress.com/2012/01/24/jogos-em-c-usando-a-biblioteca-
allegro/
Acessado em 26/09/2016;
http://www.embarcados.com.br/editorial-linguagens-para-sistemas-embarcados/
Acessado em 09/10/2016;

https://blogdecodigo.wordpress.com/2011/07/12/linguagem-c-bibliotecas-funcoes-
main-printf-scanf-e-mais-drops-i/
Acessado em 26/09/16;

https://books.google.com.br/books?hl=pt-
BR&lr=&id=LfUQai78VQgC&oi=fnd&pg=PR5&dq=linguagem+c&ots=KX-
aT12ys7&sig=GdH5DTcEwuxzxhSJ3IeFTm-
ixqU#v=onepage&q=linguagem%20c&f=false
Acessado em 26/09/16;

http://linguagemc.com.br/vetores-ou-arrays-em-linguagem-c/
Acessado em 28/09/16;

http://linguagemc.com.br/funcoes-em-c/
Acessado em 12/10/2016.

Anda mungkin juga menyukai