WILSON HORSTMEYER BOGADO

Tamanho: px
Começar a partir da página:

Download "WILSON HORSTMEYER BOGADO"

Transcrição

1 WILSON HORSTMEYER BOGADO 3 a edição revisada PARANÁ CEFET-PR

2

3 Programação em Linguagem C++ iii 2002, Wilson Horstmeyer Bogado Nenhuma parte desta publicação, sem autorização prévia do autor, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa e adequada informação. Contudo o autor não assume responsabilidade pelos resultados e uso da informação fornecida. Recomendamos aos leitores testar a informação antes de sua efetiva utilização.

4 iv Wilson Horstmeyer Bogado

5 SUMÁRIO 1. INTRODUÇÃO AS ORIGENS DA LINGUAGEM C C COMO UMA LINGUAGEM ESTRUTURADA A LINGUAGEM C OS SETE ELEMENTOS BÁSICOS DA PROGRAMAÇÃO FUNDAMENTOS DA LINGUAGEM C ESTRUTURA DE UM PROGRAMA DIRETIVAS DE COMPILAÇÃO VARIÁVEIS E CONSTANTES SIMPLES FORMAÇÃO DE NOMES DE IDENTIFICADORES DECLARAÇÃO DE VARIÁVEIS VARIÁVEIS E CONSTANTES INTEIRAS VARIÁVEIS E CONSTANTES DE PONTO FLUTUANTE VARIÁVEIS E CONSTANTES DO TIPO CARACTERE VARIÁVEIS E CONSTANTES LÓGICAS PONTEIROS CRIAÇÃO DE STRINGS REFERÊNCIAS OBTENDO O TAMANHO DE UM DADO MUDANÇA DE TIPO (TYPE CASTING) MODIFICADORES DE CLASSE DE ARMAZENAMENTO ENTRADA E SAÍDA DE DADOS BÁSICA INTRODUÇÃO OBJETOS E MÉTODOS DE ENTRADA E SAÍDA OPERADORES ATRIBUIÇÃO OPERADORES ARITMÉTICOS OPERADORES DE INCREMENTO (++) E DECREMENTO (--) OPERADORES A NÍVEL DE BIT OPERADORES COMBINADOS OPERADORES DE ENDEREÇO OPERADORES RELACIONAIS E LÓGICOS A EXPRESSÃO CONDICIONAL OPERADOR DE RESOLUÇÀO DE ESCOPO QUADRO GERAL DE PRECEDÊNCIA INSTRUÇÕES DE PROGRAMAÇÃO INSTRUÇÕES COMPOSTAS INSTRUÇÃO IF O LAÇO WHILE O LAÇO DO...WHILE O LAÇO FOR INSTRUÇÕES BREAK E CONTINUE INSTRUÇÃO SWITCH INSTRUÇÃO RETURN DECLARAÇÃO E DEFINIÇÃO DE FUNÇÕES PROTÓTIPOS DE FUNÇÕES FUNÇÕES COM PARÂMETROS PREDEFINIDOS FUNÇÕES INLINE REDEFINIÇÃO DE FUNÇÕES FUNÇÕES RECURSIVAS VARIÁVEIS ESTRUTURADAS USO DE TYPEDEF TIPOS ENUMERADOS ARRANJOS RELAÇÃO ENTRE ARRANJOS E PONTEIROS ESTRUTURAS UNIÕES... 65

6 vi Programação em Linguagem C++ 9. ALOCAÇÃO DINÂMICA DE MEMÓRIA ALOCANDO MEMÓRIA ESTRUTURAS DE DADOS COM ALOCAÇÃO DINÂMICA CLASSES DECLARAÇÕES DE CLASSES INICIALIZAÇÃO DOS MEMBROS DE UMA CLASSE PONTEIROS, REFERÊNCIAS E ARRAYS DE OBJETOS O CONSTRUTOR DE CÓPIA HERANÇA CLASSES POLIMÓRFICAS, ABSTRATAS E FUNÇÕES VIRTUAIS REDEFINIÇÃO DE OPERADORES CONDIÇÕES PARA REDEFINIÇÃO OPERADORES UNÁRIOS OPERADORES BINÁRIOS REDEFINIÇÃO DE NEW E DELETE MANIPULAÇÃO DE ARQUIVOS EM C TIPOS DE ARQUIVOS MÉTODOS GENÉRICOS PARA OBJETOS DE ENTRADA E SAÍDA SAÍDA DE DADOS ENTRADA DE DADOS TRATAMENTO DE ERROS EM C INTERCEPTANDO EXCEÇÕES DECLARAÇÕES DE EXCEÇÕES TEMPLATES TEMPLATES DE FUNÇÕES TEMPLATES DE CLASSES PROGRAMAÇÃO PARA WINDOWS UM PROGRAMA WINDOWS BÁSICO OUTROS RECURSOS DE PROGRAMAÇÃO WINDOWS APÊNDICE A - BIBLIOTECA DE FUNÇÕES A.1 FUNÇÕES MATEMÁTICAS A.2 FUNÇÕES DE CONVERSÃO A.3 FUNÇÕES PARA MANIPULAÇÃO DE STRINGS A.4 FUNÇÕES PARA MANIPULAÇÃO DE MEMÓRIA A.5 FUNÇÕES PARA ENTRADA/SAÍDA A.6 FUNÇÕES DE USO GERAL A.7 FUNÇÕES PARA MANIPULAÇÃO DE ARQUIVOS APÊNDICE B - REFERÊNCIAS BIBLIOGRÁFICAS

7 1. INTRODUÇÃO 1.1 AS ORIGENS DA LINGUAGEM C A linguagem C foi inventada por Dennis Ritchie em 1972 e implementada pela primeira vez em um computador DEC PDP-11, utilizando o sistema operacional UNIX. A linguagem C é o resultado de um processo de desenvolvimento que começou com uma linguagem chamada BCPL. O BCPL, desenvolvido por Martin Richards, influenciou uma linguagem chamada B, inventada por Ken Thompson, e que levou ao desenvolvimento do C. Por muitos anos, o padrão de fato para a linguagem C foi aquele utilizado com a versão 7 do sistema operacional UNIX. Este padrão está descrito no livro The C Programming Language, escrito por Brian Kernighan e Dennis Ritchie. Com o aumento da popularidade dos microcomputadores, uma grande quantidade de implementações de C foram criadas; muitas destas implementações eram altamente compatíveis entre si, a nível de código fonte. Entretanto, em virtude de não existir um padrão, ocorriam discrepâncias. Para corrigir esta situação, foi instalado em 1983 um comitê para criação de um padrão ANSI que finalmente definisse a linguagem C. Mais recentemente a linguagem C foi estendida para suportar a programação orientada a objetos (POO), dando origem ao C C COMO UMA LINGUAGEM ESTRUTURADA C é comumente considerada como uma linguagem estruturada, com algumas semelhanças com o ALGOL e Pascal. Embora o termo linguagem estruturada em blocos não se aplique estritamente ao C, academicamente falando, informalmente podemos dizer que o C faz parte deste grupo de linguagens. A característica que distingue uma linguagem estruturada em blocos é a compartimentalização de código e dados. Isto significa que a linguagem pode separar e ocultar do resto do programa todas as informações e instruções necessárias para realizar uma tarefa específica. A compartimentalização é obtida através de sub-rotinas com variáveis locais, que são temporárias. Desta maneira é possível escrever sub-rotinas tais que os eventos ocorridos dentro destas não causam efeitos colaterais em outras partes do programa. O uso excessivo de variáveis globais (que são reconhecidas em todo o programa) pode propiciar o aparecimento de erros, devido a efeitos colaterais indesejáveis. Em C, todas as sub-rotinas são funções. As funções são os blocos construtivos de um programa em C, dentro das quais ocorrem todas as atividades. As funções permitem que diferentes tarefas de um programa sejam definidas e

