atps ivair

Upload: marcio-silva-de-oliveira

Post on 03-Apr-2018

245 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 ATPS IVAIR

    1/26

    Campinas, Dezembro de 2012

    Tiago Ap. Pessoa RA: 0911345828

    Wesley S.Dia RA: 0959532446

    Evandro D. Oliveira RA: 0919435437

    Marcio S. Oliveira RA: 0920349523

    Bruno Luiz RA: 0919440340

    Ronaldo Calvacante RA: 0901395323

    Trabalho apresentado para avaliao nadisciplina de _________________ , do curso deCincia da Computao, perodo noturno, daUniversidade Anhanguera de Campinas FAC III,ministrado pelo professor Ivair Teixeira

  • 7/28/2019 ATPS IVAIR

    2/26

    Campinas, Dezembro de 2012

    ContedoETAPA 3 ................................................................................................................................................... 5

    Pascal (linguagem de programao) ....................................................................................................... 5

    Implementaes ...................................................................................................................................... 6

    Padres/Normas ..................................................................................................................................... 8

    Sintaxe ..................................................................................................................................................... 9

    Exemplos de cdigo................................................................................................................................. 9

    Programa Ol Mundo....................................................................................................................... 9

    Nmeros perfeitos .......................................................................................................................... 10

    C (linguagem de programao) ............................................................................................................. 10

    Histria .................................................................................................................................................. 11

    K&R C ..................................................................................................................................................... 11

    ANSI C e ISO C ........................................................................................................................................ 13

    C99 ....................................................................................................................................................... 13

    C11 ....................................................................................................................................................... 14

    Exemplos ............................................................................................................................................. 15Programa Ol Mundo..................................................................................................................... 15

    Matemtica ........................................................................................................................................... 15

    Estruturas de dados ........................................................................................................................... 16

    ETAPA 4 ................................................................................................................................................. 17

    C++ ......................................................................................................................................................... 17

    Histria................................................................................................................................................. 18

    A evoluo da linguagem.............................................................................................................. 18Etimologia............................................................................................................................................ 20

    Trabalhos futuros................................................................................................................................ 20

    Exemplos de cdigo............................................................................................................................... 21

    Java ........................................................................................................................................................ 21

    Histria................................................................................................................................................. 22

    Padronizao ...................................................................................................................................... 23

    Exemplos de cdigo............................................................................................................................... 24

    Mtodo main........................................................................................................................................ 24

    Classes ................................................................................................................................................. 24

  • 7/28/2019 ATPS IVAIR

    3/26

    Campinas, Dezembro de 2012

    Classes internas ................................................................................................................................. 25Interfaces ............................................................................................................................................. 25

  • 7/28/2019 ATPS IVAIR

    4/26

    Campinas, Dezembro de 2012

    Lista de Figuras

    Figura 1- Ken Thompson e Dennis Ritchie ............................................................................................ 11 No table of figures entries found.

  • 7/28/2019 ATPS IVAIR

    5/26

    5

    ETAPA 3

    Pascal (linguagem de programao)

    A linguagem de programao PASCAL foi criada para ser uma ferramentaeducacional, isto no incio da dcada de 70 pelo Prof. Niklaus Wirth do Technical University em Zurique. Foi batizado pelo seu idealizador de PASCAL, emhomenagem ao grande matemtico Blaise Pascal, inventor de uma das primeirasmquinas lgicas conhecidas.

    Foi baseada em algumas linguagens estruturadas existentes ento, ALGOLe PLI, tentando facilitar ao mximo o seu aprendizado. O PASCAL somente ganhoupopularidade quando foi adotado pela Universidade da Califrnia, San Diego, em1973. No mesmo perodo, em seus cursos, tambm foram feitas implementaespara minis e microcomputadores.

    Nas suas primeiras implementaes, no era muito amigvel aoprogramador, pois eram necessrios vrios passos para se obter um programaexecutvel. Primeiro devia se escrever o programa executvel. Primeiro devia seescrever o programa em um editor de texto, depois compil-lo, "linc-lo" e mont-lo.Quando era feita uma manuteno no mesmo, todos estes passos deviam ser refeitos o que no estimulava os programadores.

    Apesar de todas as dificuldades iniciais, de seu propsito educacional e afacilidade de programao, o PASCAL comeou a ser utilizado por programadores

    de outras linguagens, tornando-se para surpresa do prprio Niklaus , um produtocomercial. Contudo somente ao final do ano de 1983, que a soft-house americanaBorland Internacional, lanou o TURBO PASCAL para microcomputadores, aliado aolanamento do TURBO. Tambm neste mesmo perodo, houve um grandecrescimento no mercado de microcomputadores.

    O TURBO PASCAL consegue em um nico ambiente, colocar um editor detextos, bastantes parecido com o WordStar e o SideKick , um cdigo fonte ligado a

    um sistema de detectao de erros, um compilador de 1 passo, o que o tornabastante veloz, com a desvantagem de que apenas um erro localizado por vez, e

  • 7/28/2019 ATPS IVAIR

    6/26

    6

    tambm um "linkador" que permite a ligao do programa PASCAL com objetos,mesmos os geradores por outras linguagens.

    O TURBO PASCAL em suas primeiras verses, at a sua verso 3, tinha

    uma tela inicial que tambm servia de menu principal, todas as rotinas existentesestavam em um nico arquivo e o programa executvel tinha uma estrutura.COM(extenso). A partir da verso 4, o TURBO teve algumas mudanasconceituas, sendo as principais, de ambiente, tornando-o mais amigvel, como amaioria do softwares modernos. As rotinas auxiliares foram divididas de acordo coma atividade que desempenham no programa, e a prpria estrutura do programa,.EXE (extenso) que por suas caractersticas separa as diversas reas do programa

    em segmentos de 64 Kbytes, alm de novos tipos reais. A partir da verso 5.0, foram tambm adicionadas formas de depurao dos

    programas que esto em ambiente, a partir da verso 5.5. Foi incrementada tambmuma estrutura da linguagem orientada por objeto que permite a criao de registro,contendo estruturas de programao (O.O.P.).

    Caractersticas Inovadoras do Pascal: estruturas de controlo flexveis; tiposdefinidos pelo utilizador; ficheiros; records; conjuntos.

    Implementaes

    O primeiro compilador Pascal foi desenvolvido em Zurique para a famlia de

    computadores CDC 6000, sendo lanado em 1970. Tambm em 1970 foidesenvolvido o primeiro compilador Pascal norte americano, naUniversidade deIllinoispor Donald B. Gillies, que gerava cdigo de mquina nativo para o mini-computador PDP-11.

    Pensando-se em propagar rapidamente o uso da linguagem, foi criado, emZurique, um "kit de converso" que incluia um compilador que gerava cdigointermedirio, e um simulador para ele. Esse kit foi batizado de p-System , e foi

    utilizado, entre outras coisas, para criar um sistema operacional para mini-computadores chamado UCSD p-System, desenvolvido pelo Instituto de Sistemas

    http://pt.wikipedia.org/wiki/Universidade_de_Illinoishttp://pt.wikipedia.org/wiki/Universidade_de_Illinoishttp://pt.wikipedia.org/w/index.php?title=Donald_B._Gillies&action=edit&redlink=1http://pt.wikipedia.org/w/index.php?title=Donald_B._Gillies&action=edit&redlink=1http://pt.wikipedia.org/wiki/Universidade_de_Illinoishttp://pt.wikipedia.org/wiki/Universidade_de_Illinois
  • 7/28/2019 ATPS IVAIR

    7/26

    7

    de Informao da Universidade da Califrniaem San Diego. Segundo oprprioNiklaus Wirth,o p-System e o UCSD foram instrumentais na popularizaodo Pascal. No padro UCSD, as Strings passaram a ser tipos pr-definidos (no

    Pascal padro era utilizados packed-arrays ).Nos anos 80, Anders Hejlsberg desenvolveu o compilador Blue Label Pascal

    o Nascom -2. Depois, ele foi trabalhar na Borlande reescreveu seu compilador transformando-o no Turbo Pascal para a plataforma IBM PC (e tambm CP/M 80),que era vendido a US$ 49,95, muito mais barato do que o Blue Label . Umacaracterstica muito importante que o Turbo Pascal uma linguagem compilada,que gera cdigo de mquina real para a arquitetura Intel 8088, tornando-a muito

    mais rpida do que as linguagens interpretadas.Por ser mais barato, o Turbo Pascal passou a ter uma grande influncia na

    comunidade Pascal, que comeou a se concentrar na plataforma IBM PC no fim dosanos 80. Muitos usurios de PC da poca migraram para o Turbo Pascal, em buscade uma linguagem estruturada que no fosse interpretada, para substituir, por exemplo, o BASIC . Pode se afirmar que o sucesso comercial de Turbo Pascal foidefinitivo para a ampla divulgao da linguagem Pascal entre os usurios de micro-

    computador.Outra variante era o Super Pascal, que adicionava labels no numricas, o

    comando return e expresses como nomes de tipos.Durante os anos 90, compiladores que podiam ser modificados para

    trabalhar com arquiteturas diferentes tiveram grande destaque, incluindo nessa listao Pascal.

    O prximo grande passo para a linguagem, foi a implementao

    da orientao a objeto (OO ou OOP em ingls) na sua estrutura, comeando com averso 5.5 do Turbo Pascal. Mais tarde, ao projetar o Delphi, querendofuncionalidades mais elaboradas da orientao a objeto, a Borland utilizou oconceito Object Pascal criado pela Apple Inc., utilizando-o como base para umanova linguagem, que nas verses iniciais era chamado de Object Pascal foirebatizado como Delphi Programming Language nas verses posteriores. Asmaiores diferenas em relao s implementaes OO das verses mais antigasforam a adio do conceito de objetos por referncia, construtores, destrutores epropriedades, entre outros.

    http://pt.wikipedia.org/wiki/Universidade_da_Calif%C3%B3rniahttp://pt.wikipedia.org/wiki/San_Diegohttp://pt.wikipedia.org/wiki/Niklaus_Wirthhttp://pt.wikipedia.org/wiki/Anders_Hejlsberghttp://pt.wikipedia.org/wiki/Anders_Hejlsberghttp://pt.wikipedia.org/wiki/Anders_Hejlsberghttp://pt.wikipedia.org/w/index.php?title=Nascom-2&action=edit&redlink=1http://pt.wikipedia.org/w/index.php?title=Nascom-2&action=edit&redlink=1http://pt.wikipedia.org/w/index.php?title=Nascom-2&action=edit&redlink=1http://pt.wikipedia.org/wiki/Borlandhttp://pt.wikipedia.org/w/index.php?title=CP/M_80&action=edit&redlink=1http://pt.wikipedia.org/wiki/Intel_8088http://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetohttp://pt.wikipedia.org/wiki/Apple_Inc.http://pt.wikipedia.org/wiki/Apple_Inc.http://pt.wikipedia.org/wiki/Apple_Inc.http://pt.wikipedia.org/wiki/Apple_Inc.http://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetohttp://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/Intel_8088http://pt.wikipedia.org/w/index.php?title=CP/M_80&action=edit&redlink=1http://pt.wikipedia.org/wiki/Borlandhttp://pt.wikipedia.org/w/index.php?title=Nascom-2&action=edit&redlink=1http://pt.wikipedia.org/wiki/Anders_Hejlsberghttp://pt.wikipedia.org/wiki/Niklaus_Wirthhttp://pt.wikipedia.org/wiki/San_Diegohttp://pt.wikipedia.org/wiki/Universidade_da_Calif%C3%B3rnia
  • 7/28/2019 ATPS IVAIR

    8/26

    8

    Padres/Normas

    Em 1983, a linguagem foi padronizada, na norma internacional ISO / IEC7185, assim como vrios padres locais especficos de cada pas, incluindo a normaamericana ANSI/IEEE770X3.97-1983, e ISO 7185:1983. A diferena entre as duasnormas que a padro ISO possui o nvel 1, extenso do arrays conformantes,enquanto a ANSI no permitiu esta extenso linguagem original (verso Wirth). Em1989, foi revista ISO 7185 (ISO 7185:1990) para corrigir vrios erros e ambiguidadesencontradas no documento original

    Em 1990, foi criado uma norma ISO / IEC 10206 padronizando o Pascal. Em1993, o padro ANSI foi substitudo pelo ANSI organizao com um "ponteiro" paraa norma ISO 7185:1990, que termina efetivamente o seu estatuto como um padrodiferente.

    A norma ISO 7185 foi indicado para ser uma clarificao de Wirth dalinguagem como detalhado em 1974 Manual do Usurio e Relatrio [Jensen e Wirth ],mas tambm foi notvel pela incluso de "Parmetros de array conformantes" comoum nvel 1 da norma, sendo nvel 0 Pascal sem Conformantes Arrays.

    Note que o prprio Niklaus Wirth se refere linguagem 1974 como o

    padro, por exemplo, para diferenci-la das caractersticas especficas deimplementao em nvel de mquina do compilador CDC 6000. Esta linguagem foi

    documentada em "The Pascal Report ", a segunda parte do " Pascal users manualand report".

    Nas grandes mquinas (mainframes e minicomputadores) originadas peloPascal, eram seguidos padres gerais. Na IBM-PC, no eram. No IBM-PC, o TurboPascal e Delphi , padro Borland , tem o maior nmero de usurios. Assim, deextrema importncia entender se uma determinada aplicao corresponde alinguagem original Pascal, Borland ou um dialeto do mesmo.

    As verses da linguagem do IBM-PC comearam a divergir com a vinda daUCSD Pascal, uma aplicao que implementou ao programa vrias prorrogaes

  • 7/28/2019 ATPS IVAIR

    9/26

    9

    para a linguagem, juntamente com vrias omisses e mudanas. Muitascaractersticas da linguagem UCSD sobrevivem atualmente, inclusive em linguagensBorlands .

    Sintaxe

    A linguagem Pascal foi criada para incentivar a programaomodular e estruturada, facilitando a criao de procedimentos com baixoacoplamento e alta coeso. Um programa em Pascal composto de constantes evariveis globais, procedimentos e funes re-entrantes e um programa principal.

    Procedimentos no retornam valores, funes sim. Tanto em procedimentosquanto em funes os parmetros podem ser passados por referncia ou por valor. possvel passar vetores e matrizes com o tamanho, mas no a quantidadede dimenses, especificado no tempo de execuo.

    Procedimentos e funes podem conter, dentro de seu escopo, novosprocedimentos e funes. Dentro de qualquer parte do programa tambm podem ser criados blocos com os comandos BEGIN e END , que tambm possuem seu prprioescopo.Nas verses originais, as variveis s podiam ser declaradas em posiesespecficas e no ao decorrer do programa, o que limitava a regra de escopo.

    O conjunto de procedimentos e funes pr-definidos fixo e inclui asfunes read, readln, write e writeln , para realizar E/S.

    Exemplos de cdigo

    Programa Ol Mundo

    program OlaMundo;

    begin WriteLn('Ol, Mundo!');

    end .

    http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_modularhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_modularhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturadahttp://pt.wikipedia.org/wiki/Acoplamentohttp://pt.wikipedia.org/wiki/Coes%C3%A3ohttp://pt.wikipedia.org/wiki/Coes%C3%A3ohttp://pt.wikipedia.org/wiki/Acoplamentohttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturadahttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_modularhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_modular
  • 7/28/2019 ATPS IVAIR

    10/26

    10

    Nmeros perfeitos program numerosPerfeitos;

    uses crt;

    var ate, x, soma, i: integer ;

    begin clrscr;x := 0;writeln('Numeros perfeitos abaixo de');Readln(ate);repeat x := x + 1;soma := 0;for i := 1 to x - 1 do begin

    if x mod i = 0 then soma := soma + i;end ;if soma = x then begin writeln(x);end ;

    until (x > ate);writeln('Pressione qualquer tecla para finalizar' );readkey;

    end .

    C (linguagem de programao)

    C uma linguagem de programao compilada de propsito

    geral, estruturada,imperativa, procedural , padronizada pela ISO, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs , para desenvolver o sistemaoperacional Unix(que foi originalmente escrito em Assembly ).

    http://pt.wikipedia.org/wiki/Linguagem_compiladahttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturadahttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_imperativahttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_proceduralhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_proceduralhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_proceduralhttp://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/1972http://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/AT%26Thttp://pt.wikipedia.org/wiki/Bell_Labshttp://pt.wikipedia.org/wiki/Bell_Labshttp://pt.wikipedia.org/wiki/Sistema_operativohttp://pt.wikipedia.org/wiki/Sistema_operativohttp://pt.wikipedia.org/wiki/Unixhttp://pt.wikipedia.org/wiki/Linguagem_de_montagemhttp://pt.wikipedia.org/wiki/Linguagem_de_montagemhttp://pt.wikipedia.org/wiki/Linguagem_de_montagemhttp://pt.wikipedia.org/wiki/Linguagem_de_montagemhttp://pt.wikipedia.org/wiki/Unixhttp://pt.wikipedia.org/wiki/Sistema_operativohttp://pt.wikipedia.org/wiki/Sistema_operativohttp://pt.wikipedia.org/wiki/Bell_Labshttp://pt.wikipedia.org/wiki/AT%26Thttp://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/1972http://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_proceduralhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_imperativahttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturadahttp://pt.wikipedia.org/wiki/Linguagem_compilada
  • 7/28/2019 ATPS IVAIR

    11/26

    11

    Histria

    Figura 1- Ken Thompson e Dennis Ritchie

    O desenvolvimento inicial de C ocorreu no AT&T Bell Labsentre 1969 e 1973. No se sabe se o nome "C" foi dado linguagem porque muitasde suas caractersticas derivaram da linguagem B e C a letra conseguinte noalfabeto, ou porque "C" a segunda letra do nome da linguagem BCPL, da qual

    derivou-se a linguagem B.C foi originalmente desenvolvido para a implementao do sistema Unix

    (originalmente escrito em PDP-7 Assembly , por Dennis Ritchiee Ken Thompson).Em 1973, com a adio do tipo struct , C tornou-se poderoso o bastante para amaioria das partes do ncleo do Unix , serem reescritas em C. Este foi um dosprimeiros sistemas que foram implementados em uma linguagem que no o

    Assembly , sendo exemplos anteriores os sistemas :Multics(escrito em PL/I) e

    TRIPOS (escrito em BCPL). Segundo Ritchie, o perodo mais criativo ocorreuem 1972.

    K&R C

    Em 1978, Brian Kernighane Dennis Ritchiepublicaram a primeira edio do

    livro The C Programming Language . Esse livro, conhecido pelos programadores deC como "K&R", serviu durante muitos anos como uma especificao informal da

    http://pt.wikipedia.org/wiki/1969http://pt.wikipedia.org/wiki/1973http://pt.wikipedia.org/wiki/B_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/Ken_Thompsonhttp://pt.wikipedia.org/wiki/Tipo_de_dadohttp://pt.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Multicshttp://pt.wikipedia.org/wiki/PL/Ihttp://pt.wikipedia.org/wiki/BCPLhttp://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/1972http://pt.wikipedia.org/wiki/1978http://pt.wikipedia.org/wiki/1978http://pt.wikipedia.org/wiki/Brian_Kernighanhttp://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/The_C_Programming_Languagehttp://pt.wikipedia.org/wiki/The_C_Programming_Languagehttp://pt.wikipedia.org/wiki/The_C_Programming_Languagehttp://pt.wikipedia.org/wiki/Ficheiro:Ken_n_dennis.jpghttp://pt.wikipedia.org/wiki/The_C_Programming_Languagehttp://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/Brian_Kernighanhttp://pt.wikipedia.org/wiki/1978http://pt.wikipedia.org/wiki/1972http://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/BCPLhttp://pt.wikipedia.org/wiki/PL/Ihttp://pt.wikipedia.org/wiki/Multicshttp://pt.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Tipo_de_dadohttp://pt.wikipedia.org/wiki/Ken_Thompsonhttp://pt.wikipedia.org/wiki/Dennis_Ritchiehttp://pt.wikipedia.org/wiki/B_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/1973http://pt.wikipedia.org/wiki/1969
  • 7/28/2019 ATPS IVAIR

    12/26

    12

    linguagem. A verso da linguagem C que ele descreve usualmente referida como"K&R C". A segunda edio do livro cobriu o padro posterior, o ANSI C. K&R Cintroduziu as seguintes caractersticas na linguagem:

    Biblioteca padro de E/STipos de dado struct

    Tipos de dado long int

    Tipos de dado unsigned int

    O operador =+ foi alterado para +=, e =- para -= (o analisador lxico do

    compilador fazia confuso entre i =+ 10 e i = +10. O mesmo acontecia com =-)

    K&R C frequentemente considerado a parte mais bsica da linguagem,cujo suporte deve ser assegurado por um compilador C. Durante muitos anos,mesmo aps a introduo do padro ANSI C, K&R C foi considerado o "menor denominador comum", em que programadores de C se apoiavam quandouma portabilidade mxima era desejada, j que nem todos os compiladores eram

    actualizados o bastante para suportar o padro ANSI C.Nos anos que se seguiram publicao do K&R C, algumas caractersticas

    "no-oficiais" foram adicionadas linguagem, suportadas por compiladores da AT&T

    e de outros vendedores. Estas incluam:Funes void e tipos de dados void *

    Funes que retornam tipos struct ou union

    Campos de nome struct num espao de nome separado para cada tipo struct

    Atribuio a tipos de dados struct

    Qualificadores const para criar um objecto s de leitura

    Biblioteca padro, que incorpora grande parte da funcionalidadeimplementada por vrios vendedores

    EnumeraesClculos de ponto-flutuante em preciso simples (no K&R C, os clculos

    intermedirios eram feitos sempre em double , porque era mais eficiente na mquina

    onde a primeira implementao do C foi feita)

    http://pt.wikipedia.org/wiki/Entrada/sa%C3%ADdahttp://pt.wikipedia.org/wiki/An%C3%A1lise_l%C3%A9xicahttp://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/Portabilidade_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Portabilidade_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Portabilidade_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/An%C3%A1lise_l%C3%A9xicahttp://pt.wikipedia.org/wiki/Entrada/sa%C3%ADda
  • 7/28/2019 ATPS IVAIR

    13/26

    13

    ANSI C e ISO C

    Durante os finais da dcada de 1970, a linguagem C comeou a substituir alinguagem BASIC como a linguagem de programao de microcomputadores maisusada. Durante a dcada de 1980, foi adaptada para uso no PC IBM, e a suapopularidade comeou a aumentar significativamente. Ao mesmo tempo, BjarneStroustrup , juntamente com outros nos laboratrios Bell, comeou a trabalhar numprojeto onde se adicionavam construes de linguagens de programao orientadapor objetos linguagem C. A linguagem que eles produziram, chamada C++, nosdias de hoje a linguagem de programao de aplicaes mais comum no sistemaoperativo Windowsda companhia Microsoft; C permanece mais popular nomundo Unix.

    Em 1983, o instituto norte-americano de padres (ANSI)formou um comit,X3J11, para estabelecer uma especificao do padro da linguagem C. Aps umprocesso longo e rduo, o padro foi completo em 1989 e ratificado como ANSIX3.159-1989 "Programming Language C ". Esta verso da linguagem frequentemente referida como ANSI C. Em1990, o padro ANSI C, aps sofrer

    umas modificaes menores, foi adotado pela Organizao Internacional paraPadronizao (ISO) como ISO/IEC 9899:1990, tambm conhecido como C89 ou

    C90.Um dos objetivos do processo de padronizao ANSI C foi o de produzir um

    sobreconjunto do K&R C, incorporando muitas das caractersticas no-oficiaissubsequentemente introduzidas. Entretanto, muitos programas tinham sido escritose que no compilavam em certas plataformas, ou com um certo compilador, devido

    ao uso de bibliotecas de funes no-padro e ao fato de alguns compiladores noaderirem ao ANSI C.

    C99

    Aps o processo da padronizao ANSI, as especificaes da linguagem Cpermaneceram relativamente estticas por algum tempo, enquanto que a linguagem

    http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1970http://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/Computador_dom%C3%A9sticohttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1980http://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/C%2B%2Bhttp://pt.wikipedia.org/wiki/Microsoft_Windowshttp://pt.wikipedia.org/wiki/Microsofthttp://pt.wikipedia.org/wiki/Unixhttp://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/American_National_Standards_Institutehttp://pt.wikipedia.org/wiki/1989http://pt.wikipedia.org/wiki/1990http://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/1990http://pt.wikipedia.org/wiki/1989http://pt.wikipedia.org/wiki/American_National_Standards_Institutehttp://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/Unixhttp://pt.wikipedia.org/wiki/Microsofthttp://pt.wikipedia.org/wiki/Microsoft_Windowshttp://pt.wikipedia.org/wiki/C%2B%2Bhttp://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1980http://pt.wikipedia.org/wiki/Computador_dom%C3%A9sticohttp://pt.wikipedia.org/wiki/BASIChttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1970
  • 7/28/2019 ATPS IVAIR

    14/26

    14

    C++ continuou a evoluir. (em 1995, a Normative Amendment 1 criou uma verso

    nova da linguagem C mas esta verso raramente tida em conta.) Contudo, opadro foi submetido a uma reviso nos finais da dcada de 1990, levando publicao da norma ISO 9899:1999 em 1999. Este padro geralmente referido

    como "C99". O padro foi adoptado como um padro ANSI em maro de2000. Asnovas caractersticas do C99 incluem:

    Funes em linhaRemoo de restries sobre a localizao da declarao de variveis

    (como em C++) Adio de vrios tipos de dados novos, incluindo o long long int (para

    minimizar problemas na transio de 32-bits para 64-bits), um tipo de dado boolean explicito (chamado _ Bool ) e um tipo complex que representa nmeros complexos

    Vetores de dados de comprimento varivel (o vetor pode ter um tamanhodiferente a cada execuo de uma funo, mas no cresce depois de criado)

    Suporte oficial para comentrios de uma linha iniciados por //, emprestados

    da linguagem C++Vrias funes de biblioteca novas, tais como snprintf ()

    Vrios ficheiros-cabealho novos, tais como stdint .hO interesse em suportar as caractersticas novas de C99 parece depender

    muito das entidades. Apesar do GCC e vrios outros compiladores suportaremgrande parte das novas caractersticas do C99, os compiladores mantidos pelaMicrosoft e pela Borland suportam pouqussimos recursos do C99, e estas duascompanhias no parecem estar muito interessadas em adicionar taisfuncionalidades, ignorando por completo as normas internacionais. A Microsoft

    parece preferir dar mais nfase ao C++

    C11

    Em 2007, se iniciou o trabalho em antecipao de outra reviso do padrode C, informalmente chamada de C11 ou C1X. O comit dos padres de C adotou

    regras para limitar a insero de novos recursos que no tenham ainda sidotestados por implementaes existentes

    http://pt.wikipedia.org/wiki/1995http://pt.wikipedia.org/wiki/1995http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1990http://pt.wikipedia.org/wiki/1999http://pt.wikipedia.org/wiki/1999http://pt.wikipedia.org/wiki/2000http://pt.wikipedia.org/wiki/N%C3%BAmero_complexohttp://pt.wikipedia.org/wiki/Arrayhttp://pt.wikipedia.org/wiki/GNU_Compiler_Collectionhttp://pt.wikipedia.org/wiki/Borlandhttp://pt.wikipedia.org/wiki/Borlandhttp://pt.wikipedia.org/wiki/Borlandhttp://pt.wikipedia.org/wiki/Borlandhttp://pt.wikipedia.org/wiki/GNU_Compiler_Collectionhttp://pt.wikipedia.org/wiki/Arrayhttp://pt.wikipedia.org/wiki/N%C3%BAmero_complexohttp://pt.wikipedia.org/wiki/2000http://pt.wikipedia.org/wiki/1999http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1990http://pt.wikipedia.org/wiki/1995
  • 7/28/2019 ATPS IVAIR

    15/26

    15

    Em dezembro de 2011 foi publicada a verso estvel da especificao,

    como ISO/IEC 9899:2011.

    Exemplos

    Programa Ol Mundo

    int main(){

    printf("Ol, Mundo! \n ");}

    Ou#include /* Pacotes com funes de entrada e sada */

    int main(void){

    printf("Ol, Mundo! \n ");return 0; /* Retorna 0, pois main retorna um int */

    }/* Nova linha aps fechar a chave principal */

    Matemtica#include // necessria para pow() e sqrt()#include // necessria para printf() e getchar()

    int main(){

    int a = 2, b = 3;

    printf("%d + %d = %d \n ", a, b, a + b);printf("%d - %d = %d \n ", a, b, a - b);printf("%d x %d = %d \n ", a, b, a * b);

    printf("%d / %d = %0.1f \n ", a, b, (float) a / b); // resultadofracionrio

    http://pt.wikipedia.org/wiki/2011http://pt.wikipedia.org/wiki/2011http://pt.wikipedia.org/wiki/2011
  • 7/28/2019 ATPS IVAIR

    16/26

    16

    printf("%d elevado a %d = %0.1f \n ", a, b, pow(a, b)); // pow(base, expoente)

    printf("raiz quadrada de %d = %0.1f \n ", a, sqrt(a));

    getchar(); //O uso dessa funo necessria apenas nos sistemasWindows, para manter o terminal (Prompt de comando) aberto

    return 0;}

    Estruturas de dados

    #include

    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"}; // declaraoda varivel "exemplo"

    printf("Nome: %s \n ", exemplo.nome);printf("Idade: %hu \n ", exemplo.idade);printf("RG: %s \n ", exemplo.rg);

    getchar(); // desnecessrio, mas comumente utilizado em ambienteswindows para "segurar" o terminal aberto

    return 0;

    }

    Ou, equivalente:

    #include

    typedef struct Pessoa{

    char nome[64]; // vetor de 64 chars para o nome unsigned short int idade;char rg[13];

  • 7/28/2019 ATPS IVAIR

    17/26

    17

    } Pessoa;

    int main(){

    Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaraoda varivel "exemplo"

    printf("Nome: %s \n ", exemplo.nome);printf("Idade: %hu \n ", exemplo.idade);printf("RG: %s \n ", exemplo.rg);

    getchar();return 0;

    }

    ETAPA 4

    C++

    C++ (em portugus l-se "c mais mais") uma linguagem de

    programao multi-paradigmae de uso geral. A linguagem considerada de mdionvel, pois combina caractersticas de linguagens de alto e baixo nveis. Desdeos anos 1990 uma das linguagens comerciais mais populares, sendo bastanteusada tambm na academia por seu grande desempenho e base de utilizadores.

    Bjarne Stroustrup desenvolveu o C++ (originalmente com o nome C

    withClasses, que significa C comclasses em portugus) em 1983 no Bell Labs comoum adicional linguagem C. Novas caractersticas foram adicionadas com o tempo,como funes virtuais, sobrecarga de operadores, herana mltipla, gabaritose tratamento de excees. Aps a padronizao ISO realizada em 1998 e aposterior reviso realizada em 2003, uma nova verso da especificao dalinguagem foi lanada em setembro de 2011, conhecida informalmentecomo C++11 ou C++0x

    http://pt.wikipedia.org/wiki/L%C3%ADngua_portuguesahttp://pt.wikipedia.org/wiki/L%C3%ADngua_portuguesahttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_alto_n%C3%ADvelhttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_baixo_n%C3%ADvelhttp://pt.wikipedia.org/wiki/Anos_1990http://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/Classe_(programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Classe_(programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/Bell_Labshttp://pt.wikipedia.org/wiki/Bell_Labshttp://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Operadorhttp://pt.wikipedia.org/wiki/Heran%C3%A7a_m%C3%BAltiplahttp://pt.wikipedia.org/wiki/Tratamento_de_exce%C3%A7%C3%B5eshttp://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/1998http://pt.wikipedia.org/wiki/2003http://pt.wikipedia.org/wiki/2011http://pt.wikipedia.org/wiki/C%2B%2B11http://pt.wikipedia.org/wiki/C%2B%2B11http://pt.wikipedia.org/wiki/2011http://pt.wikipedia.org/wiki/2003http://pt.wikipedia.org/wiki/1998http://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Tratamento_de_exce%C3%A7%C3%B5eshttp://pt.wikipedia.org/wiki/Heran%C3%A7a_m%C3%BAltiplahttp://pt.wikipedia.org/wiki/Operadorhttp://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Bell_Labshttp://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/Classe_(programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Classe_(programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Bjarne_Stroustruphttp://pt.wikipedia.org/wiki/Anos_1990http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_baixo_n%C3%ADvelhttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_alto_n%C3%ADvelhttp://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/L%C3%ADngua_portuguesa
  • 7/28/2019 ATPS IVAIR

    18/26

    18

    Histria

    A evoluo da linguagem

    O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs ,durante a dcada de 1980 com o objetivo implementar uma verso distribudado ncleo Unix.Como o Unix era escrito em C, dever-se-ia manter acompatibilidade, ainda que adicionando novos recursos. Alguns dos desafiosincluam simular a infraestrutura dacomunicao entre processos num sistema

    distribudoou de memria compartilhada e escrever drivers para tal sistema.Stroustrup percebeu que a linguagem Simula 67 possua caractersticas bastanteteis para o desenvolvimento de software, mas que era muito lenta para uso prtico.Por outro lado, a linguagem BCPLera rpida, mas possua demasiado baixo nvel, dificultando sua utilizao no desenvolvimento deaplicaes. A partir de suaexperincia de doutorado, comeou a acrescentar elementos do Simula 67 no C,especialmente os recursos de criao e manipulao de objetos. O C foi escolhido

    como base de desenvolvimento da nova linguagem pois possua uma proposta deuso genrico, era rpido e tambm portvel para diversas plataformas. Algumasoutras linguagens que tambm serviram de inspirao para o cientista dacomputao foram ALGOL 68,Ada, CLUe ML.

    Figura 2 numero da figura - Bjarne Stro

    http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1980http://pt.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Unixhttp://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Comunica%C3%A7%C3%A3o_entre_processoshttp://pt.wikipedia.org/wiki/Sistema_distribu%C3%ADdohttp://pt.wikipedia.org/wiki/Sistema_distribu%C3%ADdohttp://pt.wikipedia.org/wiki/Mem%C3%B3ria_compartilhadahttp://pt.wikipedia.org/wiki/Driver_de_dispositivohttp://pt.wikipedia.org/wiki/Driver_de_dispositivohttp://pt.wikipedia.org/wiki/Driver_de_dispositivohttp://pt.wikipedia.org/wiki/Simula_67http://pt.wikipedia.org/wiki/Desenvolvimento_de_softwarehttp://pt.wikipedia.org/wiki/BCPLhttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_baixo_n%C3%ADvelhttp://pt.wikipedia.org/wiki/Software_aplicativohttp://pt.wikipedia.org/wiki/Doutoramentohttp://pt.wikipedia.org/wiki/Objeto_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Software_aplicativohttp://pt.wikipedia.org/wiki/Plataforma_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Cientista_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Cientista_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/ALGOL_68http://pt.wikipedia.org/wiki/Ada_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/CLU_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/ML_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/ML_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Ficheiro:Stroustrup_kent_state_edit.jpghttp://pt.wikipedia.org/wiki/ML_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/CLU_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Ada_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/ALGOL_68http://pt.wikipedia.org/wiki/Cientista_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Cientista_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Plataforma_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Software_aplicativohttp://pt.wikipedia.org/wiki/Objeto_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/Doutoramentohttp://pt.wikipedia.org/wiki/Software_aplicativohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_baixo_n%C3%ADvelhttp://pt.wikipedia.org/wiki/BCPLhttp://pt.wikipedia.org/wiki/Desenvolvimento_de_softwarehttp://pt.wikipedia.org/wiki/Simula_67http://pt.wikipedia.org/wiki/Driver_de_dispositivohttp://pt.wikipedia.org/wiki/Mem%C3%B3ria_compartilhadahttp://pt.wikipedia.org/wiki/Sistema_distribu%C3%ADdohttp://pt.wikipedia.org/wiki/Sistema_distribu%C3%ADdohttp://pt.wikipedia.org/wiki/Comunica%C3%A7%C3%A3o_entre_processoshttp://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Unixhttp://pt.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1980
  • 7/28/2019 ATPS IVAIR

    19/26

    19

    Ainda em 1983 o nome da linguagem foi alterado de C with Classes para

    C++. Antes implementada usando um pr-processador, a linguagem passou a exigir um compilador prprio, escrito pelo prprio Stroustrup. Novas caractersticas foramadicionadas, como funes virtuais, sobrecarga de operadores efunes, referncias, constantes, gerenciamento manual de memria, melhorias naverificao de tipo de dado e estilo de comentrio de cdigo de uma linha (//).Em 1985 foi lanada a primeira edio do livro The C++ Programming Language,contendo referncias para a utilizao da linguagem, j que ainda no era umanorma oficial. A primeira verso comercial foi lanada em outubro do mesmoano Em 1989 a segunda verso foi lanada, contendo novas caractersticas

    como herana mltipla, classes abstratas, mtodos estticos, mtodos constantes emembros protegidos, incrementando o suporte a orientao a objeto. Em 1990 foilanado o livro The Annotated C++ Reference Manual, que tornou-se base para ofuturo padro. Outras adies na linguagem incluem gabaritos, tratamento deexcees, espao de nomes, converso segura de tipo de dado e o tipo booleano.

    Assim como a linguagem, sua biblioteca padro tambm sofreu melhorias aolongo do tempo. Sua primeira adio foi a biblioteca deE/S, e posteriormente

    a Standard Template Library (STL); ambas tornaram-se algumas das principaisfuncionalidades que distanciaram a linguagem em relao a C. Criadaprimordialmente naHP por Alexander Stepanov no incio da dcada de 1990 paraexplorar os potenciais da programao genrica, a STL foi apresentada a um comitunificadoANSIe ISO em 1993 convite de Andrew Koenig. Aps uma propostaformal na reunio do ano seguinte, a biblioteca recebe o aval do comit.

    Depois de anos de trabalho, o mesmo comit ANSI/ISO padronizou o C++

    em 1998 (ISO/IEC 14882:1998). Aps alguns anos foram reportados defeitos eimprecises no documento, e uma correo foi lanada em 2003.

    Por muito tempo, o C++ foi encarado como um super conjunto do C.Entretanto, em 1999 o novo padro ISO para a linguagem C tornou as duaslinguagens ainda mais diferentes entre si. Devido a essas incompatibilidades, muitasempresas que desenvolvem compiladores no oferecem suporte verso maisrecente da linguagem C.

    Pode-se dizer que C++ foi a nica linguagem entre tantas outras que obtevesucesso como uma sucessora linguagem C, inclusive servindo de inspirao paraoutras linguagens como Java, a IDLde CORBAe C .

    http://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/Pr%C3%A9-processadorhttp://pt.wikipedia.org/wiki/Operadorhttp://pt.wikipedia.org/wiki/Refer%C3%AAncia_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Constante_(programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Gerenciamento_de_mem%C3%B3riahttp://pt.wikipedia.org/wiki/Tipo_de_dadohttp://pt.wikipedia.org/wiki/1985http://pt.wikipedia.org/wiki/1989http://pt.wikipedia.org/wiki/Heran%C3%A7a_m%C3%BAltiplahttp://pt.wikipedia.org/wiki/1990http://pt.wikipedia.org/wiki/Espa%C3%A7o_de_nomeshttp://pt.wikipedia.org/wiki/Booleanohttp://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2Bhttp://pt.wikipedia.org/wiki/E/Shttp://pt.wikipedia.org/wiki/Standard_Template_Libraryhttp://pt.wikipedia.org/wiki/Hewlett-Packardhttp://pt.wikipedia.org/wiki/Alexander_Stepanovhttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1990http://pt.wikipedia.org/wiki/ANSIhttp://pt.wikipedia.org/wiki/ISOhttp://pt.wikipedia.org/wiki/1993http://pt.wikipedia.org/wiki/Andrew_Koenighttp://pt.wikipedia.org/wiki/1998http://pt.wikipedia.org/wiki/ISO/IEC_14882http://pt.wikipedia.org/wiki/2003http://pt.wikipedia.org/wiki/1999http://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_Javahttp://pt.wikipedia.org/wiki/Linguagem_de_descri%C3%A7%C3%A3o_de_interfacehttp://pt.wikipedia.org/wiki/CORBAhttp://pt.wikipedia.org/wiki/C%E2%99%AFhttp://pt.wikipedia.org/wiki/C%E2%99%AFhttp://pt.wikipedia.org/wiki/C%E2%99%AFhttp://pt.wikipedia.org/wiki/C%E2%99%AFhttp://pt.wikipedia.org/wiki/CORBAhttp://pt.wikipedia.org/wiki/Linguagem_de_descri%C3%A7%C3%A3o_de_interfacehttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_Javahttp://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/1999http://pt.wikipedia.org/wiki/2003http://pt.wikipedia.org/wiki/ISO/IEC_14882http://pt.wikipedia.org/wiki/1998http://pt.wikipedia.org/wiki/Andrew_Koenighttp://pt.wikipedia.org/wiki/1993http://pt.wikipedia.org/wiki/ISOhttp://pt.wikipedia.org/wiki/ANSIhttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1990http://pt.wikipedia.org/wiki/Alexander_Stepanovhttp://pt.wikipedia.org/wiki/Hewlett-Packardhttp://pt.wikipedia.org/wiki/Standard_Template_Libraryhttp://pt.wikipedia.org/wiki/E/Shttp://pt.wikipedia.org/wiki/Biblioteca_padr%C3%A3o_do_C%2B%2Bhttp://pt.wikipedia.org/wiki/Booleanohttp://pt.wikipedia.org/wiki/Espa%C3%A7o_de_nomeshttp://pt.wikipedia.org/wiki/1990http://pt.wikipedia.org/wiki/Heran%C3%A7a_m%C3%BAltiplahttp://pt.wikipedia.org/wiki/1989http://pt.wikipedia.org/wiki/1985http://pt.wikipedia.org/wiki/Tipo_de_dadohttp://pt.wikipedia.org/wiki/Gerenciamento_de_mem%C3%B3riahttp://pt.wikipedia.org/wiki/Constante_(programa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Refer%C3%AAncia_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)http://pt.wikipedia.org/wiki/Operadorhttp://pt.wikipedia.org/wiki/Pr%C3%A9-processadorhttp://pt.wikipedia.org/wiki/1983
  • 7/28/2019 ATPS IVAIR

    20/26

    20

    Etimologia

    Durante sua fase inicial de desenvolvimento, a linguagem era chamada"novo C", "C84" ou ainda "C com classes". O termo "C++" creditado a RickMascitti,e foi utilizado pela primeira vez em dezembro de1983. Ele uma refernciaao operador de incremento ++, significando um acrscimo (uma evoluo) linguagem C. Em tom humorado, desenvolvedores software e especialistasem informticano incio da dcada de 1990 costumavam relacionar o ++ do nome grande insistncia dos programadores em utilizar o C++ da mesma forma que alinguagem C, no usufruindo das novas facilidades que a linguagem poderia

    fornecer. Assim como o ++ estava sendo aplicado de maneira ps-fixa letra C, alinguagem C++ era uma evoluo do C ps-fixada, que s tornar-se-ia realidade emalgum futuro remoto, no naquele momento.

    Trabalhos futuros

    A linguagem continua evoluindo de forma a fornecer novas funcionalidades.O grupo de desenvolvimento Boost.org trabalha para evoluir a biblioteca padro,informando o comit oficial da linguagem quais facilidades possuem maior retornopositivo dos usurios, seja por qualidade ou por utilidade, e quais ainda devem ser desenvolvidas. Tudo indica que o C++ continuar com sua natureza multiparadigma. Por exemplo, o trabalho da Boost .org dedica-se a acrescentar asqualidades da programao funcional e genrica. O padro C++ no define aimplementao para a definio de nomes e tratamento de excees, entre outras

    facilidades especficas, o que frequentemente torna incompatveis cdigosobjeto produzidos por diferentes compiladores. Apesar disso, existem padresperifricos especficos para certas plataformas ou sistemas operacionais parapadronizar compiladores dessas plataformas, como por exemplo, o C++ ABI.

    As empresas de desenvolvimento de compiladores ainda se esforam parasuportar inteiramente o padro, especialmente na rea de gabaritos. Uma dasdisputas se refere palavra reservada export , que permite que a definio de um

    gabarito seja separada de sua declarao. O primeiro compilador aimplementar export foi oComeau C++ em 2003 (cinco anos aps o lanamento do

    http://pt.wikipedia.org/wiki/1983http://pt.wikipedia.org/wiki/Operadorhttp://pt.wikipedia.org/wiki/Inform%C3%A1ticahttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1990http://pt.wikipedia.org/wiki/Biblioteca_Boosthttp://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcionalhttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_gen%C3%A9ricahttp://pt.wikipedia.org/wiki/C%C3%B3digo_objetohttp://pt.wikipedia.org/wiki/C%C3%B3digo_objetohttp://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/Sistema_operacionalhttp://pt.wikipedia.org/wiki/Palavra_reservadahttp://pt.wikipedia.org/wiki/Comeau_C%2B%2Bhttp://pt.wikipedia.org/wiki/2003http://pt.wikipedia.org/wiki/2003http://pt.wikipedia.org/wiki/Comeau_C%2B%2Bhttp://pt.wikipedia.org/wiki/Palavra_reservadahttp://pt.wikipedia.org/wiki/Sistema_operacionalhttp://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/C%C3%B3digo_objetohttp://pt.wikipedia.org/wiki/C%C3%B3digo_objetohttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_gen%C3%A9ricahttp://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcionalhttp://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Biblioteca_Boosthttp://pt.wikipedia.org/wiki/D%C3%A9cada_de_1990http://pt.wikipedia.org/wiki/Inform%C3%A1ticahttp://pt.wikipedia.org/wiki/Operadorhttp://pt.wikipedia.org/wiki/1983
  • 7/28/2019 ATPS IVAIR

    21/26

    21

    padro), e no ano seguinte uma verso beta do Borland C++ Builder X tambmsuportava a facilidade. Interessante notar que ambos os compiladores so baseadosna verso EDG do C++. Muitos livros fornecem exemplos de cdigos para

    implementar export que no so compilveis, mas no h referncias para oproblema mencionado. Outros compiladores como o Microsoft Visual C++eo GCC no suportam a facilidade. O secretrio do comit oficial do C++ HerbSutter recomendou que a palavra fosse removida de verses futuras do padro dalinguagem. mas aps discusso a deciso final foi mant-la.

    Outras disputas relativas a gabaritos se referem especializao parcial,que foi pouco suportada por muitos anos depois que o C++ padro foi lanado.

    Atualmente a linguagem tem uma nova especificao, conhecidapor C++11 e publicada como 14882:2011

    Exemplos de cdigo

    "Ol, Mundo!".

    #include

    using namespace std;

    int main() {cout

  • 7/28/2019 ATPS IVAIR

    22/26

    22

    so compiladas para cdigo nativo, a linguagem Java compilada paraum bytecode que executado por uma mquina virtual. A linguagem deprogramao Java a linguagem convencional da Plataforma Java, mas no sua

    nica linguagem.

    Histria

    Em 1991, na Sun Microsystems, foi iniciado o Green Project, o bero

    do Java, uma linguagem de programao orientada a objetos. Os mentores doprojeto eram Patrick Naughton, Mike Sheridan, eJames Gosling. O objetivo doprojeto no era a criao de uma nova linguagem de programao, mas antecipar eplanejar a prxima onda do mundo digital. Eles acreditavam que, em algum tempo,

    haveria uma convergncia dos computadores com os equipamentos eeletrodomsticos comumente usados pelas pessoas no seu dia-a-dia.

    Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamentedurante 18 meses. No vero de 1992 eles emergiram de um escritrio de Sand HillRoad, no Menlo Park, com uma demonstrao funcional da ideia inicial. O prottipose chamava *7 (l-se StarSeven), um controle remoto com uma interfacegrfica touchscreen. Para o *7, foi criado um mascote, hoje amplamente conhecidono mundo Java, o Duke. O trabalho do Duke no *7 era ser um guia virtual ajudandoe ensinando o usurio a utilizar o equipamento. O *7 tinha a habilidade de controlar diversos dispositivos e aplicaes. James Gosling especificou uma nova linguagemde programao para o *7. Gosling decidiu batiz-la de Oak, que quer

    dizer carvalho, uma rvore que ele podia observar quando olhava pela sua janela.O prximo passo era encontrar um mercado para o *7. A equipe achava que

    uma boa ideia seria controlar televises e vdeo por demanda com o equipamento.Eles construram uma demonstrao chamada de MovieWood, mas infelizmente eramuito cedo para que o vdeo por demanda bem como as empresas de TV acabo pudessem viabilizar o negcio. A ideia que o *7 tentava vender, hoje j realidade em programas interativos e tambm na televiso digital. Permitir ao

    telespectador interagir com a emissora e com a programao em uma grande rede

    http://pt.wikipedia.org/wiki/Compiladorhttp://pt.wikipedia.org/wiki/C%C3%B3digo_nativohttp://pt.wikipedia.org/wiki/Bytecode_Javahttp://pt.wikipedia.org/wiki/M%C3%A1quina_virtual_Javahttp://pt.wikipedia.org/wiki/Plataforma_Javahttp://pt.wikipedia.org/wiki/1991http://pt.wikipedia.org/wiki/1991http://pt.wikipedia.org/wiki/Sun_Microsystemshttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetohttp://pt.wikipedia.org/wiki/James_Goslinghttp://pt.wikipedia.org/wiki/1992http://pt.wikipedia.org/wiki/Menlo_Parkhttp://pt.wikipedia.org/wiki/Interface_gr%C3%A1ficahttp://pt.wikipedia.org/wiki/Interface_gr%C3%A1ficahttp://pt.wikipedia.org/wiki/Touchscreenhttp://pt.wikipedia.org/wiki/Duke_(mascote)http://pt.wikipedia.org/wiki/Oakhttp://pt.wikipedia.org/wiki/Oakhttp://pt.wikipedia.org/wiki/Oakhttp://pt.wikipedia.org/wiki/TV_a_cabohttp://pt.wikipedia.org/wiki/TV_a_cabohttp://pt.wikipedia.org/wiki/Televis%C3%A3o_digitalhttp://pt.wikipedia.org/wiki/Televis%C3%A3o_digitalhttp://pt.wikipedia.org/wiki/TV_a_cabohttp://pt.wikipedia.org/wiki/TV_a_cabohttp://pt.wikipedia.org/wiki/Oakhttp://pt.wikipedia.org/wiki/Duke_(mascote)http://pt.wikipedia.org/wiki/Touchscreenhttp://pt.wikipedia.org/wiki/Interface_gr%C3%A1ficahttp://pt.wikipedia.org/wiki/Interface_gr%C3%A1ficahttp://pt.wikipedia.org/wiki/Menlo_Parkhttp://pt.wikipedia.org/wiki/1992http://pt.wikipedia.org/wiki/James_Goslinghttp://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Sun_Microsystemshttp://pt.wikipedia.org/wiki/1991http://pt.wikipedia.org/wiki/Plataforma_Javahttp://pt.wikipedia.org/wiki/M%C3%A1quina_virtual_Javahttp://pt.wikipedia.org/wiki/Bytecode_Javahttp://pt.wikipedia.org/wiki/C%C3%B3digo_nativohttp://pt.wikipedia.org/wiki/Compilador
  • 7/28/2019 ATPS IVAIR

    23/26

    23

    de cabos, era algo muito visionrio e estava muito longe do que as empresas de TVa cabo tinham capacidade de entender e comprar. A ideia certa, na poca errada.

    Entretanto, o estouro da internet aconteceu e rapidamente uma grande rede

    interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do*7 estava tentando vender para as empresas de TV a cabo. E, da noite para o dia,no era mais necessrio construir a infra-estrutura para a rede, ela simplesmenteestava l. Gosling foi incumbido de adaptar o Oak para a internet e em janeiro 1995foi lanada uma nova verso do Oak que foi rebatizada para Java. A tecnologia Javatinha sido projetada para se mover por meio das redes de dispositivos heterogneos,redes como a internet. Agora aplicaes poderiam ser executadas dentro

    dos navegadores nos Applets Java e tudo seria disponibilizado pela internetinstantaneamente. Foi o esttico HTMLdos navegadores que promoveu a rpidadisseminao da dinmica tecnologia Java. A velocidade dos acontecimentosseguintes foi assustadora, o nmero de usurios cresceu rapidamente, grandesfornecedores de tecnologia, como a IBManunciaram suporte para a tecnologia Java.

    Desde seu lanamento, em maio de 1995, a plataforma Java foi adotadamais rapidamente do que qualquer outra linguagem de programao na histria da

    computao. Em 2004 Java atingiu a marca de 3 milhes de desenvolvedores emtodo mundo. Java continuou crescendo e hoje uma referncia no mercado dedesenvolvimento de software. Java tornou-se popular pelo seu uso na internet e hojepossui seu ambiente de execuo presente em navegadores, mainframes, sistemasoperacionais, celulares, palmtops, cartes inteligentes etc.

    Padronizao

    Em 1997 a Sun Microsystems tentou submeter a linguagem a padronizaopelos rgos ISO/IECe ECMA,mas acabou desistindo. Java ainda um padro defato, que controlada atravs da JCP Java Community Process. Em 13 denovembro de2006, a Sun lanou a maior parte do Java como Software Livresob ostermos da GNU General Public License(GPL). Em8 de maio de2007 a Sun finalizouo processo, tornando praticamente todo o cdigo Java como software de cdigo

    aberto, menos uma pequena poro da qual a Sun no possui copyright.

    http://pt.wikipedia.org/wiki/Internethttp://pt.wikipedia.org/wiki/Navegadorhttp://pt.wikipedia.org/wiki/HTMLhttp://pt.wikipedia.org/wiki/IBMhttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Internethttp://pt.wikipedia.org/wiki/Navegadorhttp://pt.wikipedia.org/wiki/Mainframehttp://pt.wikipedia.org/wiki/Sistema_operacionalhttp://pt.wikipedia.org/wiki/Sistema_operacionalhttp://pt.wikipedia.org/wiki/Celularhttp://pt.wikipedia.org/wiki/PDAhttp://pt.wikipedia.org/wiki/1997http://pt.wikipedia.org/wiki/ISOhttp://pt.wikipedia.org/wiki/IEChttp://pt.wikipedia.org/wiki/ECMAhttp://pt.wikipedia.org/wiki/Java_Community_Processhttp://pt.wikipedia.org/wiki/2006http://pt.wikipedia.org/wiki/Software_Livrehttp://pt.wikipedia.org/wiki/GNU_General_Public_Licensehttp://pt.wikipedia.org/wiki/8_de_maiohttp://pt.wikipedia.org/wiki/2007http://pt.wikipedia.org/wiki/2007http://pt.wikipedia.org/wiki/8_de_maiohttp://pt.wikipedia.org/wiki/GNU_General_Public_Licensehttp://pt.wikipedia.org/wiki/Software_Livrehttp://pt.wikipedia.org/wiki/2006http://pt.wikipedia.org/wiki/Java_Community_Processhttp://pt.wikipedia.org/wiki/ECMAhttp://pt.wikipedia.org/wiki/IEChttp://pt.wikipedia.org/wiki/ISOhttp://pt.wikipedia.org/wiki/1997http://pt.wikipedia.org/wiki/PDAhttp://pt.wikipedia.org/wiki/Celularhttp://pt.wikipedia.org/wiki/Sistema_operacionalhttp://pt.wikipedia.org/wiki/Sistema_operacionalhttp://pt.wikipedia.org/wiki/Mainframehttp://pt.wikipedia.org/wiki/Navegadorhttp://pt.wikipedia.org/wiki/Internethttp://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_computa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3ohttp://pt.wikipedia.org/wiki/IBMhttp://pt.wikipedia.org/wiki/HTMLhttp://pt.wikipedia.org/wiki/Navegadorhttp://pt.wikipedia.org/wiki/Internet
  • 7/28/2019 ATPS IVAIR

    24/26

    24

    Exemplos de cdigo

    Mtodo main

    public class OlaMundo {/** * Mtodo que executa o programa* public = visto em qualquer lugar da aplicao. o

    modificador de acesso * static = iniciado automaticamente pela JVM, sem precisar de

    uma instncia

    * void = Mtodo sem retorno (retorno vazio)* main = Nome do mtodo, que obrigatorio ser este. Recebe como

    parmetro um array de String.* String[] args = Array de argumentos que podem ser repassados na

    chamada do programa.*/

    public static void main(String[] args) {System.out.println("Ol, Mundo!"); //Imprime na tela a frase

    }}

    Classes

    public abstract class Animal { public abstract void fazerBarulho();

    }

    public class Cachorro extends Animal { public void fazerBarulho() {

    System.out.println("AuAu!");}

    }

    public class Gato extends Animal { public void fazerBarulho() {

    System.out.println("Miau!");}

    }

  • 7/28/2019 ATPS IVAIR

    25/26

  • 7/28/2019 ATPS IVAIR

    26/26

    26

    }}