Escolar Documentos
Profissional Documentos
Cultura Documentos
Exemplo de um Programa
// Exemplo de programa em C
// Isto é uma linha de comentário
void main()
{
int a; // declara a variável "a"
a = 3 + 2; // soma 3 com 2
}
Variáveis
Uma variável é uma possição de memória que pode
ser identificada através de um nome.
Podem ter seu conteúdo alterado por um comando
de atribuição.
Após a atribuição mudam de valor.
int a,b, SomaGeral;
a = 3; // a recebe o valor 3
b = a * 2; // b recebe o dobro do valor de a
c = a + b + 2; // c recebe 11
Tipos de Variáveis
Todas as variáveis em C tem um tipo;
Cada tipo define os valores que a variável pode
armazenar;
Cada tipo ocupa uma certa quantidade de
nemória.
Tipo Valores Válidos
char letras e símbolos: 'a', 'b', 'H', '^', '*','1','0'
int de -32767 até 32767 (apenas números inteiros)
float de -3.4 x 1038 até +3.4 x 10+38com até 6 dígitos de precisão
double de -1.7 x 10308 até +1.7 x 10+308com até 10 dígitos de precisão
Declaração de Variáveis
Todas as variáveis tem que ser
declaradas antes de serem usadas;
Não há uma inicialização implícita na
declaração
// Exemplo de programa em C
Exemplos
Strings
Uma String é uma sequência de caracteres entre
aspas duplas: "exemplo de uma string em C".
A função printf
A função printf exibe um ou mais dados na tela. Para tanto ele deve
receber pelo menos dois parâmetros, separados por vírgula:
Por exemplo:
printf("%s","teste");
Por exemplo:
Exercício
O exemplo
printf("A aluna %s ficou
doente","Maria");
geraria
A aluna Maria ficou doente
como resultado.
Contador = 10;
printf("Valor da Variável: %d\n", Contador); // No momento da
execução sinal %d vai
// ser substituído pelo
valor da
// variável Contador
NroDeFilhos = 3;
printf("Maria tem %d filhos", NroDeFilhos); // o inteiro pode
ficar no meio da string
getch(); // espera que o usuário pressione uma tecla
}
Isto sempre acontece quando se manda imprimir um float da forma como foi
feito no exemplo acima. Isto acontece pois o padrão da função printf é
completar o número com zeros à direita, até que fique com seis casas
decimais.
#include <stdio.h>
#include <conio.h>
void main()
{
float NotaDaP1, NotaDaP2;
float Media;
Por exemplo:
#include <stdio.h>
#include <conio.h>
void main()
{
float Numero;
Numero = -2.5;
clrscr();
printf("1234567890\n");
printf("%7f\n", Numero);
printf("%7.0f\n", Numero);
printf("%7.3f\n", Numero);
printf("%8.3f\n", Numero);
printf("%9.3f\n", Numero);
printf("\n");
printf("%8.4f\n", Numero);
printf("%8.1f\n", Numero);
printf("%6.12f\n", Numero);
getch();
}
// Resultados
1234567890
-2.500000
-2
-2.500
-2.500
-2.500
-2.5000
-2.5
-2.500000000000
void main()
{
char Nome[30]; // declara uma string que poderá armazenar até 29
caracteres !!
clsrscr();
strcpy(Nome, "Jose da Silva"); // atribui "Jose da Silva" para a
variável Nome
printf("O funcionário %s foi tranferido", Nome); // no lugar de %s
aparecerá o
// conteúdo da
variável Nome
getch();
}
Operadores Aritméticos
- sinal de menos (unário) Maior
precedência
(avaliado
antes)
*,/ multiplicação e divisão
% módulo (reto da divisão)
+,- soma e subtração Menor
precedência
(avaliado
depois)
Exercício
Crie um progama que organize os dados em uma tabela conforme o exemplo a
seguir. Os dados das células em amarelo deve ser informados através de
atribuições dentro do programa.
ou invés de
printf(" %d", QuantidadeDeBananas);
C (linguagem de programação)
Origem: Wikipédia, a enciclopédia livre.
Surgido em 1972
Índice
1História
o 1.1C K&R
o 1.2ANSI C e ISO C
o 1.3C99
o 1.4C11
2Visão geral
o 2.1Tipos de dados
3Relações com C++
4Exemplos
o 4.1Programa Olá Mundo
o 4.2Matemática
o 4.3Estruturas de dados
5Ferramentas de programação
6Ver também
7Referências
8Ligações externas
Ken Thompson e Dennis Ritchie (da esquerda para direita), os criadores das linguagens B e C,
respectivamente.
O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973.[6] de acordo com
Ritchie, o período mais criativo ocorreu em 1972. A linguagem foi chamada "C", porque suas
características foram obtidas a partir de uma linguagem anteriormente chamado de "B", que de
acordo com a Ken Thompson era versão reduzida da linguagem de programação BCPL.[7]
A versão original PDP-11 do sistema Unix foi desenvolvido em assembly. Em 1973, com a adição
dos tipos struct , a linguagem C tornou-se poderosa o suficiente para que a maior parte
do kernel do Unix fosse reescrito em C. Este foi um dos primeiros núcleos de sistemas operacionais
implementados numa linguagem diferente da linguagem Assembly. Em 1977, foram feitas novas
mudanças por Ritchie e Stephen C. Johnson para facilitar a portabilidade do sistema operacional
Unix. O Portable C Compiler de Johnson serviu de base para várias implementações de C em novas
plataformas.[8]
C K&R[editar | editar código-fonte]
A linguagem C não teve um sucesso imediato após a sua criação e o seu uso ficou restrito a alguns
laboratórios,[9] mas em 1978 Brian Kernighan e Dennis Ritchie lançam o livro The C Programming
Language.[10] que serviu de tutorial e mudou a história da programação em C. De fato essa primeira
versão da linguagem é conhecida como "C Kernigham e Ritchie" ou apenas "C K&R".[11]
Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos anos como
uma especificação informal da linguagem. A versão da linguagem C que ele descreve é usualmente
referida como "K&R C". A segunda edição do livro cobriu o padrão posterior, o ANSI C. K&R C
introduziu as seguintes características na linguagem:
Funções em linha
Remoção de restrições sobre a localização da declaração de variáveis (como em C++)
Adição de vários tipos de dados novos, incluindo o long long int (para minimizar
problemas na transição de 32-bits para 64-bits), um tipo de dados boolean explicito
(chamado _Bool) e um tipo complex que representa números complexos
Vetores de dados de comprimento variável (o vetor pode ter um tamanho diferente a cada
execução de uma função, mas não cresce depois de criado)
Suporte oficial para comentários de uma linha iniciados por // , emprestados da linguagem
C++
Várias funções de biblioteca novas, tais como snprintf()
Vários ficheiros-cabeçalho novos, tais como stdint.h
O interesse em suportar as características novas de C99 parece depender muito das entidades. Apesar
do GCC e vários outros compiladores suportarem grande parte das novas características do C99, os
compiladores mantidos pela Microsoft e pela Borland suportam pouquíssimos recursos do C99, e
estas duas companhias não parecem estar muito interessadas em adicionar tais funcionalidades,
ignorando por completo as normas internacionais. A Microsoft parece preferir dar mais ênfase ao
C++.[12]
C11[editar | editar código-fonte]
Em 2007, se iniciou o trabalho em antecipação de outra revisão do padrão de C, informalmente
chamada de C11 ou C1X. O comitê dos padrões de C adotou regras para limitar a inserção de novos
recursos que não tenham ainda sido testados por implementações existentes.[13]
Em dezembro de 2011 foi publicada a versão estável da especificação, como ISO/IEC 9899:2011.
Segurança de tipo
Coletor de lixo (mais comum em linguagens interpretadas)
Vetores que crescem automaticamente
Classes ou objetos com comportamento (ver Orientação a objetos)
Clausuras
Funções aninhadas
Sobrecarga de operadores
Meta-programação
Apoio nativo de multithreading e comunicação por rede
Apesar da lista de características úteis que C possui não ser longa, isso não tem sido um
impedimento à sua aceitação, pois isso permite que novos compiladores de C sejam escritos
rapidamente para novas plataformas, e também permite que o programador permaneça sempre em
controle do que o programa está a fazer. Isto é o que por várias vezes permite o código de C correr
de uma forma mais eficiente que muitas outras linguagens. Tipicamente, só código de Assembly
"afinado à mão" é que corre mais rapidamente, pois possui um controle completo da máquina, mas
avanços na área de compiladores juntamente com uma nova complexidade nos processadores
modernos permitiram que a diferença tenha sido rapidamente eliminada. Uma consequência da
aceitação geral da linguagem C é que frequentemente os compiladores, bibliotecas e
até interpretadores de outras linguagens sejam implementados em C.
C tem como ponto forte a sua eficiência, e é a linguagem de programação preferida para o
desenvolvimento de sistemas e softwares de base, apesar de também ser usada para
desenvolver programas de computador. É também muito usada no ensino de ciência da computação,
mesmo não tendo sido projetada para estudantes e apresentando algumas dificuldades no seu uso.
Outra característica importante de C é o seu código resultante em Assembly ter funcionamento
idêntico ao código fonte, que permite que um projetista seja capaz de fazer algumas previsões de
como o software irá se comportar ao ser executado.
O ponto negativo de C está na possibilidade do programador cometer erros graças a liberdade que a
linguagem oferece. Por exemplo é possível acessar área de memória que não pertence a um vetor ao
acessar um índice maior que seu tamanho, possibilitando que ocorra um buffer overflow. Isto
acontece em C porque o dever de controlar a memória está nas mãos do programador. O motivo de
C dar total controle para o programador é porque a linguagem foi projetada para programar o sistema
operacional UNIX, onde havia a necessidade desse controle sobre a forma como o sistema iria
funcionar. [2]
Tipos de dados[editar | editar código-fonte]
C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem ALGOL, tais
como Pascal. Possui tipos para números inteiros de vários tamanhos com e sem sinal, números de
ponto flutuante, caracteres e estruturas ( struct s). C usa extensivamente ponteiros, um tipo muito
simples de referência que guarda o endereço de memória da variável. O ponteiro pode
ser desreferenciado, uma operação que busca o objeto que se encontra na morada da memória que o
ponteiro possui, morada essa que pode ser manipulada através de aritmética de ponteiros. Durante
o tempo de execução, o ponteiro é simplesmente uma morada de máquina tais como aquelas
manipuladas em Assembly, mas em tempo de compilação possui um tipo complexo que indica o tipo
do objecto para onde ele aponta, permitindo que se verifique o tipo de expressões, incluindo
ponteiros. O tipo "string" (cadeia ou linha de texto) de C é simplesmente um ponteiro para um vetor
de caracteres e alocação dinâmica de memória, descrita abaixo, é efetuada através de ponteiros.
Os ponteiros em C possuem um valor reservado especial, NULL , que indica que não estão a apontar
para uma morada. O uso desse valor como morada é muito útil na construção de várias estruturas de
dados, mas causa comportamento não-definido (possivelmente uma falha de sistema) ao ser
desreferenciado. Um ponteiro que possui o valor NULL é chamado ponteiro nulo. Os ponteiros são
declarados (e desreferenciados) com um * (asterisco), portanto o tipo int* denota um ponteiro para
número(s) inteiro(s). A linguagem C também fornece um tipo especial de ponteiros, o void*, que se
traduz num ponteiro que aponta para um objeto de tipo desconhecido.
A linguagem C também tem apoio em nível de linguagem para vetores estáticos (de dimensão fixa)
de tipos. As disposições de tipos podem parecer ter mais que uma dimensão apesar de serem
tecnicamente disposições de disposições de tipos. Em memória, tais estruturas são posicionadas com
as linhas uma depois da outra (a alternativa seria armazenar os dados em colunas, usado em outras
linguagens). O acesso a disposições de tipos é feito através de ponteiros e aritmética de ponteiros; o
nome da disposição é tratado como se fosse um ponteiro que aponta para o início da disposição. Em
certas aplicações não é razoável usarem-se disposições de tipos de dimensão fixa e por isso a
alocação dinâmica de memória pode ser usada para criar disposições de tipos de dimensão variável.
Como a linguagem C é regularmente usada em programação de baixo-nível de sistemas, há casos em
que é necessário tratar um número inteiro como sendo um ponteiro, um número de ponto flutuante
como sendo um número inteiro ou um tipo de ponteiro como sendo outro. Para estes casos, a
linguagem C fornece a capacidade de "moldagem" (também denominado "conversão de tipo" ou
"casting"), uma operação que, caso seja possível, força a conversão de um objeto de um tipo para
outro. Apesar de ser por vezes necessário, o uso de conversões de tipo sacrifica alguma segurança
oferecida pelo sistema de tipos.
int
O tipo de dado int (inteiro) serve para armazenar valores numéricos inteiros. Existem vários tipos de
inteiros, cada um de um tamanho diferente (dependendo do sistema operacional e/ou arquitetura do
processador):
Todos estes tipos de inteiros podem ainda ser declarados precedidos da cláusula unsigned, o que faz
com que só suporte números positivos. Isto faz com que, com o mesmo tamanho, uma variável
suporte mais números positivos do que um signed (todos os inteiros são signed por omissão).
char
O tipo char ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso significa que o
programa reserva um espaço de 8 bits na memória RAM ou em registradores do processador para
armazenar um valor (char de tamanho maior que 8 bits é permitido pela linguagem, mas os casos
são raros). Com vetores do tipo char é possível criar cadeias de caracteres (strings).
float
O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais.
O padrão mais utilizado nos últimos 10 anos é o IEEE 754-1985.
double
O tipo de dado double serve para armazenar números de ponto flutuante de dupla precisão,
normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade. O padrão mais
adotado também é o IEEE 754-1985.
struct
Em C podem ser usadas estruturas (chamados de registos em outras linguagens de programação). As
estruturas são grupos de variáveis organizadas arbitráriamente pelo programador. Uma estrutura
pode criar um novo tipo de variável caso typedef seja usado em sua declaração.
int main(void)
{
puts("Olá, Mundo!");
}
Apesar do programa acima correr corretamente, atualmente origina algumas mensagens de aviso
quando compilado como C ANSI. Essas mensagens podem ser eliminadas efectuando umas
pequenas alterações no programa original:
A primeira linha do programa é uma diretiva de pré-processamento #include , que causa com que
o pré-processador substitua aquela linha pela totalidade do conteúdo do arquivo qual diretiva se
refere. Neste caso o arquivo padrão stdio.h (que contém protótipos de funções para trabalho com
entrada e saída) irá substituir a linha. Os caracteres < e > indicam que o arquivo stdio.h encontra-se
no local em que, quando da configuração do compilador, se definiu como padrão para localização
dos ficheiros de inclusão (header files, geralmente com a extensão .h).
A linha (não-vazia) seguinte indica que uma função denominada main será definida. A
função main tem um significado especial nos programas em C, pois é a função que é inicialmente
executada (em inglês, entry point). Os caracteres { e } delimitam a extensão da função. O
termo int define a função main como sendo uma função que retorna um número inteiro. O
termo void indica que a função não aceita parâmetros. A função main, normalmente aceita
parâmetros, que são passado pela linha de comando. Os compiladores e sistemas operacionais atuais
reconhecem as seguintes declarações de main:
int main(void);
int main(int argc, char *argv[]);
int main(int argc, char **argv);
A linha seguinte "chama", ou executa uma função chamada puts ; o arquivo incluído, stdio.h ,
contém a informação que descreve a forma como a função puts deve ser chamada. Nesta chamada,
é passado à função puts um único argumento, a linha de texto constante "Olá, Mundo!". A
função puts retorna um valor, um int , mas como não é usado, é descartado pelo compilador. O
comando return retorna o valor 0 para o sistema, que é interpretado pelo mesmo como que a
função main() foi executada e encerrada com sucesso (sem erros). Por fim, o caracter } indica o fim
da função main . Note-se que texto rodeado por /* e */ (comentários de texto) é ignorado pelo
compilador. Os compiladores que obedecem à norma C99 também aceitam como comentários as
linhas de texto que são precedidos por // .
int main()
{
int a = 2, b = 3;
# include <stdio.h>
struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
};
int main()
{
struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; //
declaração da variável "exemplo"
# include <stdio.h>
int main()
{
Pessoa exemplo = {"Filipe", 16, "00.000.000-00"}; // declaração da
variável "exemplo"
getchar();
return 0;
}
C++
Linguagem compilada
Linguagem de programação
Linguagem de programação de alto nível
Lista de linguagens de programação
Unix
Compilador
Referências
1. Ir para cima↑ «Overall Options - Using the GNU Compiler Collection (GCC)». gcc.gnu.org (em inglês).
Consultado em 13 de dezembro de 2017.
2. ↑ Ir para:a b «History of the C Programming Language» (em inglês). livinginternet.com. Consultado em
23 de maio de 2010.
3. Ir para cima↑ «Programming Language Popularity» (em inglês). langpop.com. Consultado em 23 de
maio de 2010.
4. Ir para cima↑ «TIOBE Programming Community Index» (em inglês). tiobe.com. Consultado em 23 de
maio de 2010.
5. Ir para cima↑ «C – The Influence Factor of Many Popular Programming Languages» (em inglês).
cprogramminglanguage.com. Consultado em 23 de maio de 2010.
6. Ir para cima↑ Ritchie, Dennis M. (janeiro de 1993). «The Development of the C Language».
Consultado em 1 de janeiro de 2008.. The scheme of type composition adopted by C owes
considerable debt to Algol 68, although it did not, perhaps, emerge in a form that Algol's adherents
would approve of.
7. Ir para cima↑ A Brief History of C
8. Ir para cima↑ Johnson, S. C.; Ritchie, D. M. (1978). «Portability of C Programs and the UNIX
System» (PDF). Bell System Tech. J. 57 (6): 2021–2048. Consultado em 16 de dezembro de 2012.
9. Ir para cima↑ «Entrevista com Dennis Ritchie, Bjarne Stroustrup e James Gosling» (em (em inglês)).
Java Report e C++ Report. Julho de 2000. Consultado em 3 de junho de 2015.
10. Ir para cima↑ Kernighan, Brian W.; Ritchie, Dennis M (1978). The C Programming Language(em
inglês). Upper Saddle River, New Jersey: Prentice hall. 228 páginas. ISBN 0-13-110163-3
11. Ir para cima↑ Rosangle Hickson. Aprenda a programa em C, C++ e C# 2a ed. [S.l.]: Campus.
p. 3. ISBN 978-85-352-1479-6
12. Ir para cima↑ «Microsoft dá mais ênfase ao C++» (em inglês). connect.microsoft.com. Consultado
em 23 de maio de 2010.
13. Ir para cima↑ «Grupo de trabalho do ISO C» (em inglês). open-std.org. Consultado em 23 de maio
de 2010.
v•e
Linguagens de programação
[Expandir]
v•e
Discussão
Contribuições
Entrar
Artigo
Discussão
Ler
Editar
Editar código-fonte
Ver histórico
Busca
Ir
Página principal
Conteúdo destacado
Eventos atuais
Esplanada
Página aleatória
Portais
Informar um erro
Loja da Wikipédia
Colaboração
Boas-vindas
Ajuda
Página de testes
Portal comunitário
Mudanças recentes
Manutenção
Criar página
Páginas novas
Contato
Donativos
Imprimir/exportar
Criar um livro
Descarregar como PDF
Versão para impressão
Noutros projetos
Wikimedia Commons
Wikilivros
Ferramentas
Páginas afluentes
Alterações relacionadas
Carregar ficheiro
Páginas especiais
Hiperligação permanente
Informações da página
Elemento Wikidata
Citar esta página
Noutras línguas
العربية
English
Español
हिन्दी
Bahasa Indonesia
Latina
Русский
اردو
中文
99 outras
Editar hiperligações
Esta página foi editada pela última vez às 10h54min de 20 de julho de 2018.
Este texto é disponibilizado nos termos da licença Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC BY-SA
3.0) da Creative Commons; pode estar sujeito a condições adicionais. Para mais detalhes, consulte
as condições de utilização.
Política de privacidade
Sobre a Wikipédia
Avisos gerais
Programadores
Versão móvel
Programação estruturada
Origem: Wikipédia, a enciclopédia livre.
Índice
Na PE, os programas são vistos como compostos das seguintes 'estruturas de controle' (ECs) [4]:
def fatorial(x):
if x > 1:
return x*fatorial(x-1)
return x
1. Implemente r1, r2, ..., com chamadas para outras rotinas conforme conveniente.
2. Continue implementando as rotinas até que não sejam necessários procedimentos
adicionais.
Na prática, é usual iniciar a programação não exatamente do topo, até porque é comum que hajam
vários topos[5], mas isso depende da complexidade e modularidade do software.
Desvios[editar | editar código-fonte]
Dentre os desvios mais comuns da programação estruturada, há múltiplos pontos:
De saída:
terminação antecipada: return em uma função, break or continue em um laço de
interação, ou um exit em algum programa. Na programação estruturada, a rigor, há um só
ponto de saída da rotina sendo executada.
Manejo de exceção: clausulas como (try.. except) do Python ou (try.. catch) do C++,
também implicam em múltiplos pontos de saída da rotina.
De entrada: útil e.g. para geradores, streaming, máquinas de estado.
Seja um programa uma sequência de instruções a serem seguidas (e.g. por um computador).
Considere um ponteiro que indica a instrução a ser executada na próxima oportunidade. Um GOTO
é um reposicionamento arbitrário deste ponteiro. Embora seja um comando poderoso, o uso de
GOTOs é considerado, em geral, má prática, havendo quem o defenda em algumas situações.[3]
Na programação imperativa, que possui ênfase na modificação de valores em endereços de memória
(i.e. instruções de atribuição), o uso de GOTOs é abundante. Em muitos contextos, pode-se assumir
que 'programação estruturada' é sinônimo de programação sem GOTO (sem pulos, sem
redirecionamentos arbitrários do ponteiro da sequência de instruções em execução). Estes foram os
dois primeiros paradigmas dominantes na programação de computadores. A imperativa desde o
início da programação até os anos 1970. A estruturada até o final década de 1990, e então deu lugar
à POO.
Referências
1. Ir para cima↑ «Programação estruturada». Faculdade de Engenharia Elétrica e de Computação -
UNICAMP. Consultado em 22 de novembro de 2016.
2. Ir para cima↑ Clark, Leslie B. Wilson, Robert G.; Robert, Clark (2000). Comparative programming
languages 3rd ed. Harlow, England: Addison-Wesley. p. 20. ISBN 9780201710120. Consultado em
25 de novembro de 2015.
3. ↑ Ir para:a b Knuth, Donald E. (1 de dezembro de 1974). «Structured Programming with go to
Statements». ACM Computing Surveys (CSUR). 6 (4): 261–301. ISSN 0360-
0300. doi:10.1145/356635.356640
4. ↑ Ir para:a b http://people.cs.aau.dk/~normark/oop-csharp/html/notes/theme-index.html
5. ↑ Ir para:a b Bertrand Meyer (2009). Touch of Class: Learning to Program Well with Objects and
Contracts. [S.l.]: Springer Science & Business Media. ISBN 978-3-540-92144-8
Este artigo sobre software é um esboço. Você pode ajudar a Wikipédia expandindo-o.
Categoria:
Paradigmas de programação
Menu de navegação
Não autenticado
Discussão
Contribuições
Página principal
Conteúdo destacado
Eventos atuais
Esplanada
Página aleatória
Portais
Informar um erro
Loja da Wikipédia
Colaboração
Boas-vindas
Ajuda
Página de testes
Portal comunitário
Mudanças recentes
Manutenção
Criar página
Páginas novas
Contato
Donativos
Imprimir/exportar
Criar um livro
Descarregar como PDF
Versão para impressão
Ferramentas
Páginas afluentes
Alterações relacionadas
Carregar ficheiro
Páginas especiais
Hiperligação permanente
Informações da página
Elemento Wikidata
Citar esta página
Noutras línguas
العربية
Deutsch
English
Español
Français
Bahasa Indonesia
Bahasa Melayu
Русский
中文
29 outras
Editar hiperligações
Esta página foi editada pela última vez às 20h56min de 6 de julho de 2018.
Este texto é disponibilizado nos termos da licença Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC BY-SA
3.0) da Creative Commons; pode estar sujeito a condições adicionais. Para mais detalhes, consulte
as condições de utilização.
Política de privacidade
Sobre a Wikipédia
Avisos gerais
Programadores
Versão móvel
Leia o texto completo de nosso comunicado.
Programação imperativa
Origem: Wikipédia, a enciclopédia livre.
Esta página ou secção não cita fontes confiáveis e independentes, o que compromete sua credibilidade (desde j
favor, adicione referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser r
—Encontre fontes: Google (notícias, livros e acadêmico)
Nacionalidade Húngaro
Estadunidense
Prêmios Prêmio Bôcher (1938), Prêmio
Enrico Fermi (1956)
Campo(s) Matemática
Tese 1926
Máquina de Turing
O fundamento da programação imperativa é o conceito de Máquina de Turing, que nada mais é que
uma abstração matemática que corresponde ao conjunto de funções computáveis.
A Máquina de Turing foi aprimorada por John Von Neumann a uma arquitetura de computadores
que fundamenta os computadores construídos até hoje. Isso explica, em parte, o sucesso das
linguagens que seguem esse paradigma em relação às demais. Nesta arquitetura( usada hoje nos
microcomputadores comercializados), tanto os dados como os programas são armazenados na
mesma memória, e a CPU que processa as instruções, é separada da memória. Dessa forma, os dados
e instruções devem ser transportados da memória para a CPU e os resultados das operações
realizadas na CPU devem ser devolvidos para a memória.
As linguagens imperativas estruturadas sofrem no entanto de uma falta de flexibilidade dadas o
caráter sequencial das instruções. Contrariamente à programação declarativa, a programação
imperativa introduz um paradigma de programação que descreve a computação em termos de um
estado de um programa e ações que modificam esse estado, tal como o modo imperativo nas
linguagens naturais (faladas e escritas) expressa comandos para perfazer ações, as linguagens
imperativas expressam uma sequencia de comandos para um computador efetuar.
Visão simplificada da arquitetura de Von Neumann.
As linguagens de programação imperativa contrastam com outros tipos de linguagem, tais como
linguagens de programação declarativa, funcional e lógica. Linguagens de programação funcional,
como por exemplo Haskell, não são uma sequência de afirmações e não possuem, por consequência,
um estado global como as linguagens imperativas. Linguagens de programação lógica, como
exemplo Prolog, frequentemente definem "o que" é para ser computado, mais do que "como"
computar, como seria normal em uma linguagem imperativa.
Em linguagens puramente imperativas, como Assembly, é muito fácil o programador criar códigos
de difícil leitura, pois esse tipo de linguagem possui o que se chama de saltos (jumps) em sua
estrutura. Estes saltos funcionam da seguinte forma: o programador define uma marcação (label) no
código e depois, a partir de qualquer parte do programa, ele pode executar um desvio de fluxo de
execução (salto) para aquela marcação. Pode ser que à primeira vista isso não tenha problema,
contudo, na depuração do código, o programador fica em apuros com tantas marcações e saltos, pois
isso dificulta o entendimento do fluxo de execução do programa.
Neste contexto, surge a programação estruturada, como uma forma de possibilitar que o
programador tenha maior controle sobre o fluxo de execução do programa. Para isso, qualquer
programa pode ser reduzido a 3 estruturas:
Índice
1Origens
2Histórico
3Características Principais da Linguagem Imperativa
4Como Funciona a Programação Imperativa
5Modelo Computacional do Paradigma Imperativo
6Elementos da Programação Imperativa
7Técnicas em Programação Imperativa
8Vantagens
9Desvantagens
10Linguagens de programação
11Leitura Recomendada
12Ver também
13Ligações externas
Ken Thompson e Dennis Ritchie (da esquerda para direita), os criadores das linguagens B e C,
respectivamente.
ALGOL 60 (ALGorithmic Oriented Language) foi concebido em 1960 por um comitê internacional
para uso em resolução de problemas científicos. Ao contrário FORTRAN foi concebido de forma
independente de uma aplicação, uma escolha que conduzem a uma linguagem elegante. A descrição
do ALGOL 60 introduziu a notação BNF para a definição de sintaxe e é um modelo de clareza e
completude. Embora ALGOL 60 não conseguiu ganhar grande aceitação, introduziu estrutura de
bloco, instruções de controle estruturados e procedimentos recursivos no paradigma de programação
imperativa.
Ada
ALGOL
Basic
C
PHP
Java
Cobol
Fortran
Pascal
Python
Lua
Mathematica
Portal de biografias
Categorias:
Nascidos em 1903
Mortos em 1957
Paradigmas de programação
Menu de navegação
Não autenticado
Discussão
Contribuições
Entrar
Artigo
Discussão
Ler
Editar
Editar código-fonte
Ver histórico
Busca
Ir
Página principal
Conteúdo destacado
Eventos atuais
Esplanada
Página aleatória
Portais
Informar um erro
Loja da Wikipédia
Colaboração
Boas-vindas
Ajuda
Página de testes
Portal comunitário
Mudanças recentes
Manutenção
Criar página
Páginas novas
Contato
Donativos
Imprimir/exportar
Criar um livro
Descarregar como PDF
Versão para impressão
Ferramentas
Páginas afluentes
Alterações relacionadas
Carregar ficheiro
Páginas especiais
Hiperligação permanente
Informações da página
Elemento Wikidata
Citar esta página
Noutras línguas
العربية
Deutsch
English
Español
Français
日本語
Bahasa Melayu
Русский
中文
30 outras
Editar hiperligações
Esta página foi editada pela última vez às 15h08min de 5 de agosto de 2018.
Este texto é disponibilizado nos termos da licença Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC BY-SA
3.0) da Creative Commons; pode estar sujeito a condições adicionais. Para mais detalhes, consulte
as condições de utilização.
Política de privacidade
Sobre a Wikipédia
Avisos gerais
Programadores
Versão móvel