8 2 Wilson Horstmeyer Bogado codificadas separadamente. Após depurar uma função que utiliza somente variáveis locais, pode-se ter certeza de que esta funcionará corretamente em diferentes situações, sem produzir efeitos colaterais em outras partes do programa. Todas as variáveis declaradas dentro de uma função são reconhecidas somente dentro desta função. Usar blocos de código também cria a estrutura de um programa em C. Um bloco de código é um grupo de instruções de programa que podem ser tratadas como uma unidade. Cria-se um bloco colocando-se instruções entre chaves, note: if (x < 10) printf( dados invalidos - tente novamente ); fim = 0; Neste exemplo, as duas instruções após o if (entre chaves) são ambas executadas se x for menor que 10. As duas instruções, juntamente com as chaves, representam um bloco de código. As instruções estão ligadas: uma instrução não pode ser executada sem que a outra também o seja. Em C, cada instrução pode ser uma instrução simples ou um bloco de instruções. O uso de blocos de instruções cria programas fáceis de serem lidos e com uma lógica facilmente compreensível. O C é uma linguagem para programadores. Ao contrário da maioria das linguagens de alto nível, o C impõe poucas restrições ao que pode ser feito. Através da utilização do C pode-se evitar, quase que por completo, a utilização da linguagem assembly. De fato, um dos motivos para a invenção da linguagem C foi oferecer uma alternativa para programação em linguagem assembly. O C foi inicialmente usado para a programação de sistemas. Um programa de sistema é parte de uma grande classe de programas que formam o sistema operacional de um computador ou seus utilitários de apoio. Alguns programas de sistema são: Sistemas Operacionais Interpretadores Editores de Texto Assemblers Compiladores Gerenciadores de Bancos de Dados Com o crescimento da popularidade do C, muitos programadores começaram a utilizálo para todos os tipos de tarefas, em virtude de sua portabilidade e eficiência. Uma vez que há compiladores para praticamente todos os computadores, é fácil transportar programas de um equipamento para outro com pouca ou nenhuma alteração. Esta portabilidade economiza tempo e dinheiro. Os compiladores C tendem a produzir código bastante eficiente. Com todas estas vantagens, é difícil justificar o uso de qualquer outra linguagem. Talvez o real motivo pelo qual o uso do C esteja crescendo rapidamente seja, simplesmente, o fato de que os programadores gostam da linguagem. O C tem a velocidade do assembler com algumas poucas restrições do Pascal. Com C, o programador pode criar e manter sua própria biblioteca de funções, ajustada à sua personalidade. Porque o C permite - e, de fato, encoraja - a compilação por partes, grandes projetos são facilmente gerenciados. Muitos talvez tenham ouvido histórias de como o C é uma linguagem difícil de se aprender. Isto não é verdade. Claro que alguns programadores C se realizam escrevendo programas obscuros e de difícil compreensão e teste. Não há nada que indique que deva ser assim, os princípios básicos da linguagem C são fáceis de aprender e usar.

9 Programação em Linguagem C++: Introdução A LINGUAGEM C++ Bjarne Stroustrup desenvolveu o C++ nos Laboratórios Bell como uma versão do C que incorpora classes e suporta programação orientada a objetos (POO). Assim, muitos dos aspectos não orientados a objeto do C++ evoluíram das suas raízes em C e outros simplesmente mantem a sua forma original. A linguagem base, o subconjunto C de C++, é projetada de forma que existe uma estreita correspondência entre seus tipos, operadores, comandos e os objetos que os computadores tratam diretamente: números, caracteres e endereços. A filosofia básica do C++ é maximizar o uso de bibliotecas já testadas em C e introduzir o programador ao paradigma da POO e ao desenvolvimento de software. Embora C++ não seja uma linguagem orientada a objetos pura como o Smalltalk, seus recursos de POO são expressivos, oferecendo recursos de programação poderosos e sofisticados. A linguagem C++ usa as mesmas seqüências de chamadas de funções e retornos de C ou outras mais eficientes. Como um dos objetivos de C era substituir a programação em assembly nas tarefas de programção de sistemas mais exigentes, quando C++ foi projetada, foi tomado cuidado para não comprometer os ganhos nesta área. A diferença entre C e C++ está principalmente no grau de ênfase em tipos e estrutura. C é expressiva e permissiva. C++ é ainda mais expressiva, entretanto, para obter este aumento de expressividade deve-se prestar mais atenção aos tipos de objetos. O conhecimento dos tipos de objetos permite ao compilador detectar erros que, de outro modo, persistiriam até a fase de testes ou mesmo após. A ênfase de C++ na estrutura reflete o aumento no tamanho de programas desde que C foi projetada. Pode-se fazer um programa pequeno (digamos, 1000 linhas) funcionar através da força bruta mesmo quebrando todas as regras do bom estilo. Para um programa maior isto não é possível. Se a estrutura de um programa de linhas é ruim, veremos que novos erros são introduzidos tão rapidamente quanto os antigos são removidos. C++ foi projetada para permitir que grandes programas sejam estruturados de forma racional, de modo que uma única pessoa seja capaz de enfrentar grandes quantidades de código. Adicionalmente, o objetivo era ter uma linha média de código C++ muito mais expressiva do que uma linha de C ou Pascal.O C++ mostrou que excedeu estes objetivos. C++ suporta uma variedade de estilos de programação. Todos são baseados na verificação forte e estática de tipos e a maioria tem o intuito de obter um alto nível de abstração e a representação direta das idéias do programador. O mais importante a fazer quando se está aprendendo C++ é manter o foco de atenção nos conceitos e evitar perder-se em detalhes técnicos. O objetivo de aprender uma linguagem de programação é tornar-se um programador melhor; isto é, tornar-se mais eficaz no projeto e implementação de novos sistemas e na manutenção de sistemas antigos. Para isto, uma valorização da programação e de técnicas de projeto é muito mais importante do que o entendimento de detalhes; esse entendimento virá com o tempo.

10 4 Wilson Horstmeyer Bogado

11 2. FUNDAMENTOS DA LINGUAGEM C ESTRUTURA DE UM PROGRAMA A estrutura de um programa em C++ é composta dos seguintes elementos: diretivas de compilação definições de tipos e classes protótipos de funções modelos de funções e classes (templates) variáveis funções e métodos comentários Estes elementos podem ser livremente misturados. Um programa em C++ consiste inteiramente de funções ou métodos. Dentre todas as funções que declaramos, uma deve chamar-se main, isto é, o corpo principal do programa. Em outras palavras, quando um programa em C++ inicia a execução, main é chamada e pode, por sua vez, chamar outras funções. Algumas funções, entretanto, são do tipo void, significando que elas não retornam valor algum. Podemos, também, ignorar qualquer valor retornado por uma função. As funções têm a seguinte estrutura: tipo NomeFunc(declaração de parâmetros) declarações locais instruções Vejamos um exemplo de um programa simples: /* PRIMCPP.CPP */ #include <iostream.h> // prototipos das funcoes int max(int a, int b); void troca(int& a, int& b); void main() int i = 10, j = 15, k; // declaracao de variaveis locais k = max(i, j); // chamada a funcao max

12 6 Wilson Horstmeyer Bogado troca(i, k); // chamada a funcao troca cout << "i = " << i << " j = " << j; cout << " k = " << k << endl; // retorna o maior valor entre seus parametros int max(int a, int b) if (a > b) return(a); else return(b); // troca o conteudo de duas variaveis inteiras void troca(int& a, int& b) int temp = a; // variavel local auxiliar a = b; b = temp; Podemos identificar, neste pequeno programa, os principais elementos que compõem qualquer programa em linguagem C++. Diferentemente da maioria das linguagens, em C++ letras minúsculas são distintas de letras maiúsculas. Todas as palavras reservadas da linguagem são definidas em minúsculo, isto é, else é uma palavra reservada enquanto ELSE ou Else não o são. Por este motivo, é prática comum os programas serem escritos, quase que totalmente, em minúsculo. O programa inicia com um comentário. Na linguagem C++ comentários que iniciam com o símbolo /* e terminam com o símbolo */ podem ocupar várias linhas. Por outro lado, comentários que iniciados com // somente se estendem até o final da linha. Na segunda linha temos uma diretiva de compilação. A instrução #include <iostream.h> solicita a inserção (inclusão) do arquivo iostream.h durante a compilação, ou seja, o conteúdo deste arquivo será tratado como se fizesse parte do mesmo arquivo em que está o programa. O símbolo # deve preceder todas as diretivas de compilação. Na linguagem C++ o ponto-e-vírgula tem a função de terminador e deve ser usado ao final de todas as instruções. As quebras de linha e identação que utilizamos ao escrever programas servem apenas para facilitar a leitura e são ignoradas pelo compilador. Nas duas linhas seguintes temos os protótipos das funções max e troca, note que estes protótipos nada mais são do que os cabeçalhos das funções seguidos por ponto-e-vírgula. Um protótipo de função sempre deve terminar por ponto-e-vírgula. Protótipos são obrigatórios em C++. Observemos com atenção o protótipo da função troca: os seus argumentos são do tipo referência para int, isto significa que a passagem dos parâmetros será feita por referência, indicando que a função receberá as próprias variáveis. A função max, entretanto, recebe uma cópia das variáveis pois a passagem é por valor. A função main faz chamadas às funções max e troca e, ao final, utiliza o objeto cout, em conjunto com o operador << para mostrar os resultados do programa. Como podemos observar, para fazer chamada a uma função basta escrever o seu nome e, entre parênteses, colocar os parâmetros que a função vai receber. Ainda que uma função não tenha parâmetros, os parênteses vazios são obrigatórios.

13 Programação em Linguagem C++: Fundamentos da Linguagem C++ 7 A seguir temos a declaração da função max. A palavra int antes do nome da função indica que esta é uma função do tipo int, isto é, o seu valor de retorno é um inteiro. Entre parênteses temos os argumentos ou parâmetros que esta função aceita. Neste caso a função aceita dois valores inteiros a e b, também chamados de parâmetros formais. Note que os parâmetros devem ser separados por vírgulas e, neste caso, são somente de entrada, isto é, mesmo que seus valores sejam alterados dentro da função, os valores não serão passados à função que a chamou. O objetivo desta função é determinar o maior valor entre a e b. A função troca é do tipo void, isto é, não tem valor de retorno. O objetivo da função troca é trocar o valor de seus parâmetros (a e b). É importante notar os &s colocados na declaração de a e b, eles indicam que estes parâmetros são referências para int,. Esta função declara a variável local temp, do tipo int. Exercícios 2.1 a) Escreva a função min() que retorna o menor dos parâmetros (a e b). Baseie-se na função max() vista anteriormente. Obs.: o operador menor que é <. b) Na função main(), introduza a variável inteira m e faça m = min(i, j) e troque, agora, os valores de i e k. Faça com que o programa mostre os valores de i, j, k e m. 2.2 DIRETIVAS DE COMPILAÇÃO Diretivas de compilação são comandos que instruem o compilador a realizar determinadas tarefas antes de iniciar a compilação de todo ou parte do programa. Por este motivo são também chamadas de diretivas de pré-processador. Todas as diretivas iniciam com o símbolo #. Note que não usamos ponto-e-vírgula após as diretivas. Uma das diretivas mais empregadas e que aparece em praticamente todos os programas é #include, sua forma geral é #include <nome-arquivo> ou #include nome-arquivo O #include pode aparecer várias vezes e instrui o compilador a ler e compilar o arquivo especificado. Qualquer arquivo que contenha instruções em linguagem C pode ser incluído. Em geral, os arquivos incluídos não contêm instruções que geram qualquer código executável, mas apenas protótipos de funções, definições de tipos e outras diretivas de compilação. Outra diretiva bastante empregada é o #define. Sua forma geral é #define nome texto Neste caso, nome deve ser um identificador válido e texto, que é opcional, é qualquer combinação de caracteres. Esta diretiva instrui o compilador a substituir todas as ocorrências de nome por texto. Por exemplo, se quiséssemos usar a palavra TRUE para representar o número 1 e FALSE para representar o número 0, poderíamos escrever #define TRUE 1 #define FALSE 0

14 8 Wilson Horstmeyer Bogado Substituições mais complexas também podem ser realizadas. Por exemplo #define soma(x, y) (x + y) Isto faria com que a instrução total = soma(valor1, valor2); fosse substituída por total = (valor1 + valor2); A linguagem C++ oferece, também, a possibilidade de realizar compilação condicional, isto é, compilar ou não determinadas partes do programa, dependendo de certas condições préestabelecidas. Algumas das diretivas que se aplicam à compilação condicional são #ifdef, #ifndef, #else e #endif. Em poucas palavras, estas diretivas verificam se um determinado símbolo foi definido (geralmente com #define) e compilam, ou não, determinada parte do programa. A diretiva #ifdef verifica se um determinado símbolo está definido e #ifndef faz o teste contrário. A diretiva #else só pode ser usada em conjunto com as anteriores e tem a função de especificar uma ação alternativa no caso de o teste falhar. A diretiva #endif deve ser usada para terminar o #ifdef e o #ifndef. Vejamos um exemplo: #define MS_DOS #ifdef MS_DOS prog = \\progs\\ordena path = \\editor\\dados #else prog =../usr/progs/ordena path =../usr/editor/dados #endif Exercício 2.2 Localize o arquivo iostream.h em seu sistema e veja o seu conteúdo. Obs.: em hipótese alguma modifique este arquivo!

15 3. VARIÁVEIS E CONSTANTES SIMPLES 3.1 FORMAÇÃO DE NOMES DE IDENTIFICADORES Os nomes que damos a constantes, tipos de dados, variáveis e funções são conhecidos como identificadores. As regras para criação destes nomes são as seguintes: Todos os identificadores devem começar por uma letra (a-z ou A-Z) ou um sublinhado (_). O resto do identificador pode consistir de letras, sublinhados e/ou dígitos (0-9). Nenhum outro caractere é permitido. Letras minúsculas são diferentes de letras maiúsculas, isto é, os identificadores indx, Indx e INDX são diferentes e distintos um do outro. Alguns exemplos de nomes de identificadores: texto Texto TEXTO prim_vez _maximo i i1 Exercício 3.1 Assinale os identificadores válidos: a. ( )tempo g. ( ) 2oTempo b. ( ) R$ h. ( ) ValorMinimo c. ( ) C&A i. ( ) sgpglb_display_file d. ( ) erro j. ( ) Lotus123 e. ( ) imax k. ( ) _data_ f. ( ) DT l. ( ) _ 3.2 DECLARAÇÃO DE VARIÁVEIS Todas as variáveis devem ser declaradas antes de poderem ser utilizadas. A forma geral de declaração é: tipo nome_var = valor;

16 10 Wilson Horstmeyer Bogado O valor de inicialização da variável é opcional e, na maioria dos casos, não é necessário. Várias variáveis de um mesmo tipo podem ser declaradas e inicializadas em uma única declaração. Os seguintes exemplos deverão esclarecer: int i; float valor = 1.234; unsigned inicio = 0, fim = 83; char opcao_menu; unsigned long inicio, fim = ; As seguintes condicões se aplicam à declaração de variáveis em C++: Variáveis podem ser declaradas em qualquer parte do programa e não apenas no início dos blocos; Uma variável passa a existir a partir do ponto em que é declarada e é destruída ao final do bloco em que está declarada. Variáveis podem ser declaradas com parte de uma instução. Neste caso o escopo da variável é o escopo da instrução. Vejamos um exemplo: #include <iostream.h> void main() for (int i = 1; i < 3; i++) int j = 3; cout << i; cout << i; // ERRO: i esta fora do escopo cout << j; // ERRO: j nao foi declarada Exercícios 3.2 a) Declare 2 variáveis de nomes taxamax e taxamin do tipo double. b) Declare uma variável de tipo int, de nome IndCorr e a inicialize com o valor 15. c) Declare 3 variáveis de nomes soma, total e parcial do tipo long double. 3.3 VARIÁVEIS E CONSTANTES INTEIRAS Além do tipo int, que é o principal tipo de variável inteira, podemos criar outros através da utilização dos modificadores de tipo signed, unsigned, short e long. O espaço ocupado, em bytes, por cada um destes tipos depende da implementação. Somente é garantido que uma variável do tipo short, por exemplo, não ocupará mais bytes que uma do tipo long. Os modificadores short e long determinam o número de bytes ocupados pela variável enquanto que os modificadores signed e unsigned determinam se o valor armazenado será considerado com ou sem sinal. Se nada for especificado, as variáveis serão consideradas como signed. A palavra int pode ser omitida, portanto, escrever unsigned int é equivalente a escrever simplesmente unsigned e escrever unsigned long int é equivalente a escrever simplesmente unsigned long. Para compiladores 32 bits temos, em geral, a seguinte tabela:

17 Programação em Linguagem C++: Variáveis e Constantes Simples 11 TIPO BYTES VARIAÇÃO int a unsigned int 4 0 a short int a unsigned short int 2 0 a long int a unsigned long int 4 0 a Podem ser utilizadas constantes com valores que variam de 0 a (base 10). Constantes que excedam esse valor são truncadas. Constantes negativas são, simplesmente, constantes positivas precedidas pelo operador unário negativo. Constantes em representação octal (base 8) e hexadecimal (base 16) também são aceitas. O sufixo L (ou l), colocado após uma constante, força a interpretação desta como long. Da mesma forma o sufixo U (ou u) força a sua interpretação como unsigned e será unsigned long se o seu valor for superior a 65535, independentemente da base de numeração. Pode-se utilizar ambos os sufixos em uma mesma constante. Identificamos as constantes decimais simplesmente pelo seu valor. Constantes octais devem começar com um dígito 0. As constantes hexadecimais devem ser precedidas pelo símbolo 0x. O tipo de uma constante, na ausência de um sufixo, é o primeiro dos seguintes tipos que possa acomodar o valor: Decimal: int, long int, unsigned long int Octal: int, unsigned int, long int, unsigned long int Hexadecimal: int, unsigned int, long int, unsigned long int Se a constante tiver o sufixo U ou u, seu tipo será unsigned int ou unsigned long int, aquele que acomodar o valor. Se a constante tiver o sufixo L ou l, seu tipo será long int ou unsigned long int, aquele que acomodar o valor. Se a constante tiver ambos os sufixos eu tipo será unsigned long int. Exemplos de constantes: VALOR BASE INTERPRETAÇÃO int int long 45L 10 long 45LU 10 unsigned long int 0x0 16 int 0x8A1F3B2F 16 unsigned int

18 12 Wilson Horstmeyer Bogado Exercício 3.3 Identifique o tipo, base de numeração e o valor em decimal das seguintes constantes: a) 1 e) 10 b) f) 0x10 c) 35000U g) 5L d) 010 h) -1U 3.4 VARIÁVEIS E CONSTANTES DE PONTO FLUTUANTE Tipos de dados de ponto flutuante são utilizados para representar quantidades não inteiras, isto é, com ponto decimal. O nome deve-se ao fato de que podemos representar o mesmo número colocando o ponto decimal em diferentes posições. Para isto usamos a notação científica. O tipo mais simples de variável de ponto flutuante é float. Novamente, o número de bytes e a faixa de valores que este tipo pode armazenar são dependentes da implementação. Além deste, existem também os tipos double e long double. O tipo determina, também, a precisão com que os valores podem ser armazenados. A precisão é dada pelo número máximo de dígitos significativos que a variável pode reter. Para um compilador de 32 bits, uma possível definição seria a seguinte: TIPO BYTES VARIAÇÃO DÍG. SIGNIF. float 4 3.4x10-38 a 3.4x double 8 1.7x a 1.7x long double x a 1.1x Todas as constantes de ponto flutuante, por definição, são do tipo double, mas podemos forçá-las a ser do tipo float, adicionando o sufixo F (ou f), ou do tipo long double, adicionando o sufixo L (ou l). Números em notação científica podem ser representados através do uso do sufixo e (ou E) por exemplo: -1.35e-12 representa o número -1,35 x Alguns exemplos de constantes de ponto flutuante: F e-5F e274 Representa o número -13,7845, é do tipo double e tem 6 dígitos significativos. Representa o número 367,5, é do tipo double e tem 4 dígitos significativos. Representa o número ,0, pois é do tipo float e, portanto, há arredondamento dos dígitos menos significativos com conseqüente perda de precisão. Representa o número 0,00521, é do tipo double e tem 3 dígitos significativos. Representa o número 521x10-5 ou 0,00521 ou 5,21x10-3, etc., é do tipo float e tem 3 dígitos significativos. Representa o número -253,778893x10274, é do tipo double e tem 9 dígitos significativos.

19 Exercícios 3.4 Programação em Linguagem C++: Variáveis e Constantes Simples 13 a) Quantos bytes de memória ocuparão as seguintes constantes? F 2L b) Expresse as seguintes constantes na sintaxe da linguagem C++. No último exemplo expresse o valor também em notação científica com um dígito na parte inteira. Quantos dígitos significativos temos em cada um dos valores? 1, , ,67x , VARIÁVEIS E CONSTANTES DO TIPO CARACTERE Variáveis do tipo char ocupam um byte de memória e podem armazenar um caractere (seu código ASCII). Em C++, as variáveis deste tipo são tratadas da mesma forma que as variáveis inteiras e, se nada for especificado, são consideradas com sinal. Podem, dessa forma, armazenar valores de -128 a Se quisermos, podemos definí-las sem sinal escrevendo unsigned char armazenando, então, valores de 0 a 255. Constantes do tipo caractere são delimitadas por apóstrofos ( ), exemplos: A, x. Quando desejamos representar um caractere não imprimível ou de controle, podemos utilizar o seu código ASCII em hexadecimal escrevendo \xh, H representando qualquer número de dígitos hexadecimais. Também é possível escrever o valor em octal através da notação \O, O representando até 3 dígitos octais. Alguns caracteres podem ser obtidos através de seqüências de escape. Seqüências de escape são grupos de dois ou mais caracteres que representam um único caractere. Geralmente este caracteres, ao serem impressos, provocam uma ação tal como mudar para a próxima linha da tela ou emitir um sinal sonoro. Um seqüência de escape sempre começa com uma barra invertida (\). As seqüências de escape definidas pela linguagem C são apresentadas na tabela abaixo. SEQÜENCIA VALOR CARACTERE EFEITO \a 0x07 BEL sinal audível \b 0x08 BS backspace \f 0x0C FF formfeed \n 0x0A LF newline \r 0x0D CR carriage return \t 0x09 HT tabulação horizontal \v 0x0B VT tabulação vertical \\ 0x5C \ barra invertida \ 0x2C apóstrofo \ 0x22 aspas

20 14 Wilson Horstmeyer Bogado Estas seqüências de escape podem ser utilizadas dentro de strings. Nos exemplos abaixo, \n e \x0a representam o caractere newline: uma linha\noutra linha uma linha\x0aoutra linha Atenção! Ao escrever o nome de um caminho de diretórios do Windows devemos lembrar de utilizar \\ para não introduzir, inadvertidamente, uma seqüência de escape que tornaria o nome do caminho inválido, por exemplo: c:\\tc\\util Vejamos alguns exemplos de declarações e utilização de variáveis do tipo char. Dadas a seguintes declarações: char codigo, inicial; unsigned char tipo, tab; são válidas, por exemplo, as seguintes atribuições: codigo = 65; /* codigo ASCII de A */ inicial = A ; /* caractere A - mesmo que o anterior */ tab = \t ; /* caractere TAB */ tipo = \x41 ; /* caractere 41 (hexa) = 65 (dec) */ tipo = \101 ; /* caractere 101 (octal) = 65 (dec) */ tipo = inicial + 1; /* resulta em B */ tipo = A + 1; /* o mesmo que o anterior */ Exercícios 3.5 a) Declare uma variável de nome bell e armazene nela o caractere BEL. b) Declare uma variável de nome aspas e armazene nela o caractere correspondente. c) Declare uma variável de nome aux e armazene nela o caractere de código ASCII 202. Utilize o formato em decimal, octal e hexadecimal. 0bs.: 202 (dec) = CA (hexa) = 312 (octal). 3.6 VARIÁVEIS E CONSTANTES LÓGICAS Variáveis do tipo bool e os literais false e true podem ser usados para representar valores lógicos. O tipo bool pode assumir somente um destes dois valores. O literal false representa o valor 0 e true representa 1. O tipo bool pode ser convertido para int. Alguns exemplos: bool b; int x = 5, y; b = x > 10; // b = false if (b) return; b = true; y = b; // y = 1 b = x; // b = true Em C++ qualquer valor igual a zero é falso e qualquer valor diferente de zero é verdadeiro.

21 Programação em Linguagem C++: Variáveis e Constantes Simples PONTEIROS As variáveis das quais tratamos até agora contêm dados, isto é, a informação que o programa está manipulando. Entretanto, algumas vezes, queremos saber onde determinados dados estão armazenados ao invés de, simplesmente, seu valor. Para isto necessitamos de ponteiros. Um ponteiro é uma variável que contém o endereço (localização de memória) de algum dado ao invés do próprio dado. Podemos usar um ponteiro para apontar para diferentes dados ou estruturas de dados. Ao mudar o endereço que o ponteiro armazena podemos manipular (atribuir, recuperar, modificar) informação em várias localizações na memória. Isto permite, por exemplo, percorrer uma lista encadeada de estruturas com um único ponteiro. O uso de ponteiros permite criar novas variáveis (chamadas de variáveis dinâmicas) durante a execução do programa. O C++ permite requisitar uma determinada quantidade de memória (em bytes), retornando um endereço que pode ser armazenado em um ponteiro. Isto é denominado alocação dinâmica; pelo seu uso podemos adaptar o programa à quantidade de memória disponível no computador. Assim como qualquer outro tipo de variável, para utilizarmos um ponteiro, devemos declará-lo. Isto é feito precedendo o nome da variável por um asterisco (*). Considere o seguinte programa: // PONT01.CPP #include <iostream.h> void main() int ivar, *iptr; iptr = &ivar; ivar = 421; cout << endereco de ivar: << &ivar << endl; cout << conteudo de ivar: << ivar << endl; cout << conteudo de iptr: << iptr << endl; cout << valor apontado : << *iptr << endl; Este programa declara duas variáveis: ivar e iptr. A primeira é uma variável inteira, isto é, armazena um valor do tipo int. A segunda é um ponteiro para uma variável inteira, isto é, armazena o endereço de um valor do tipo int. O operador endereço-de (&), retorna o endereço de ivar. No programa acima, observe as seguintes atribuições: o endereço de ivar é atribuído a iptr o valor inteiro 421 é, então, atribuído a ivar Ao executar este programa obteremos um resultado semelhante a este: endereco de ivar: 0x0064fe00 conteudo de ivar: 421 conteudo de iptr: 0x0064fe00 valor apontado : 421 As primeiras duas linhas mostram o endereço e conteúdo de ivar, a terceira mostra o endereço que iptr armazena. Como podemos ver, este é o endereço da variável ivar, isto é, a localização de memória onde o programa decidiu criar ivar. O último valor apresentado são os dados armazenados neste endereço; os mesmos dados atribuídos a ivar. Note que o terceiro cout usou a expressão iptr para obter seu conteúdo (o endereço de ivar) e o último cout usou a expressão *iptr para obter os dados armazenados naquele endereço.

22 16 Wilson Horstmeyer Bogado Aqui está uma pequena variação do programa anterior: // PONT02.CPP #include <iostream.h> void main() int ivar, *iptr; iptr = &ivar; *iptr = 421; cout << endereco de ivar: << &ivar << endl; cout << conteudo de ivar: << ivar << endl; cout << conteudo de iptr: << iptr << endl; cout << valor apontado : << *iptr << endl; Este programa ainda atribui o endereço de ivar a iptr mas, ao invés de atribuir 421 a ivar, atribui a *iptr. Os resultados do programa serão exatamente os mesmos porque a instrução *iptr = 421 tem o mesmo efeito que ivar = 421, já que ivar e *iptr referem-se ao mesmo endereço de memória. Como os endereços de memória nada mais são do que números inteiros, podemos inicializar ponteiros com valores de variáveis e constantes inteiras. A constante NULL, definida nos arquivos stdlib.h e alloc.h, pode ser usada para inicializar um ponteiro. O valor NULL representa um ponteiro inválido e é usado para indicar que este ponteiro não aponta para endereço algum. Vejamos alguns exemplos de declaração de ponteiros: double *pd; /* ponteiro para double */ int *lista = NULL; /* ponteiro para int inicializado com NULL */ Exercícios 3.6 a) Declare dois ponteiros para short e dois ponteiros para float. b) Modifique o programa Pont02.c para que use as variáveis fvar e fptr do tipo float e ponteiro para float, respectivamente. 3.8 CRIAÇÃO DE STRINGS A linguagem C não define variáveis do tipo string mas oferece duas formas para representá-las. Podemos utilizar um vetor de caracteres ou um ponteiro para caracteres USANDO UM VETOR DE CARACTERES Observe o seguinte programa: // STR01.CPP #include <iostream.h> #include <string.h> void main() char msg[20]; strcpy(msg, "Linguagem C");

23 Programação em Linguagem C++: Variáveis e Constantes Simples 17 cout << msg << endl; O [20] após msg faz com que o compilador reserve espaço para até 19 caracteres, isto é, um vetor de 19 variáveis char. A vigésima posição será preenchida por um caractere nulo (ASCII 0). A variável msg, em si, não contém nenhum caractere; ela contém o endereço de memória do primeiro caractere. Quando o compilador encontra a instrução strcpy( Linguagem C ) ocorrem duas coisas: ele cria o string Linguagem C, seguido por um caractere nulo, em algum lugar dentro do código objeto chama a subrotina strcpy que copia os caracteres deste string, um de cada vez, para as posições de memória apontadas por msg. A cópia continua até que o caractere nulo no final do string seja copiado. Passamos o valor de msg - o endereço da primeira letra - para cout, que mostra os caracteres na tela até encontrar o caractere nulo. Esta forma de definição de strings (terminados por um caractere nulo), elimina qualquer limite arbitrário de comprimento. Um string pode ter qualquer comprimento, contanto que haja memória suficiente. Esquematicamente, podemos representar o funcionamento deste programa através da seguinte figura: endereço da primeira letra do string L i n g u a g e m C \0 strcpy(msg, Linguagem C ) [faz a cópia] L i n g u a g e m C \0???????? msg (endereço de destino da cópia) Como podemos observar, neste caso o string é armazenado duas vezes. Primeiro é armazenado pelo compilador como uma constante e depois é copiado para o endereço de memória alocado pelo compilador para msg USANDO UM PONTEIRO PARA CARACTERES Observe o seguinte programa: // STR02.CPP #include <iostream.h> void main() char *msg; msg = "Linguagem C"; cout << msg << endl;

24 18 Wilson Horstmeyer Bogado O asterisco na frente de msg informa ao compilador que este é um ponteiro para um caractere; em outras palavras, msg pode conter o endereço de algum caractere. O compilador, entretanto, não reserva nenhum espaço para armazenar caracteres nem inicializa msg. Quando o compilador encontra a instrução msg = Linguagem C ; ocorrem duas coisas: como antes, ele cria o string Linguagem C, seguido por um caractere nulo, no código objeto. atribui o endereço inicial deste string - o endereço da letra L - à variável msg. O cout funciona como anteriormente. A figura abaixo mostra, esquematicamente, o funcionamento desta versão do programa. Note que agora o string só precisou ser armazenado uma vez e que msg, agora, utiliza o mesmo espaço de memória do string constante. msg = Linguagem C L i n g u a g e m C \0 Há diferenças sutis entre os dois métodos de definição de strings. Mais adiante trataremos com mais detalhe. É possível modificar caracteres individuais através de um índice. O primeiro caractere é o de índice 0. Exemplos: msg[0] = X ; msg[10] = k ; Não existem, na linguagem C, operadores para manipular strings, todas as operações (comparação, concatenação, etc.) são realizadas por meio de funções da biblioteca. As principais funções para manipulação de strings estão descritas na seção A.3. Por exemplo, para comparar dois strings devemos usar a função strcmp. Vejamos um exemplo: // STR03.CPP #include <string.h> #include <iostream.h> void main() char texto1[20], texto2[30]; int cmp; cout << "Digite o texto1: "; cin.getline(texto1, 20); cout << "Digite o texto2: "; cin.getline(texto2, 30); cmp = strcmp(texto1, texto2); if (cmp < 0) cout << texto1 << " < " << texto2 << endl; if (cmp == 0) cout << texto1 << " = " << texto2 << endl; if (cmp > 0) cout << texto1 << " > " << texto2 << endl; Exercícios 3.8 a) Declare uma variável capaz de armazenar um string de 512 caracteres. b) Modifique o programa Str01.cpp para que troque o caractere C por Z e, em seguida, mostre novamente o string.

25 Programação em Linguagem C++: Variáveis e Constantes Simples 19 c) Escreva um programa que leia dois strings do teclado, os concatene em um terceiro string e mostre o string concatenado. Obs.: será preciso usar a função strcat. 3.9 REFERÊNCIAS A linguagem C++ define um tipo de dado chamado de referência para, declarado através do declarador & (não confundir com o operador &). As referências são também chamadas de apelidos (alias) pois substituem identicamente a variável referenciada. Os argumentos para funções também podem ser referências resultando, na prática, em passagem de valor por referência. Os exemplos a seguir exemplificam o uso de referências: // criando um alias para variaveis int i = 0; int *ip; int &ir = i; // ir e um alias para i ir = 2; // o mesmo que i = 2; ip = &ir; // ip recebe o endereco de i // parametros do tipo referencia void func1(int i); void func2(int &ir); //ir e do tipo referencia para int int soma = 3; func1(soma); func2(soma); // soma passada por valor // soma passada por referencia // tres implementacoes de uma mesma funcao // versao 1 int f1(int n) return 3 * n; int x, i = 4; x = f1(i); // x = 12, i = 4 // versao 2 void f2(int *np) *np = (*np) * 3; f2(&i); // i = 12 // versao 3 void f3(int &n) n = 3 * n; f3(i); // i = OBTENDO O TAMANHO DE UM DADO Em muitas situações é necessário determinar quantos bytes um determinado tipo, variável ou constante ocupa na memória. Para realizar esta tarefa, a linguagem C oferece o operador sizeof. A sua forma geral é

26 20 Wilson Horstmeyer Bogado sizeof(item) em que item pode ser o nome de um tipo, de uma variável ou mesmo uma constante ou expressão. O objetivo de sizeof é aumentar a portabilidade de programas que dependem do tamanho dos tipos de dados. O operador sizeof é avaliado em tempo de compilação funcionando, portanto, como uma constante dentro do programa. Alguns exemplos de expressões envolvendo sizeof: sizeof(float) sizeof(unsigned long) sizeof(min) (min é uma variável qualquer) 25 * sizeof(double) + 5 * sizeof(unsigned) 3.11 MUDANÇA DE TIPO (TYPE CASTING) Através da mudança de tipo podemos forçar um determinado tipo de dado a ser interpretado como se fosse outro. A forma geral é a seguinte: (tipo) variável ou (tipo) constante Na maioria dos casos o compilador fará a conversão correta e automática dos tipos sem a necessidade do uso de type casting. Por exemplo, quando atribuímos um int a um float ou quando uma função, em seu protótipo, exige a passagem de um float e passamos um int o compilador fará a conversão correta. Em alguns casos, entretanto, a conversão explícita é obrigatória. Um caso típico é o de atribuição entre ponteiros de tipos diferentes. Por exemplo, int a; float b; unsigned *up; int *kbdbuf = (int *) 0x41A; //convesao obrigatoria b = a; // conversao automatica de int para float up = (unsigned *) &a; // conversao obrigatoria 3.12 MODIFICADORES DE CLASSE DE ARMAZENAMENTO Os modificadores extern, const e static são usados para alterar a forma como o compilador armazena as variáveis às quais são aplicados EXTERN Quando o modificador extern é colocado antes da declaração de uma variável, o compilador fica sabendo que esta variável já foi declarada em algum lugar (provavelmente em outro módulo do programa). Este modificador, geralmente, é usado quando um programa é composto por vários módulos e dois ou mais destes módulos compartilham as mesmas variáveis globais. Exemplos: extern float taxa_juros; extern unsigned long numreg; Com estas declarações estamos informando ao compilador que as variáveis taxa_juros e numreg estão definidas em algum outro módulo do programa. O tipo das variáveis deve coincidir com a sua definição, caso contrário, teremos um erro de execução de difícil depuração.

27 Programação em Linguagem C++: Variáveis e Constantes Simples CONST Variáveis modificadas com const não podem ser alteradas durante a execução do programa, mas podem ser usadas em outros tipos de expressões. Estas variáveis recebem o seu valor através de um inicialização explícita. Por exemplo, const char *VIDEO_MEM = (const char *) 0xB L; const char codigo = Z ; char codaux; codaux = codigo - 5; /* nenhum problema */ codigo = codaux + 3; /* erro de compilacao! */ STATIC O modificador static instrui o compilador a manter uma variável local durante todo o tempo de execução do programa. Variáveis locais, normalmente, são destruídas quando a função retorna. O uso de static faz com que o seu valor seja retido entre chamadas de função. Variáveis estáticas são inicializadas somente uma vez. Por exemplo, // STATIC.CPP #include <iostream.h> int inc(int n) static int valor = 0; valor = valor + n; return valor; void main() int teste; teste = inc(35); /* teste = 35 */ cout << teste << endl; teste = inc(-50); /* teste = -15 */ cout << teste << endl; Exercícios 3.12 a) No programa Static.cpp, retire o modificador static e compare os resultados da execução do programa. b) Também no programa Static.cpp, declare a variável teste como const e tente compilar o programa.

28 22 Wilson Horstmeyer Bogado

29 4. ENTRADA E SAÍDA DE DADOS BÁSICA 4.1 INTRODUÇÃO Na linguagem C, a entrada e saída de dados é feita através de funções como printf, puts, scanf, gets, etc. As funções printf e scanf são as mais genéricas, mas exigem a especificação dos formatos de entrada e saída e, por outro lado, as funções que não exigem a especificação do formato operam sobre um único tipo de dado. Em C++ podemos usar funções (chamadas de métodos neste caso) da classe istream ou ostream. Para ter acesso a estes métodos é preciso declarar (instanciar) objetos destas classes. O compilador C++ cria os objetos cin (istream) e cout (ostream) previamente, de modo que não precisamos fazê-lo explicitamente. 4.2 OBJETOS E MÉTODOS DE ENTRADA E SAÍDA A classe istream redefine o operador >> para atuar sobre diferentes tipos de dados permitindo que a formatação correta seja obtida sem a necessidade de especificar explicitamente os tipos de dados envolvidos. Da mesma forma, a classe ostream redefine o operador << para formatar corretamente a saída de dados. Vejamos um exemplo de entrada e saída de dados: // ES01.CPP #include <iostream.h> void main() float v1, v2; cout << "Digite um numero: "; cin >> v1; cout << "Digite outro numero: "; cin >> v2; cout << "Total = " << (v1 + v2) << endl; Sem o uso de outros recursos, os dados são formatados para uma apresentação padrão. Para determinar o tamanho do campo, número de casas decimais, base de numeração, entre outros atributos, devemos usar manipuladores. Manipuladores são funções (métodos) que modificam a interpretação dos dados de entrada ou saída. Para que os manipuladores sejam reconhecidos pelo compilador é necessário incluir o arquivo iomanip.h. A tabela abaixo apresenta os manipuladores:

30 24 Wilson Horstmeyer Bogado MANIPULADOR dec hex oct ws endl ends flush setbase(int n) resetiosflags(long f) setiosflags(long f) setfill(int c) setprecision(int n) setw(int n) DESCRIÇÃO Converte o resultado para a base 10 (decimal) Converte o resultado para a base 16 (hexadecimal) Converte o resultado para a base 8 (octal) Elimina espaços em branco Insere uma quebra de linha Insere um caractere nulo Força o flush da saída Determina a base de numeração (0, 8, 10 ou 16). O valor 0 representa o padrão (decimal) Limpa os bits de formatação especificados em f Liga os bits de formatação especificados em f Ajusta o caractere de preenchimento para c Ajusta o número de dígitos significativos para valores de ponto flutuante Ajusta o tamanho do campo para n Os manipuladores setiosflags e resetiosflags usam uma máscara de bits para determinar uma formatação mais específica. A máscara deve ser composta através da combinação, com o operador, e uma série de constantes definidas na classe ios. Por pertencerem à classe ios, é necessário usar o operador de resolução de escopo (::) para fazer referência a elas. A tabela seguinte apresenta as constantes e uma descrição sucinta de cada uma. CONSTANTE skipws left right internal dec oct hex showbase showpoint uppercase showpos scientific fixed unitbuf stdio DESCRIÇÃO Ignora espaços em branco na entrada Alinha a saída à esquerda Alinha a saída à direita Preenche após o sinal ou indicador de base Converte para a base decimal Converte para a base octal Converte para a base hexadecimal Mostra o indicador de base Mostra o ponto decimal em valores de ponto flutuante Mostra os dígitos hexadecimais maiúsculos Mostra + com valores positivos Mostra valores de ponto flutuante em notação científica Usa ponto decimal fixo para números de ponto flutuante Executa flush em todos os arquivos Executa flush em stdio e stderr No exemplo abaixo, usamos manipuladores para formatar a saída de dados:

31 Programação em Linguagem C++: Entrada e Saída de Dados Básica 25 // ES02.CPP #include <iostream.h> #include <iomanip.h> // necessario para manipuladores parametrizados void main() float a, b, r; cout << "Entre com o valor de a: "; cin >> a; cout << "Entre com o valor de b: "; cin >> b; r = a / b; cout << "RESULTADO: " << setprecision(3) << setiosflags(ios::fixed) << a << '/' << b << '=' << r << endl; Usar cin para leitura de strings leva a um problema. Execute o programa abaixo e note que o programa só utiliza o seu primeiro nome na resposta. Por quê? Porque o espaço colocado após seu primeiro nome indicou o final do string. // ES03.CPP #include <iostream.h> void main() char nome[60]; cout << "Digite seu nome completo: "; cin >> nome; cout << "Ola, " << nome << endl; Para contornar este problema reescrevamos o programa da seguinte forma: // ES04.CPP #include <iostream.h> void main() char nome[60]; cout << "Digite seu nome completo: "; cin.getline(nome, 60); cout << "Ola, " << nome << endl; O método getline lê tudo o que digitamos, até que pressionemos Enter. Ele não armazena o Enter mas adiciona um caractere nulo (\0) no final.

32 26 Wilson Horstmeyer Bogado Exercícios 4.2 a) Execute o programa ES01 e digite valores numéricos inválidos para verificar as conseqüências. b) Execute os programas ES03 e ES04, digite um nome com mais de 59 caracteres e analise as conseqüências. c) Escreva um programa que leia dois valores reais a e b, calcule a razão entre eles, r = a / b e mostre o resultado sob a forma RESULTADO: / = Mostre os valores sempre com três casas decimais. d) Escreva um programa que leia o primeiro nome, inicial e o último nome de uma pessoa e o mostre na forma último_nome, primeiro_nome inicial. Exemplo: Nome: Francisco C Pereira Resultado: Pereira, Francisco C.

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

Programando em C++ Histórico da Linguagem C

Programando em C++ Histórico da Linguagem C Programando em C++ Joaquim Quinteiro Uchôa joukim@comp.ufla.br DCC-UFLA, 2002 Programando em C++ p.1/38 Histórico da Linguagem C Linguagem C: 1972 - Laboratório Bells, por Dennis Ritchie, a partir da linguagem

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

INTRODUÇÃO À LINGUAGEM C++

INTRODUÇÃO À LINGUAGEM C++ INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem

Leia mais

Programação: Tipos, Variáveis e Expressões

Programação: Tipos, Variáveis e Expressões Programação de Computadores I Aula 05 Programação: Tipos, Variáveis e Expressões José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/56 Valores Valor é uma entidade

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor

Leia mais

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00 Fundamentos da Programação 32 A. Conceito Variáveis contém dados: VIII. VARIÁVEIS de entrada que o computador precisa manipular; de saída que o computador precisa imprimir; e temporários, utilizados de

Leia mais

5 Apresentando a linguagem C

5 Apresentando a linguagem C 5 Apresentando a linguagem C O criador da linguagem de programação C foi Dennis Ritchie que, na década de 70, programou-a por meio de um computador DEC PDP-11 rodando sistema operacional Unix. Entretanto,

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 05 Cadeias de Caracteres Edirlei Soares de Lima Caracteres Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência

Leia mais

Variáveis e Comandos de Atribuição

Variáveis e Comandos de Atribuição BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l

Leia mais

O COMPUTADOR. Introdução à Computação

O COMPUTADOR. Introdução à Computação O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:

Leia mais

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B,

Leia mais

Curso de Linguagem C

Curso de Linguagem C Curso de Linguagem C 1 Aula 1 - INTRODUÇÃO...4 AULA 2 - Primeiros Passos...5 O C é "Case Sensitive"...5 Dois Primeiros Programas...6 Introdução às Funções...7 Introdução Básica às Entradas e Saídas...

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como

Leia mais

Convertendo Algoritmos para a Linguagem C

Convertendo Algoritmos para a Linguagem C onvertendo Algoritmos para a Linguagem Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan O objetivo deste texto é mostrar alguns programas em, dando uma breve descrição de seu funcionamento

Leia mais

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MC102 Algoritmos e programação de computadores Aula 3: Variáveis MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou

Leia mais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

LINGUAGEM C. Estrutura básica de um programa

LINGUAGEM C. Estrutura básica de um programa LINGUAGEM C Estrutura básica de um programa Um programa em linguagem C é constituído por uma sequência de funções (módulos) que em conjunto irão permitir resolver o problema proposto. Estas funções contêm

Leia mais

Algoritmo e Técnica de Programação - Linguagem C

Algoritmo e Técnica de Programação - Linguagem C Algoritmo e Técnica de Programação Linguagem C Gilbran Silva de Andrade 5 de junho de 2008 Introdução A liguagem C foi inventada e implementada por Dennis Ritchie em um DEC PDP-11 que utilizava o sistema

Leia mais

Algoritmos e Técnicas de

Algoritmos e Técnicas de INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Algoritmos e Técnicas de Programação Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 5 Instruções de controle: Parte 2 Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 5.1 Introdução Instrução de repetição for Instrução de repetição do while Instrução de seleção

Leia mais

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes ITENS FUNDAMENTAIS Profª Angélica da Silva Nunes CONCEITOS BÁSICOS Hardware - é a parte física do computador, tais como: teclado, monitor de vídeo, etc. Software - são os programas e aplicativos que permitem

Leia mais

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1: Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode

Leia mais

2. Constantes e Variáveis

2. Constantes e Variáveis 2. Constantes e Variáveis Neste capitulo veremos como os dados constantes e variáveis são manipulados pela linguagem C. O que são constantes inteiras, reais, caracteres e strings. Quais são as regras de

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

String em C++ Verificando o tamanho da string

String em C++ Verificando o tamanho da string String em C++ Uma das formas de se manipular cadeias de caracteres, também chamadas de strings em C+ + é armazená-las como vetores de char. Esta é a forma tradicional utilizada pela linguagem C. Então,

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em

Leia mais

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream> Aula 1 C é uma linguagem de programação estruturada desenvolvida por Dennis Ritchie nos laboratórios Bell entre 1969 e 1972; Algumas características: É case-sensitive, ou seja, o compilador difere letras

Leia mais

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i). Cast (conversão) Um tipo de dado pode ser convertido momentaneamente em outro tipo com um cast. Em linguagem C a sintaxe usada é formada pelo tipo desejado entre parênteses precedendo a expressão a ser

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,

Leia mais

Linguagens de Programação

Linguagens de Programação 68 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas instruem o computador a realizar

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Tipos de dados Os programas manipulam dados, armazenando-os

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:

Leia mais

compreender a importância de cada estrutura de controle disponível na Linguagem C;

compreender a importância de cada estrutura de controle disponível na Linguagem C; Aula 3 Estruturas de controle Objetivos Esperamos que, ao final desta aula, você seja capaz de: compreender a importância de cada estrutura de controle disponível na Linguagem C; construir programas em

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Lógica Aula 2 Técnicas de Programação Criando algoritmos Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Criando

Leia mais

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação Lógica de Programação 3. INTRODUÇÃO À LINGUAGEM C Caro Aluno Vamos iniciar o terceiro capítulo da nossa disciplina. Agora vamos começar a aplicar os conceitos vistos nos capítulos anteriores em uma linguagem

Leia mais

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Objetivos Compreender os conceitos de lógica de programação e de algoritmos. Conhecer

Leia mais

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização

Leia mais

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética 2 PARADIGMA IMPERATIVO 2.1 CONCEITO As linguagens que pertencem ao paradigma imperativo tomam por base a perspectiva da máquina. Ou seja, no modo como o computador executa programas em linguagem de máquina.

Leia mais

10/02/2015. Introdução. Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Algoritmos e Lógica de Programação

10/02/2015. Introdução. Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Algoritmos e Lógica de Programação Introdução Algoritmos e Lógica de Programação Tipos de dados Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Informações a serem processadas pelo computador. Consideremos

Leia mais

1 Funções básicas de implementação de arquivos

1 Funções básicas de implementação de arquivos 1 Funções básicas de implementação de arquivos 1.1 Definindo registros Depois de um objeto do mundo real ter sido modelado, ou seja, após seus atributos importantes (e relevantes) terem sido identificados,

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

Leia mais

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário CADERNO DE INFORMÁTICA FACITA Faculdade de Itápolis Aplicativos Editores de Texto WORD 2007/2010 Sumário Editor de texto... 3 Iniciando Microsoft Word... 4 Fichários:... 4 Atalhos... 5 Área de Trabalho:

Leia mais

Introdução a Computação

Introdução a Computação Introdução a Computação Aula 02 Introdução a Linguagem C Edirlei Soares de Lima Lógica de Programação Lógica de Programação é a técnica de criar sequências lógicas de ações para

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Funções Classes de armazenamento

Leia mais

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti http://ead.celsomasotti.com.br

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti http://ead.celsomasotti.com.br LÓGICA DE PROGRAMAÇÃO Professor Celso Masotti http://ead.celsomasotti.com.br Ano: 2015 1 HTML & PHP em Ambiente Web PARTE II Sumário I Decisão... 4 Operadores de Comparação... 6 II IF ELSEIF ELSE... 7

Leia mais

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. Lista de exercícios: Grupo I - programa seqüênciais simples 1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros. 2. Fazer um programa

Leia mais

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre Programação MEAer Bertinho Andrade da Costa 2011/2012 1º Semestre Instituto Superior Técnico Introdução ao Pré-Processador Programação 2011/2012 DEEC-IST Introdução ao Pré-Processador 1 Sumário Introdução

Leia mais

Estrutura de Dados. Prof. Gustavo Willam Pereira. Créditos: Profa. Juliana Pinheiro Campos

Estrutura de Dados. Prof. Gustavo Willam Pereira. Créditos: Profa. Juliana Pinheiro Campos Estrutura de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos ESTRUTURAS DE DADOS Ementa Introdução à Linguagem C. Recursividade. Alocação dinâmica de memória. Conceito de tipos

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos 1 Manipulação de Arquivos Para realizar E/S em arquivo, você precisa incluir o arquivo-cabeçalho fstream.h nos programas. Esse arquivo define muitas classes e valores importantes. Abrindo e fechando um

Leia mais

Unidade 5: Sistemas de Representação

Unidade 5: Sistemas de Representação Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação

Leia mais

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos http://manoelcampos.com

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

UNIDADE 6 - PROGRAMAÇÃO MODULAR

UNIDADE 6 - PROGRAMAÇÃO MODULAR UNIDADE 6 - PROGRAMAÇÃO MODULAR Até o momento as estruturas de controle (seqüência, seleção e repetição) de um algoritmo definia-o como um bloco lógico (início e fim). À medida que os problemas a serem

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

Leia mais

13 Números Reais - Tipo float

13 Números Reais - Tipo float 13 Números Reais - Tipo float Ronaldo F. Hashimoto e Carlos H. Morimoto Até omomentonoslimitamosaouso do tipo inteiro para variáveis e expressões aritméticas. Vamos introduzir agora o tipo real. Ao final

Leia mais

Curso Prático de C++

Curso Prático de C++ Sumário Autor: Prof. Luiz Bianchi Universidade Regional de Blumenau FUNDAMENTOS... 3 Declaração de variáveis... 4 Tipos de dados... 4 Operador de atribuição... 5 Comentários... 5 Tipos modificados... 6

Leia mais

LINGUAGEM C UMA INTRODUÇÃO

LINGUAGEM C UMA INTRODUÇÃO LINGUAGEM C UMA INTRODUÇÃO AULA 1 Conceitos muito básicos 1 Introdução O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

7. Estrutura de Decisão

7. Estrutura de Decisão 7. Estrutura de Decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação

Leia mais

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

Definição de Programas de Computadores e Linguagem de Programação de Comutadores Definição de Programas de Computadores e Linguagem de Programação de Comutadores O computador é um equipamento eletrônico composto por circuitos eletrônicos, que trabalham com o estado ligado(1) e desligado(0),

Leia mais

Programação: Estruturas de seleção

Programação: Estruturas de seleção Programação de Computadores I Aula 07 Programação: Estruturas de seleção José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/53 Valores booleanos Os valores booleanos

Leia mais

Curso de Programação Computadores

Curso de Programação Computadores 3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos

Leia mais

Trabalho 3: Agenda de Tarefas

Trabalho 3: Agenda de Tarefas INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma

Leia mais

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com. Algoritmos e Programação Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.br 2012 Conteúdo e Objetivos da Aula Introdução a Linguagem C Revisão

Leia mais

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores Introdução à Programação Armazenamento de Grande Quantidade de Informação Usando Vetores Armazenando Grande Quantidade de Informação Como armazenar tanta informação? Vetores! 2 Tópicos da Aula Hoje, aprenderemos

Leia mais

Introdução à Linguagem C

Introdução à Linguagem C Prof a.dr a.thatyana de Faria Piola Seraphim (ECO) Prof.Dr.Enzo Seraphim (ECO) Universidade Federal de Itajubá thatyana@unifei.edu.br seraphim@unifei.edu.br Introdução - História A linguagem de programação

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

Algoritmos e Programação usando a Linguagem C. Prof. MSc. Renato Afonso Cota Silva

Algoritmos e Programação usando a Linguagem C. Prof. MSc. Renato Afonso Cota Silva Algoritmos e Programação usando a Linguagem C Prof. MSc. Renato Afonso Cota Silva 1 2 Aula 1 Introdução à Linguagem C... 4 1.1 Introdução... 4 1.2 Fundamentos da Linguagem... 5 1.3 Comandos de Entrada

Leia mais

Tabela ASCII de caracteres de controle

Tabela ASCII de caracteres de controle Caracteres Estruturas de Dados Aula 6: Cadeias de Caracteres 31/03/2010 Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis

Leia mais

Programação Estruturada I

Programação Estruturada I Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 thiago.tavares@ifsuldeminas.edu.br 2 mateus.santos@ifsuldeminas.edu.br Última Atualização:

Leia mais

Estrutura Condicional em Java

Estrutura Condicional em Java Estrutura Condicional em Java Linguagem de Programação 1 O Java contém três tipos de instruções de seleção. A instrução if realiza uma ação se uma condição for verdadeira ou pula a ação se a condição for

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos LÓGICA DE PROGRAMAÇÃO Vitor Valerio de Souza Campos Exemplos de algoritmos Faça um algoritmo para mostrar o resultado da multiplicação de dois números. Algoritmo em descrição narrativa Passo 1 Receber

Leia mais

Informática básica Telecentro/Infocentro Acessa-SP

Informática básica Telecentro/Infocentro Acessa-SP Informática básica Telecentro/Infocentro Acessa-SP Aula de hoje: Verificando data e hora, desligando o computador, janelas, copiar colar, excluindo um arquivo. Prof: Lucas Aureo Guidastre Verificando data

Leia mais

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante Capítulo SETE Números em Ponto Fixo e Ponto Flutuante 7.1 Números em ponto fixo Observação inicial: os termos ponto fixo e ponto flutuante são traduções diretas dos termos ingleses fixed point e floating

Leia mais