Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Algoritmos e Introdução à Programação Linguagem C

Prof. Fábio Diniz Rossi

1

Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Índice

1. Algoritmos ...................................................................................................... 4 1.1. Introdução................................................................................................ 4 1.2. Representação de algoritmos .................................................................. 5 1.2.1. Pseudocódigo.................................................................................... 5 1.2.2. Diagrama de Fluxo de Dados............................................................ 6 1.2.3. Diagrama de Chapin ......................................................................... 7 1.3. Linguagens de Programação Interpretadas e Compiladas ...................... 7 2. Linguagem C .................................................................................................. 9 2.1. Histórico................................................................................................... 9 2.2. Bibliotecas e Cabeçalhos....................................................................... 10 2.3. Comentários .......................................................................................... 10 2.4. Bloco de Instruções ............................................................................... 11 3. Manipulação de Dados................................................................................. 11 3.1. Constantes............................................................................................. 11 3.2. Variáveis ................................................................................................ 12 3.3. Tipos de Dados...................................................................................... 12 4. Operadores .................................................................................................. 13 4.1. Operadores Aritméticos ......................................................................... 13 4.2. Operadores Aritméticos de Atribuição ................................................... 13 4.3. Operadores Relacionais ........................................................................ 13 4.4. Operadores Lógicos............................................................................... 14 4.5. Operadores de Incremento/Decremento................................................ 14 4.6. Precedência de Operadores .................................................................. 14 4.7. Exercícios de Fixação............................................................................ 14 5. Entrada/Saída .............................................................................................. 15 5.1. Introdução.............................................................................................. 15 5.2. Expressões de Controle......................................................................... 15 5.3. Códigos de Formatação......................................................................... 16 5.4. printf....................................................................................................... 16 5.4.1. Exercícios de Fixação ..................................................................... 18 5.5. scanf ...................................................................................................... 18 5.5.1. Exercícios de Fixação ..................................................................... 19 6. Algoritmo de Seleção ................................................................................... 21 6.1. Introdução.............................................................................................. 21 6.2. If – Else.................................................................................................. 21 6.2.1. Exercícios de Fixação ..................................................................... 23 6.3. Switch – Case........................................................................................ 24 6.3.1. Exercícios de Fixação ..................................................................... 25 7. Algoritmo de Repetição ................................................................................ 26 7.1. Introdução.............................................................................................. 26 7.2. While...................................................................................................... 26
Prof. Fábio Diniz Rossi
2

Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

7.2.1. Exercícios de Fixação ..................................................................... 27 7.3. For ......................................................................................................... 28 7.3.1. Exercícios de Fixação ..................................................................... 29 8. Vetores ......................................................................................................... 30 8.1. Introdução.............................................................................................. 30 8.2. Exercícios de Fixação............................................................................ 31 9. Matrizes........................................................................................................ 32 9.1. Introdução.............................................................................................. 32 9.2. Exercícios de Fixação............................................................................ 33 10. Strings ........................................................................................................ 35 10.1. Introdução............................................................................................ 35 10.2. Exercícios de Fixação.......................................................................... 35 11. Registros ou Structs ................................................................................... 37 11.1. Introdução............................................................................................ 37 11.2. Exercícios de Fixação.......................................................................... 38 12. Ponteiros .................................................................................................... 40 12.1. Introdução............................................................................................ 40 12.2. Exercícios de Fixação.......................................................................... 41 13. Funções...................................................................................................... 42 13.1. Introdução............................................................................................ 42 13.2. Exercícios de Fixação.......................................................................... 43 14. Arquivos ..................................................................................................... 44 14.1. Introdução............................................................................................ 44 14.2. Exercícios de Fixação.......................................................................... 46 Bibliografia........................................................................................................ 48 Manual de utilização do Dev-C++ .................................................................... 49 Bibliotecas e Funções mais utilizadas .............................................................. 52

Prof. Fábio Diniz Rossi

3

Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Algoritmos e Introdução à Programação 1. Algoritmos Um algoritmo é uma seqüência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente em um período de tempo finito e com uma quantidade de esforço finita. 1.1. Introdução O conceito de algoritmo é freqüentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá resolver um problema se estiver implementado incorretamente ou se não for apropriado ao problema. Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa. Sua implementação pode ser feita por um computador, por outro tipo de autômato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros. Tal diferença pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que você vista primeiro as meias e os sapatos antes de vestir a calça enquanto outro algoritmo especifica que você deve primeiro vestir a calça e depois as meias e os sapatos. Fica claro que o primeiro algoritmo é mais difícil de executar que o segundo apesar de ambos levarem ao mesmo resultado. O conceito de um algoritmo foi formalizado em 1936 pela Máquina de Turing de Alan Turing e pelo cálculo lambda de Alonzo Church, que formaram as primeiras fundações da Ciência da computação. Não se aprende algoritmos: Copiando algoritmos Estudando algoritmos Só se aprende algoritmos: Construindo algoritmos Testando algoritmos Todo algoritmo deve ter as seguintes propriedades: Possui estado inicial Possui dados de entrada Possui uma seqüência lógica e finita de ações claras e precisas Produz dados de saída e estado final previsível Deve ser eficaz
Prof. Fábio Diniz Rossi
4

Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

1.2. Representação de algoritmos Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. O critério usado para classificar hierarquicamente estas formas está diretamente ligado ao nível de detalhe ou, inversamente, ao grau de abstração oferecido. Algumas formas de representação de algoritmos tratam os problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as idéias principais do algoritmo, dificultando seu entendimento. Dentre as formas de representação de algoritmos mais conhecidas podemos citar: pseudocódigo, diagrama de fluxo de dados e diagrama de chapin. 1.2.1. Pseudocódigo Pseudocódigo (ou português estruturado ou portugol) é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação. É, como o nome indica, um pseudocódigo e, portanto, não pode ser executado num sistema real (computador) — de outra forma deixaria de ser pseudo. Os livros sobre a ciência de computação utilizam freqüentemente o pseudocódigo para ilustrar os seus exemplos, de forma que todos os programadores possam entendê-los (independentemente da linguagem que utilizem).
SÍNTESE Objetivo: analisar a idade de uma pessoa Entrada: uma idade Saída: situação da maturidade da pessoa DECLARAÇÕES inteiro IDADE; INÍCIO escreva (“Informe sua idade: “); leia (IDADE); se (IDADE < 21) então escreva (“você é jovem”); senão escreva (“você é adulto”); fim_se; FIM

Prof. Fábio Diniz Rossi

5

indicando sempre. As figuras usadas são: Imagine uma situação onde a idade de uma pessoa deva ser analisada para sua classificação em jovem ou adulto. As principais figuras usadas na elaboração de um fluxograma estão relacionadas a seguir. Ela fornece apenas uma visão do sistema. o que realmente o computador deve fazer.2. dificultando a comunicação correta com o computador se usada de forma bem natural. Prof. com clareza e precisão. ou seja. o fluxo dos dados. porém neste estudo se estará buscando a compreensão da lógica racional proposta por este tipo de representação.2. 1. Fábio Diniz Rossi 6 . O DFD pode ter vários níveis de detalhamento de acordo com a necessidade do sistema. Por isso é necessária à agregação de regras e normas que permitam a representação organizada e eficiente da solução desejada.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas A linguagem de comunicação natural é imprecisa e muitas vezes prolixa. O algoritmo a seguir é apresentado graficamente por meio do fluxograma coerente com a solução desejada. Diagrama de Fluxo de Dados O DFD ou Diagrama de Fluxos de Dados (ou Fluxograma ou diagrama de blocos) é uma ferramenta para a modelagem de sistemas. a visão estruturada das funções. sendo importante esclarecer que são várias as figuras geométricas empregadas na construção dos mesmos.

principalmente. como se diz no jargão da computação) o programa. que juntas podem ser chamadas de tradução. Almejada a substituição da representação tradicional (diagrama de blocos) por uma diagramação com quadros que oferecessem a visão hierárquica e estruturada da lógica proposta para um programa.3. 1. em código de máquina por compilação ou interpretação. o Diagrama de Chapin é um dos menos utilizados atualmente. Se o método utilizado traduz todo o texto do programa (também chamado de código). Linguagens de Programação Interpretadas e Compiladas Uma linguagem de programação pode ser convertida. ao invés de se concentrar mais sobre o próprio problema a ser analisado e posteriormente solucionado. então se diz que o programa foi compilado e que o mecanismo utilizado para a tradução é um compilador (que por sua vez nada Prof.2.3. para só depois executar (ou rodar.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 1. Fábio Diniz Rossi 7 . Entre os diversos métodos existentes para este tipo de representação. ou traduzida. porque exige bastante atenção do programador na representação do seu raciocínio. Diagrama de Chapin Elaborado por Nassi e Shneiderman e ampliada por Ned Chapin.

Embora haja essa distinção entre linguagens interpretadas e compiladas. Há linguagens compiladas para um código de máquina de uma máquina virtual (sendo esta máquina virtual apenas mais um software. as coisas nem sempre são tão simples. o que compensa o tempo gasto na compilação. então diz-se que o programa foi interpretado e que o mecanismo utilizado para a tradução é um interpretador. Fábio Diniz Rossi 8 . já que podem interagir com o ambiente mais facilmente (freqüentemente linguagens interpretadas são chamadas também de script). Perl ou PHP. como o Java e C#. num processo de tradução de trechos seguidos de sua execução imediata. têm blocos “compilados” para a memória. Se o texto do programa é traduzido na medida em que vai sendo executado. como em Javascript. ao invés de serem interpretados linha-a-linha. o que aumenta a performance dos programas quando os mesmos módulos são chamados várias vezes. mas são também geralmente mais flexíveis.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas mais é do que um programa). Python. técnica esta conhecida como Just-in-Time. Programas interpretados são geralmente mais lentos do que os compilados. Prof. E também há outras formas de interpretar em que os códigos-fontes. de acordo com as necessidades. que emula a máquina virtual sendo executado em uma máquina real). Isso acontece com linguagens como Pascal e C (linguagem de programação). A versão compilada do programa tipicamente é armazenada. de forma que o programa pode ser executado um número indefinido de vezes sem que seja necessária nova compilação.

a ser chamada de C. em Cambridge. Batizou a linguagem de B. científica e de engenharia. em especial pelos projetistas de sistemas operacionais que a consideravam difícil de implementar. Martin Richards criou o BCPL (Basic CPL). ALGOL era uma linguagem de alto nível. talvez por tentar ser de muito alto nível em uma época em que a maioria dos sistemas operacionais exigiam do usuário um grande conhecimento de hardware. e para isto B era considerado lenta. A linguagem C buscou manter o “contato com o computador real” e ainda sim dar ao programador novas condições para o desenvolvimento de programas em áreas diversas.0 do Bell Labs. Um dos fatores que levou à isto foi a intenção do grupo responsável pelo UNIX de reescrevê-lo todo em uma linguagem de alto nível. Linguagem C A linguagem C é classificada de alto nível pela própria definição desse tipo de linguagem. sucessora do B. Ao ponto de vista técnico. o surgimento do C iniciou com a linguagem ALGOL 60. prestando-se apenas para certas classes de problemas. ALGOL não teve sucesso. Ken Thompson. que viria então. Em 1967 surgiu CPL (Combined Programming Language) nas universidades de Londres e Cambridge com o objetivo. como comercial. A principal documentação deste padrão encontra-se na publicação “The Prof. ou "manter contato com a realidade de um computador real". Por muitos anos (aproximadamente 10) a sintaxe (formato) tida como padrão da linguagem C foi aquela fornecida com o UNIX versão 5. uma simplificação do CPL. Isto se fez sentir especialmente na primeira versão do PDP11. 2. Fábio Diniz Rossi 9 . Histórico A primeira versão de C foi criada por Dennis Ritchie em 1972 nos laboratórios Bell para ser incluído como um dos softwares a ser distribuídos juntamente com o sistema operacional Unix do computador PDP-11. tentando manter apenas as "boas coisas do CPL". na equipe certificada por Ken Thompson. Tanto BCPL quanto B mostravam-se muito limitadas. Estes problemas levaram a que o projetista Dennis Ritchie. A programação em linguagens de alto nível tem como característica não ser necessário conhecer o processador. Foi criado para substituir o FORTRAN. lançado no mercado em 1971. Ainda em 1967. sem se preocupar com os aspectos de como cada comando ou dado era armazenado ou processado.1. fosse encarregado de projetar uma nova linguagem. implementou um compilador para uma versão mais reduzida do CPL. Da mesma forma de ALGOL. que permitia ao programador trabalhar "longe da máquina". de "trazer ALGOL à terra". segundo a equipe do projeto. CPL não foi bem aceita. chefe da equipe que projetou o UNIX para o PDP11 do Bell Labs. definida em 1960. ao contrário das linguagens de baixo nível. Em 1970. do Bell Labs.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 2.

como: // explicação .h math. ambos os tipos de comentários irão funcionar. que é uma linguagem posterior ao C que inclui orientação a objetos. Em 1985. ANSI (American National Standards Institute) estabeleceu um padrão oficial de C o chamado “C ANSI”. Fábio Diniz Rossi 10 .h stdlib.h string. */ Manipulação de entrada/saída Manipulação de caracteres na tela Tratamento de cadeia de caracteres Funções matemáticas comuns em computação Funções de alocação de memória. A esta característica dá-se o nome de portabilidade. comentários têm o seguinte formato: /* explicação . Bibliotecas e Cabeçalhos Na linguagem C.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas C Programming Language”.h 2. conversões. Com ela. Prof. 2. uma empresa que desenvolve um programa pode fazê-lo rodar em diferentes computadores sem ter um elevado custo a cada vez que isto for feito.. Na linguagem C. arquivos de cabeçalho (header files) é uma característica de certas linguagens que permite aos programadores separar certos elementos de códigos-fonte de programas em arquivos reusáveis. Comentários Comentário é uma maneira simples e bastante útil em programação que serve para explicar um trecho de código-fonte para uma futura referência ou mesmo para que outro membro da equipe de programação entenda o que foi desenvolvido. de Brian Kernighan e Dennis Ritchie (K&R)..3. As bibliotecas e cabeçalhos são incluídos no código-fonte através de diretiva de pré-processamento #include. listamos os cabeçalhos mais utilizados na linguagem C: stdio.2. etc Tudo que se encontrar entre /* e */ não será lido pelo compilador. Se estivermos utilizando para desenvolver em C um compilador de C++.h conio. comentários também podem ser representados por // antes da explicação.. Abaixo. Em C++.. a “bíblia da linguagem C”. O mais interessante desta versão de C era que os programas-fonte criados para rodar em um tipo de computador podiam ser transportados e recompilados em outros sem grandes problemas.

sendo que. como apresenta conteúdo. É inevitável um programa utilizar a memória do computador.1416. ele tem que apresentar conteúdo. Prof. ou seja. Fábio Diniz Rossi 11 . incluindo comentários. Assim. Uma constante pode aparecer sob forma de um valor explícito (constante literal) ou um nome simbólico que representa um determinado valor ao longo do programa (constante simbólica). que compila tanto códigos-fonte em C quanto em C++. pois uma variável é uma expressão que varia e normalmente é representado por uma incógnita X. Bloco de Instruções Os programas em C sempre seguirão o modelo descrito abaixo. . getch(). 3. o número de Neper) que pode ser representado por uma letra. que constantes e variáveis se comportam igualmente na computação. Constantes São valores que não se alteram ao longo do programa. o programa precisa de um espaço físico na memória e para isso terá que o requisitar. Exemplo: PI = 3. Veremos a seguir.h> #include <conio.h> main( ) { .Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 2.1. 3. função principal e a função getch. o Pi. } comentário biblioteca biblioteca função principal inicio função que espera entrada por teclado fim Usaremos o compilador Dev-C++. vai “alterar” estados dentro do computador. /* Programa 1 */ #include <stdio. assim. e uma constante é uma expressão que não se altera (o número de Avogrado. <corpo do programa> .4. . Manipulação de Dados Qualquer programa tem que fazer alguma coisa (nem que seja enviar um sinal bip) senão não é um programa. portanto necessita das bibliotecas deste modelo para compilar. bibliotecas. Já realizamos abstrações desse tipo na matemática. o estado de uma das peças que vai inevitavelmente se alterar é a memória interna.

float: Número em ponto flutuante de precisão simples. Caracateres geralmente são armazenados em códigos (usualmente o código ASCII). a = a + 2. Este espaço de memória guarda informações que podem ser alteradas no curso da execução do programa. existem vários tipos de dados suportados pelo padrão ANSI C. reservado para armazenar valores de um determinado tipo.3. Porém. Tipos de Dados Os tipos de dados mais usuais em C são: char: Caracter: O valor armazenado é um caractere. São conhecidos normalmente como números reais. 3. int: Número inteiro é o tipo padrão e o tamanho do conjunto que pode ser representado normalmente depende da máquina em que o programa está rodando. que são: Prof. Fábio Diniz Rossi 12 . Exemplo: a = 3. Variáveis Uma variável identifica um espaço na memória do computador.2.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 3.

Operadores Relacionais Esses operadores são responsáveis pelas comparações de expressões nos programas. Fábio Diniz Rossi 13 . var = var – expr. Prof. var -= expr. lógicas e relacionais. Os operadores aritméticos seguem abaixo: Significado Atribuição Soma Subtração Multiplicação Divisão Resto Símbolo = + * / % 4. var = var * expr. var /= expr. var *= expr. Os operadores relacionais seguem abaixo: Significado Maior Maior ou igual Menor Menor ou igual Igualdade Diferença Símbolo > >= < <= == != Reduzida var += expr. Dessa forma uma instrução escrita da forma: Normal var = var + expr. 4. 4. Operadores Aritméticos Os operadores aritméticos são usados para calcular expressões matemáticas. Operadores Aritméticos de Atribuição São combinações de operadores que simplificam as instruções e que geralmente são usados por programadores experientes.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 4.2. Operadores Operadores são símbolos matemáticos e lógicos que servem para a realização de operações aritméticas. var = var / expr.1.3.

7. 4.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 4. Fábio Diniz Rossi 14 . var = var--. Pré-fixado var = ++var. var = var – 1. Operadores de Incremento/Decremento O operador de incremento (++) soma 1 ao seu operando enquanto que o de decremento (--) subtrai um. Eles podem ser pré-fixados ou pós-fixados conforme mostra a tabela abaixo: Operador ++ -Instrução var = var + 1.4. ou --var. var = --var. Precedência de Operadores Para evitar ordem errada em um cálculo. ou var++. utilizamos a precedência de operadores. Operadores Lógicos Os operados lógicos servem para interligar mais de uma operação relacional. ou var--. Pós-fixado var = var++.5.6. ou ++var. com a seguinte ordem: 1º 2º 3º 4º 5º 6º parênteses e funções potência e resto multiplicação e divisão adição e subtração operadores relacionais operadores lógicos 4. Os operadores lógicos seguem abaixo: Significado E OU Não Símbolo && || ! 4. Exercícios de Fixação Diga o resultado das expressões abaixo: a) b) c) d) x x x x =5*4/6+7 =5*4%6+7 = ((4 / 2) + (3 * 5)) = (3 + 2 * (4 + (2+4))) % 2 Prof.

indicando entrada (inserção) de dados por meio de algum código ou programa. Introdução Entrada/Saída na linguagem C é realizada através de muitas funções da linguagem. Algumas unidades são de entrada e saída de dados ou também chamados Dispositivos Híbridos: disco rígido. como resultado de alguma operação de algum programa. Webcam. As interfaces de entrada e saída são responsáveis pela conexão entre as várias partes de um sistema computacional baseado na arquitetura de VonNeumann. 5. Fábio Diniz Rossi Significado Exibe um caractere 15 . Pendrive. Essa função de conexão foi basicamente desenvolvida para que seja possível a comunicação entre vários dispositivos. tela sensível ao toque. monitor sensível a toques. deixando a interconexão com as interfaces de entrada e saída. bem como a sua saída (obtenção de dados) ou retorno de dados. disco rígido. Leitor de código de barras. consequentemente resultado de alguma entrada. joystick e outros acessórios de jogos. Ao contrário do que se pode pensar a interface de entrada e saída não é só o conector físico e sim também o responsável pela comunicação lógica entre o barramento e o dispositivo. tornando-se o terceiro elemento do sistema computacional proposto. 5.2. microfone. São exemplos de unidades de saída de um computador: monitor. porém as mais simples veremos agora. joystick vibratório. teclado. fazendo com que a velocidade do barramento seja mais bem aproveitada e ainda tanto os periféricos quanto os elementos essenciais tenham programação/produção mais voltada ao seu desempenho.1. Entrada/Saída Entrada/saída (sigla I/O (em inglês)) é um termo utilizado quase que exclusivamente no ramo da computação (ou informática). mouse. São utilizados para entrada de dados junto ao scanf e saída de dados junto ao printf. Scanner. disco flexível ou disquete.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 5. para algum outro programa ou hardware. impressora. que são o printf e o scanf. caixas de som. Celular. Código %c Prof. Expressões de Controle As expressões de controle contêm tanto caracteres para serem impressos na tela como códigos de formato que especificam como apresentar o restante dos argumentos. Máquina fotográfica digital. Esta interface é responsável por conectar fisicamente o processador e a memória do sistema ao barramento. São exemplos de unidades de entrada de um computador: disco rígido.

Esta string. pode especificar através de caracteres especiais (as seqüências de conversão) quantos outros argumentos estarão presentes nesta invocação da função. Fábio Diniz Rossi 16 Significado Nova linha Tabulação Retrocesso Aspas Barra Salta formulário Nulo . printf utiliza o mecanismo de formatação. então a execução da função: printf("Valor de x = %d". só que um E maiúsculo é usado se o formato %e for escolhido Exibe um número em notação octal Exibe uma string Exibe um decimal sem sinal Exibe um número em hexadecimal com letras minúsculas Exibe um número em hexadecimal com letras maiúsculas Exibe um sinal de % Exibe um ponteiro 5. que permite traduzir a representação interna de variáveis para a representação ASCII que pode ser apresentada na tela. printf A função printf é parte de um conjunto de funções pré-definidas armazenadas em uma biblioteca padrão de rotinas da linguagem C stdio.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas %d %i %e %E %f %g %G %o %s %u %x %X %% %p Exibe um inteiro em formato decimal Exibe um inteiro Exibe um número em notação científica (com e minúsculo) Exibe um número em notação científica (com E maiúsculo) Exibe um ponto flutuante em formato decimal Usa %e ou %f. se o valor de uma variável inteira x é 12. x). São eles: Código \n \t \b \” \\ \f \0 5.4. uma seqüência de caracteres entre aspas. Por exemplo. que sempre deve estar presente. O primeiro argumento de printf é um string de controle. Para tanto.h. Estes outros argumentos serão variáveis cujos valores serão formatados e apresentados na tela.3. Prof. Ela permite apresentar na tela os valores de qualquer tipo de dado. Códigos de Formatação Os códigos de formatação servem para exibir formatos na exibição dos caracteres na tela. o que for menor O mesmo que %g.

pelo menos um argumento deve estar presente.h> main( ) { printf(“\n Ola Mundo!”). Outro exemplo mais completo que trata da soma entre duas constantes pode ser visto abaixo: /* Programa Soma_A_B */ #include <stdio. getch(). y). Desta forma. a próxima saída para a tela aconteceria na linha seguinte. Observe que a seqüência de conversão pode ocorrer dentro de qualquer posição dentro da string de controle. a única forma de saber qual o número de variáveis que será apresentado é por inspeção da string de controle. A função printf não tem um número fixo de argumentos.h> main( ) { int a.h> #include <conio. int c. Com variáveis adicionais. a string de controle. Fábio Diniz Rossi 17 . A seqüência de conversão pode ser reconhecida dentro da string de controle por iniciar sempre com o caráter %. b = 3. utilizamos apenas uma função de escrita para exibir uma frase na tela. Em sua forma mais simples. c). getch(). } Prof. x. ou seja.h> #include <conio. a = 2. Segue abaixo: /* Programa Ola_Mundo */ #include <stdio. c = a + b. printf(“\n A soma e: %d”. cuidado deve ser tomado para que o número de variáveis após a string de controle esteja de acordo com o número de seqüências de conversão presente na string de controle. Além de ter o número correto de argumentos e seqüências de conversão. O primeiro programa que geralmente é desenvolvido por alunos de programação é o chamado “Olá Mundo!” ou “Hello World!”. int b. o tipo de cada variável deve estar de acordo com a seqüência de conversão especificada na string de controle. } Podemos ver nesse exemplo que. Se y é uma variável do tipo caráter com valor 'A'. então a execução de: printf("x = %d e y = %c\n".Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Imprime na tela a frase Valor de x = 12. Uma string de controle sem nenhuma seqüência de conversão será literalmente impressa na tela. Imprime na tela a frase x = 12 e y = A seguida pelo caráter de nova linha (\n).

Fábio Diniz Rossi 18 . Faça um algoritmo tendo 2 valores (a = 4. Essa string do formato pode possuir caracteres normais que se espera na entrada e combinações especiais usando o caractere % para representar os valores a serem lidos. Andradas. Faça um algoritmo que imprima nome. 2.h> #include <conio. Faça um algoritmo que calcule a área de um triângulo. 5.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 5. utilizando o número 9 em uma variável. Na sintaxe: scanf(“%d”. n4 = 80) calcule as médias aritmética. 99991111). 6. sabendo-se que base e altura são: b = 6. (bxh)/2 3. O & (e comercial) indica que o valor digitado será enviado para o endereço de memória da variável a. int b. scanf(“%d”. n2 = 70. e esse valor será atribuído à variável a. c = a + b. endereço e telefone (Ana. Prof.4. c). &a). scanf(“%d”. Faça um algoritmo que através de quatro notas (n1 = 50. scanf Para ler um item deve-se passar uma string que representa o formato da entrada e os endereços das variáveis de destino. Exercícios de Fixação 1. ma = n1 + n 2 + n3 + n 4 4 mg = 1 1 1 1 1 + + + n1 n 2 n3 n 4 n1x10 + n 2 x 20 + n3 X 30 + n4 X 40 100 mh = 5. printf(“\n A soma e: %d”. b = 2) e mostre as quatro operações matemáticas básicas entre estes 2 números. &b). int c. Notamos que o valor a ser lido é um valor inteiro devido ao %d dentro das aspas. &a). Um exemplo completo da soma entre duas variáveis lidas através do scanf pode ser visto abaixo: /* Programa Ler_A_B_Somar */ #include <stdio.1.h> main( ) { int a. n3 = 60. Faça um algoritmo que imprima como resposta o sucessor e o antecessor do número 9. harmônica e geométrica. h = 3.5.

considerado o reajuste de 7%. Dessa forma scanf("%3s%4d". respectivamente. Entre esses dois pode haver um número que indica o máximo de caracteres a serem usados para montar o valor a ser lido. Faça um programa que leia dois valores nas variáveis A e B respectivamente. Lê dois números e mostre os seguintes resultados: a. Divisor: c. 13. Lê dois números e mostra a soma. Entre com a base e a altura de um retângulo e mostre os resultados: a. respectivamente. &l. s. Lê um valor de hora e informa quantos minutos se passaram desde o início do dia. Quociente: d. Leia o numerador e o denominador de uma fração e transforme-o em um número decimal. 5. Calcule o valor de uma prestação em atraso. meses e dias e mostre-a expressa apenas em dias. 14. Perímetro (Perímetro é igual à soma dos 4 lados) b. utilizando a fórmula: PRESTAÇÃO = VALOR + (VALOR * (TAXA/100) * TEMPO). Exercícios de Fixação 1. Lê um número e mostra seu sucessor e seu antecessor na tela. Prof. sabendo-se que os pesos são respectivamente: 1. scanf("%c%d". &i) lê uma string (%s) de no máximo 3 caracteres e um número com no máximo 4 dígitos (incluindo o sinal) e guarda em s e i.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas getch(). Leia 4 números e mostre a média ponderada. isto é. troque o valor contido na variável A pelo valor em B. &i) lê um caractere (%c) seguido de um número (%d) e guarda nas variáveis l e i. Fábio Diniz Rossi 19 .1.5. Ante do resultado. Dividendo: b. Resto: 7. } Em outro exemplo. 3 e 4. Mostra na tela o produto entre 28 e 43. 11. 15. Lê um número e mostra a terça parte deste número. Lê o saldo de uma aplicação e imprime o novo saldo. 8. deverá aparecer a mensagem: SOMA. Mostra a média aritmética entre 3 números passados pelo usuário. Lê o raio de um círculo e mostre como saída o perímetro (2*π*Raio) e a área (π*Raio2). 2. e o valor em B pelo valor em A. imprimiremos A e B com os valores trocados. 3. Calcule e mostre a área de um triângulo (área é igual a: (base x altura) dividido por 2) 12. 4. 2. As expressões dos dados são sempre um % seguido de uma letra que indica o tipo a ser lido. 9. Faça um programa que leia a idade de uma pessoa expressa em anos. 16. 5. que devem ser dos tipos char e int. 6. Área (Área é igual a lado vezes lado) 10.

escreva um programa em C que leia o custo de fábrica de um carro e escreva o custo ao consumidor. Faça um programa que leia o número do funcionário. Supondo que a percentagem do distribuidor seja de 28% e os impostos de 45%. meses e dias. 18. Fábio Diniz Rossi 20 . o valor que recebe por hora e o número de filhos com idade menor de 14 anos. sendo que cada filho menor de 14 anos acrescenta 10% do salário. B e C e calcule a seguinte fórmula: (7*C+5*B) / (2*A*3). o número de horas trabalhadas mensais. 19.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 17. 20. Faça um programa que leia A. Prof. Calcular e escrever o salário deste funcionário. Faça um programa que leia a idade de uma pessoa expressa em dias e mostre-a expressa em anos. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). armazenando-a na variável Result.

} getch(). Quando existe apenas uma linha após o if.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 6. devido aos desvios condicionais em seu código-fonte. Algoritmo de Seleção Um algoritmo no qual a execução de determinados passos está subordinada à veracidade de uma condição é denominado de algoritmo de seleção. não precisamos abrir e fechar o bloco condicional utilizando { e }. O uso de condições ou comandos de decisão permite a alteração do fluxo de execução das instruções de um algoritmo. } Neste programa. A primeira estrutura. 6. 6. são ou não satisfeitas. consiste em apenas o comando If.1. Como o valor de a é igual a 10. Com isso. Fábio Diniz Rossi 21 . portanto o printf é executado escrevendo na tela a palavra ‘Maior’.2. representada por expressões lógicas ou relacionais.h> #include <conio. If – Else A estrutura If – Else (Se – Senão) permite vários tipos de condição.h> main( ) { int a. if (a >= 10) { printf(“\n Maior”). torna a resposta verdadeira. Na linguagem C. Veremos cada uma delas. a = 10. Em algoritmos necessitamos de ações diferentes dependendo da avaliação de certas condições. Introdução Uma seleção permite a escolha de uma ou de um conjunto de instruções (bloco) a ser executado quando determinadas condições. os comandos de seleção mais utilizados são: if – else (se – então) e o switch – case (caso – escolha). Os algoritmos de seleção também são conhecidos como algoritmos condicionais. porém como usamos a função getch() no final Prof. Podemos ver essa estrutura no exemplo abaixo: /* Programa seleção_if */ #include <stdio. diferentes instruções serão executadas de acordo com a entrada fornecida ao algoritmo. a seleção com o comando if verifica se a variável a é maior ou igual ao valor 10. Essa estrutura é utilizada quando não precisamos escrever na tela uma resposta falsa.

o programa escreve na tela o teste com a resposta falsa pois recai na parte da condição do ‘senão’ (else). } else if((a > 4) && (a < 7)) { printf(“Recuperação”). Quando necessitamos exibir tanto uma resposta verdadeira quanto uma resposta falsa. que são condições dentro de condições. pois a primeira condição é para valores abaixo ou igual a 4. usamos o exemplo abaixo utilizando if -else: /* Programa if_else */ #include <stdio. a pergunta da condição seria: ‘Se a é maior que 10 então escreva a palavra ‘Maior’. } getch(). Lendo em português. if(a > 10) { printf(“Maior”). } else { printf(“Menor ou igual”). o programa mostra escrito na tela ‘Aprovado’.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas do programa. a estrutura if – else possibilita condições aninhadas.h> #include <conio. } Neste caso. senão (se a não for maior que 10) escreva as palavras ‘Menor ou igual’’.h> main( ) { int a. Podemos ver no exemplo abaixo: /* Programa if_else_aninhado */ #include <stdio. a segunda condição é para valores maiores que 4 e ao mesmo tempo menores Prof.h> #include <conio. } Como a variável a contém o valor 7. Em um terceiro caso.h> main( ) { int a. Fábio Diniz Rossi 22 . } else { printf(“Aprovado”). } getch(). temos que abrir e fechar o bloco condicional pois poderia ser entendido como parte integrante da condição. a = 10. a = 7. if(a <= 4) { printf(“Reprovado”).

Infantil A: 5 a 7 anos.2. imprimir o seu quadrado. Desenvolva um algoritmo que efetue a leitura de três valores para os lados de um triângulo.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas que 7. Exercícios de Fixação 1.Juvenil A: 11 a 13 anos. 8. deverá ser indicado qual tipo de triângulo foi formado: isósceles (dois lados iguais e um diferente). acompanhando pela mensagem “é maior número”. Elabore um algoritmo que. 6. calcular e imprimir a diferença entre eles. Calcule e mostre a média final deste aluno e diga se ele foi aprovado ou reprovado. Faça um algoritmo que leia um número e mostre uma mensagem indicando se este número é par ou ímpar e se é positivo ou negativo. escaleno (todos os lados diferentes) ou eqüilátero (todos os lados são iguais). O algoritmo deverá verificar se os lados fornecidos formam realmente um triângulo (cada lado é menor que a soma dos outros dois lados). construa um algoritmo para calcular seu peso ideal. .Se o segundo número for maior que 10 e menor que 100.Juvenil B: 14 a 17 anos. Prof. Z).1 * altura – 44. imprimir o terceiro número adicionado de 1. imprimir sua raiz quadrada. utilizando as seguintes fórmulas: . Escrever um algoritmo para ler dois valores numéricos e apresentar a diferença do maior pelo menor.Sênior: maiores de 18 anos. imprimir o de maior valor. 2. imprimir a mensagem: “Número está entre 10 e 100 – intervalo permitido”. Y. e a terceira condição (apenas o senão. 4. Fábio Diniz Rossi 23 . B e C. caso contrário. classifique-o em uma das seguintes categorias: . . 3. pois não precisa ter uma condição a mais) para valores que não se encaixam nas condições anteriores. Escrever um algoritmo para ler dois números. .Infantil B: 8 a 10 · anos. Tendo como dados de entrada a altura e o sexo de uma pessoa. Leia 3 valores inteiros (X. ou seja. Se for esta condição verdadeira. .1. caso contrário. 7. 5. o número de aulas ministradas e o número de aulas assistidas por este aluno nesta disciplina.7 6. caso contrário. Considere que para um aluno ser aprovado ele deve obter média final igual ou maior a 6. Se os números forem iguais imprimir a mensagem: “Números iguais” e encerrar a execução. 9. dada a idade de um nadador. . determina e escreve o menor deles.Se o primeiro for positivo. Escrever um algoritmo para ler e imprimir três números: . considerando lados como: A. Faça um algoritmo que leia duas notas obtidas por um aluno na disciplina de Cálculo I.para homens: 72. .para mulheres: 62.Se o terceiro número for menor que o segundo.7 * altura – 58 .0 e ter no mínimo 75% de freqüência. igual ou maior que 7.

Isso limita o case a apenas valores definidos. Um vendedor necessita de um programa que calcule o preço total devido por um cliente. 6. Agora. Ou seja. Mostre uma mensagem informando o saldo médio e o valor do crédito. O programa deve receber o código de um produto e a quantidade comprada e calcular o preço total. Switch – Case O Switch – Case (Escolha – Caso) é um comando de seleção que tem por finalidade tomar uma decisão baseando-se no conteúdo de uma variável ou no resultado de uma expressão.29.3 as indústrias do 1º grupo são intimadas a suspenderem suas atividades. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo.5 todos os grupos devem ser notificados a paralisarem suas atividades. senão escrever uma mensagem ‘Mês Inválido’.45 13. 1ª diferença: Os cases não aceitam operadores lógicos. que controla o índice de poluição.37 987 R$ 5.00 a 400.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 10. Ler um número inteiro. se a variável indicar para o primeiro case e dentro do switch tiver 5 cases. (Nos referimos ao BREAK).32 1324 R$ 6. mas com algumas diferenças importantes. O índice de poluição aceitável varia de 0. o switch executará todos os outros 4 cases a não ser que utilizemos o comando para sair do switch. Portanto. que conhecemos diferenças importantes.45 6548 R$ 2. Fábio Diniz Rossi 24 . Um Banco concederá um crédito especial aos seus clientes.3.4 as indústrias do 1º e 2º grupo são intimadas a suspenderem suas atividades. e verificar se o número corresponde a um mês válido no calendário e escrever o nome do mês.00 nenhum crédito (crédito = 0) de 201. usando a tabela abaixo. Saldo médio Percentual de 0 a 200.32 7623 R$ 6. não é possível fazer uma comparação.00 40% do valor do saldo médio 12. mantém 3 grupos de indústrias que são altamente poluentes do meio ambiente. Ou seja. A Secretaria de Meio Ambiente. Código Produto Preço Unitário 1001 R$ 5. Podemos acompanhar o exemplo abaixo: Prof.case. veremos como proceder com o switch . é quase que um if com várias possibilidades.00 20% do valor do saldo médio de 401. Mostrar uma mensagem no caso de código inválido.05 até 0. Se o índice sobe para 0. variável com o saldo médio no último ano. 2ª diferença: O switch executa seu bloco em cascata. Faça um programa que leia o índice de poluição 11.00 a 600. Esse comando pode simplificar o uso do comando if.00 30% do valor do saldo médio acima de 600. se o índice crescer para 0. se o índice atingir 0.

vogal minúscula ou consoante. Crie um algoritmo que leia uma letra e mostre uma mensagem: se é vogal maiúscula. como por exemplo. usamos a seguinte sintaxe: case ‘a’: <operação>. default: printf("\nNumero invalido"). printf("Digite numero (1 ou 2 apenas): "). Exercícios de Fixação 1. break. Prof. Considere somente as letras do alfabeto. Construa um algoritmo que lê um número de 1 a 7 e informa o dia da semana correspondente. } Podemos ver algumas particularidades. a opção default que é chamada quando nenhuma escolha é válida dentro das opções. é mostrada uma mensagem de erro.1. &num). sendo domingo o dia de número 1. break. 2.h> main( ) { int num. Fábio Diniz Rossi 25 . scanf("%d".h> #include <conio.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas /* Programa switch-case */ #include <stdio. 6. Outra novidade é o break que faz o programa parar quando a condição é satisfeita. break. Se o dia não corresponder ao dia da semana. switch(num) { case 1: printf("\nSolteiro").3. } getch(). Quando usamos o case com um tipo char. case 2: printf("\nCasado").

É bem simples e fácil de usar. Podemos acompanhar sua sintaxe no exemplo abaixo: /* Programa while */ #include <stdio. 3° Qual valor esta variável deve atingir para que pare a repetição. While O comando while é um laço de repetição que é bastante usado para fazer loop controlado com condições. Prof. ele executa o bloco de instruções ( { } ) ou apenas a próxima linha de código logo abaixo. ou uma única instrução. Introdução As estruturas de repetição ou iteração são de crucial importância para a programação do algoritmo. que será executada repetidamente. Isso ocorre por causa de erro de lógica. final. dadas pelos comandos while (enquanto) ou for (para). 2° Como esta variável terá seu valor modificado para que chegue ao valor . a = 1. a). no qual a variável sentinela nunca chega ao seu resultado final. funciona com 1 variável que chamamos de sentinela (ou contador ou acumulador). As estruturas de repetição ou iteração são.h> main( ) { int a.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 7. enquanto um dado critério não é satisfeito.h> #include <conio. No caso. . Se a comparação for verdadeira. Essa variável irá ditar quando o programa deverá sair da repetição e geralmente tem 3 características: 1° Qual valor esta variável irá iniciar. comumente. O while executa uma comparação com a variável. while(a <= 100) { printf("\n %d". . Fábio Diniz Rossi 26 . e nos possibilitam executar o mesmo trecho de código várias vezes seguidas. Algoritmo de Repetição São algoritmos com a característica de realizar um conjunto de instruções. 7. a variável de controle ou sentinela sempre deverá ter essas características ou poderá ocorrer um erro que chamamos de loop infinito. Qualquer estrutura. 7. a++. seja for ou while.2.1. de acordo com o resultado de um teste condicional que compõem a instrução de repetição e permite o laço para nova execução destas instruções que compõem o bloco de repetição.

Em uma pesquisa de campo. 5. Após o incremento. b. o novo valor de a é testado novamento pelo while. Faça um programa que solicite ao usuário para digitar valores numéricos inteiros positivos. calcule e imprima: a) A quantidade de respostas 10. informe a quantidade de números ímpares e pares lidos. a partir destes dados. seguirá executando. calcule e imprima: a) A quantidade total de livros lidos pelos entrevistados menores de 10 anos. 4. c) opinião em relação à peça (de 0 a 10). Encerre a entrada de dados quando for digitado um número negativo ou zero. Exercícios de Fixação 1. 2. o laço termina e o programa finaliza. c) A média de idade dos homens que leram menos que 5 livros. b) A quantidade de mulheres que leram 5 livros ou mais. } Este programa inicializa a variável a com o valor 1 e escreve seu valor na tela através do printf. b) A média de idade das pessoas que responderam o questionário. Faça um programa que leia os dados digitados pelo usuário. escreva qual o código. Portanto.2. sendo que deverão ser solicitados dados até que a idade digitada seja um valor negativo. uma editora solicitou os seguintes dados para os entrevistados: sexo. Após a leitura. 7. e quando a atingir o valor de 100. escreve o valor de a e o incrementa em 1 (‘a++’ é igual a ‘a = a + 1’). idade e quantidade de livros que leu no ano de 2008. Faça um programa que. Foi realizada uma pesquisa com 200 pessoas que assistiram a uma peça de teatro. número de horas trabalhadas e número de dependentes de cada funcionário.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas } getch(). Faça um programa que solicite ao usuário 10 números inteiros e. Cada espectador respondeu a um questionário que solicitava os seguintes dados: a) idade da pessoa. e enquanto não for satisfeita a condição. Fábio Diniz Rossi 27 . ao final. d) O percentual de pessoas que não leram livros. Depois. os valores descontados para cada tipo de imposto e finalmente o salário líquido de cada um dos funcionários. Cada vez que o programa executa o laço while. Uma determinada empresa armazena para cada funcionário (10 no total) uma ficha contendo o código. Prof. Faça um programa para ler o código. b) o identificador da pessoa. 3. Calcule a média dos números positivos digitados. Calcule também a soma dos números pares e a média dos números ímpares. em relação a sua opinião sobre a mesma. Sobre o salário são feitos descontos de 8. esse programa escreverá todos os números de 1 até 100. o número de horas trabalhadas e o seu número de dependentes.5% para o INSS e 5% para IR. Considerando que: a. A empresa paga 12 reais por hora e 40 reais por dependente.1.

00 (após aumento) e que tiveram aumento superior a 5%. Fábio Diniz Rossi 28 . b) A quantidade de produtos mais caros que R$ 100. 7.h> main( ) { int a. Se o produto não tiver sofrido alteração de preço. Uma variável de controle. Valor e Percentual de aumento.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas c) A percentagem de pessoas que responderam 5 ou menos para a opinião da peça.: o programa solicita dados até que o ID digitado seja zero. c) A média de valor dos produtos que não sofreram aumento. Obs. * Considere que a maior idade não é repetida. mas na linguagem C ele apresenta uma grau maior de flexibilidade.h> #include <conio. c) A porcentagem de alunos que não gostam de fazer redação e que estão na terceira série. 7. a <= 100. Foi feita uma pesquisa para saber o perfil dos alunos que cursam o ginásio de uma determinada escola. quantos livros liam por mês e se gostavam de fazer redação (Sim-1 ou Não-0). calcule e imprima: a) A quantidade de alunos que está na terceira série. na qual foram coletados os seguintes dados referentes aos produtos fornecidos: ID. a++) { printf("\n %d". geralmente um contador. For Este comando aparece em várias linguagens de programação. Cada aluno fornecia a sua série (primeira1. Uma empresa realizou uma pesquisa com os seus fornecedores. Caso a condição de término tenha sido atingida o laço é interrompido. a). segunda-2. b) A maior quantidade de livros lidos por um aluno que está na quarta série.3. d) O valor do produto mais caro (após aumento). 6. A idéia básica do comando for é a seguinte. o percentual de aumento será igual a 0. Faça um programa que determine e escreva: a) O novo valor de cada um dos produtos. Prof. for(a = 1. d) O identificador da pessoa mais velha. recebe um valor inicial. } getch(). Fazer um programa que leia os dados. OBS: A condição de parada (flag) é que seja digitado 0 (zero) para idade. terceira-3 ou quarta-4). Podemos ver sua sintaxe no exemplo abaixo: /* Programa for */ #include <stdio. O trecho de programa que pertence ao laço é executado e ao final a variável de controle é incrementada ou decrementada e comparada com o valor final que ela deve alcançar. Obs.

o marciano dizia: estou mais à direita ou mais à esquerda. o for inicializa o valor da variável. porém. O caçador só tinha cinco balas em sua espingarda. Escreva um programa que imprima na tela os números de 1 a 500 que são múltiplos de 5. Escreva um programa que imprima na tela os números de 1 a 500 que são múltiplos de 5 e de 3 (os dois ao mesmo tempo). Escreva um programa que dado um número. coloca o limite dessa variável e o contador em apenas 1 linha de código.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas } Vemos que sua utilização na resolução de problemas computacionais é a mesma que o comando while. imprime o MMC. e um país B com 7. Cada vez que ele atirava. com 5. 3. Criar um programa que informa quantos números entre 100 e 200 foram digitados. obs: você não precisa necessariamente imprimir no final. Prof. O programa pára quando o usuário digitar 0. 2. Dado um país A. em seguida solicite a ele que digite todos os números e diga qual o maior número daqueles digitados. Exercícios de Fixação 1.3. Escreva um programa que dados dois números. 9. 4. ele será levado para marte. Fábio Diniz Rossi 29 .1. Escreva um programa que dados dois números. Implementar este jogo para dois jogadores. 6. é claro. 8. e o outro tenta acertar. 7. Escreva um programa que some os números de 1 a 100. 11. Escreva um programa que imprima os números de 100 a 999 em forma de matriz quadrada.000. 13. 12. Escreva um programa onde o usuário diz quantos números quer digitar.000. Um marciano chegou a uma floresta e se escondeu atrás de uma das 100 árvores quando viu um caçador.000 de habitantes e uma taxa de natalidade de 3% ao ano. e não acertava. onde um escolhe a árvore em que o marciano irá se esconder. Escreva um programa que dados 15 números. calcular e imprimir o tempo necessário para que a população do país A ultrapasse a população do país B. ele diz se é primo ou não. imprima seus quadrados. imprime o MDC 5. Se o caçador não conseguir acertar o marciano. 7. 10.000 de habitantes e uma taxa de natalidade de 2% ao ano. Ler um determinado número e dizer quantos são pares e quantos são ímpares.

ou mesmo em trechos de código. dados[0] = 3. Onde tipo é um tipo qualquer dados. dados[1] = 9. O vetor é uma variável que acumula vários valores em apenas uma variável. O vetor sempre inicia pelo índice 0.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 8. getch(). Introdução A forma geral da declaração de um vetor é: tipo nome [tamanho]. dados[2] = 6. Podemos ver como é a manipulação de um vetor de inteiros com o exemplo abaixo: /* Programa vetor_int */ #include <stdio. nome é o nome pelo qual o vetor vai ser referenciado e tamanho é o número de elementos que o vetor vai conter. Exemplos de declarações de vetores são: int numeros[1000]. char nome[40].h> main( ) { int dados[3]. portanto um vetor de 10 posições terá índices entre 0 e 9. Isto significa que é possível ultrapassar o fim de um vetor e escrever em outras variáveis.1. printf("%d".1. estávamos acostumados com uma variável acumulando apenas 1 valor a cada momento. É tarefa do programador fazer com que os índices dos vetores estejam sempre dentro dos limites estabelecidos pela declaração do vetor. em C. /* conjunto de 1000 numeros inteiros */ /* conjunto de 65 numeros reais */ /* conjunto de 40 caracteres */ É importante notar que em C não há verificação de limites em vetores. Fábio Diniz Rossi 30 . Uma das vantagens de usar vetores é que o conjunto recebe um nome comum e elementos deste conjunto são referenciados através de índices. dados[1]). float notas[65]. o primeiro elemento tem índice 0 e o último tamanho .h> #include <conio. Observar que. Vetores Vetores são usados para tratamento de conjuntos de dados que possuem as mesmas características. Até então. 8. } Prof.

A seguir imprima o conteúdo desse vetor. 8. 5. 6. 3. Inicializar M com valores de 1 até 6. Escreva um algoritmo em linguagem C que leia um vetor de números inteiros com o seu respectivo tamanho. calcule e mostre os números primos e suas respectivas posições. Exercícios de Fixação 1. cada um com 10 números inteiros.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Vemos nesse programa. o 2º deve conter os números negativos. Fábio Diniz Rossi 31 . Prof.2. Escreva um algoritmo em linguagem de programação C que leia dois vetores. Escreva um algoritmo em linguagem C que leia um vetor com 100 elementos inteiros e verifique o número de elementos múltiplos de 3. Faça um algoritmo em linguagem C que leia 10 números inteiros. 8. Escreva um algoritmo em linguagem C que leia 5 números inteiros e armazene-os em um vetor. 7. Faça um programa para declarar um vetor M com 6 elementos do tipo inteiro. Escreva um algoritmo em linguagem C que leia um vetor com o seu respectivo tamanho. calcule e mostre o número de elementos pares lidos. Devem ser impressas todas as posições destes elementos no vetor. calcule dois vetores resultantes: o 1º vetor resultante deve conter somente os números positivos lidos. X e Y. 4. calcule e mostre o menor elemento e a sua respectiva posição. Escreva um programa em linguagem C que leia um vetor com 10 números inteiros. calcule um terceiro vetor Z contendo a soma entre cada elemento de X e cada elemento de Y (Z[i]=X[i]+Y[i]). 2. uma escrita de apenas um dos índices. os dados sendo carregados nos índices e após.

Quando vamos preencher ou ler uma matriz no C o índice mais à direita varia mais rapidamente que o índice à esquerda. } printf("\n"). menos um.h> main( ) { int x.h> #include <conio. } x = 0. na linguagem C. é um vetor de 2 (vetor bidimensional) ou mais dimensões. y = 0. num[x][y]). É muito importante ressaltar que. x++. os índices variam de zero ao valor declarado. Vemos um exemplo de manipulação de matriz abaixo: /* Programa matriz */ #include <stdio. y = 0. cont. num[3][3]. Prof. Introdução Já vimos como declarar matrizes unidimensionais (vetores). x = 0. Fábio Diniz Rossi 32 . Matrizes Matriz é o nome genérico para um arranjo de dimensões n > 2. while(x < 3) { while(y < 3) { printf("%d". 9.1. Mais uma vez é bom lembrar que. A forma geral da declaração de uma matriz bidimensional é muito parecida com a declaração de um vetor: tipo_da_variável nome_da_variável [linhas][colunas]. y = 0. cont++. mas o C não vai verificar isto para o usuário. nesta estrutura. } y = 0. y++. y++. y. while(x < 3) { while(y < 3) { num[x][y] = cont. Vamos tratar agora de matrizes bidimensionais. Manter os índices na faixa permitida é tarefa do programador. ou seja. o índice da esquerda indexa as linhas e o da direita indexa as colunas. cont = 1.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 9.

Uma matriz é simétrica se ela apresenta Aij= Aji. o número de alunos que obtiveram a maior nota na prova 2 e o número de alunos que obtiveram a maior nota na prova 3. escrevemos na tela a matriz usando um \n para ‘quebrar’ a matriz de 3 em 3 valores. Construir uma matriz C de duas dimensões. No segundo while. Em caso afirmativo. 7. e incrementando de 1 a cada novo valor. iniciando com o cont em 1. Exercícios de Fixação 1.2. cada Prof. Aij for ao mesmo tempo o menor elemento da linha i e o maior elemento da coluna j. calcule e mostre o maior elemento com a respectiva posição. Escreva um programa para converter todos os elementos de uma matriz 4 x 3 em um vetor. Deve ser apresentado como resultado um relatório contendo o número de alunos que obtiveram a maior nota na prova 1. deve ser impresso o valor e a respectiva posição. Escreva um algoritmo que leia uma matriz 3 x 3 e determine se ela é simétrica. Ler dois vetores A e B. } No primeiro while desse exemplo. cada um com 5 elementos. 9. carregamos valores na matriz. 10. Desenvolva um algoritmo que leia uma matriz 2 x 2. } getch(). Fábio Diniz Rossi 33 . 4. Desenvolva um algoritmo que leia uma matriz 4 x 4 de números inteiros e crie dois vetores de 4 posições cada um. 3. e obtenha a matriz transposta de J. e somente se. onde M e N também são valores de entrada. 5. O algoritmo deve fornecer como saída a matriz lida e os dois vetores calculados. 6. armazenando o resultado em uma terceira matriz 4 x 2. Escreva um algoritmo que leia uma matriz 4 x 5 e verifique se a matriz possui ponto de sela. calcule e mostre quais os elementos da matriz que se repetem e quantas vezes cada um está repetido. 2. A transposição de uma matriz é a troca das linhas pelas colunas. ou seja. Escreva um algoritmo que leia uma matriz 10 x 3 com as notas de 10 alunos em três provas. onde a primeira coluna deverá ser formada pelos elementos do vetor A e a segunda coluna deverá ser formada pelos elementos do vetor B. Escreva um algoritmo que leia uma matriz J de ordem M x N. calcule e mostre a matriz resultante do produto matricial das duas anteriores. O primeiro vetor conterá os maiores elementos de cada uma das linhas da matriz lida e o segundo vetor conterá os menores elementos de cada uma das colunas. Desenvolva um algoritmo que leia uma matriz 4 x 5 e uma segunda matriz 5 x 2. Um elemento Aij de uma matriz é dito ponto de sela da matriz A se. Escreva um algoritmo que leia uma matriz 5 x 5 com números inteiros. 8.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas x++. A resposta desse programa deve ser: 1 2 3 4 5 6 7 8 9 9.

onde N é um valor de entrada. Escreva um algoritmo que leia uma matriz J de ordem N x N. Prof. Escreva um algoritmo que leia uma matriz M x N e outra matriz N x O. 13. 12. Sabese que M não deve ser maior que 200 e N não deve ser maior que 100. Sabe-se que N não deve ser maior que 1000. Jji. 11. Sabe-se que M não deve ser maior que 500 e N não deve ser maior que 300. calcule e escreva uma terceira matriz de ordem M x O resultante da multiplicação da primeira pela segunda matriz.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas linha da matriz original se transforma em uma coluna da matriz transposta. Sabe-se que M não deve ser maior que 600. calcule e escreva uma segunda matriz L também de ordem N x N em que cada elemento é obtido pela seguinte equação: Lij= k . Desenvolva um algoritmo que leia duas matrizes de ordem M x N e calcule uma terceira matriz de ordem M x N correspondente à soma das duas primeiras. e um escalar k. que N não deve ser maior que 400 e O não deve ser maior que 200. Fábio Diniz Rossi 34 .

O programa deve perguntar linhas de texto até receber uma linha onde a primeira palavra seja "fim". gets(nome). 'b'.2. 3. nome[4]). E a função que lê a string digitada não é a função scanf. 2. 'a'. e após escrevemos na tela apenas a letra da posição 2 do vetor. que lê apenas caractere a caractere. que lê um bloco de caracteres. nome[2]). Faça um programa que leia uma string do teclado. Podemos ver no exemplo abaixo uma outra maneira de declarar um vetor de strings. printf("%c". Exercícios de Fixação 1.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 10.h> main() { char nome[] = {'f'. getch(). 'o'}.h> main( ) { char nome[5]. Use a função gets para ler linhas de texto do teclado. e retorne quantas vogais a string possui.1. } Neste exemplo.h> #include <conio. Escreva um programa em C que receba uma linha de texto do teclado e imprima a linha com as palavras de trás para a frente. getch().h. Introdução Para manipulação de vetores de caracteres (cadeia de caracteres) devemos utilizar a biblioteca string.h> #include <conio. Strings Na linguagem C. com no máximo 20 caracteres. 10. totalmente em minúsculas. } 10. Fábio Diniz Rossi 35 .h> #include <stdio. quando as strings são constantes: #include <stdio. printf("%c". printf("Digite nome: "). e sim a função gets. strings são manipuladas através de vetores. Podemos ver essas diferenças no exemplo abaixo: /* Programa vetor_string */ #include <string. que é lido com gets. Escreva um programa que leia uma string do teclado e imprima a string invertida (de trás para frente). declaramos um vetor de strings de 5 posições. 'i'. Prof.

Fábio Diniz Rossi 36 .Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Exemplo de execução do programa: entrada: Meu cachorro se chama Van Gogh saída: ueM orrohcac es amahc naV hgoG entrada: Otto ama Ana saída: ottO ama anA entrada: fim Prof.

printf("\nNome completo: %s %s %s". possivelmente de tipos diferentes. printf("Digite seu nome do meio: "). um inteiro. &Nome. 11. Nome. As variáveis que ficam dentro da estrutura de dados são chamadas de membros.tem uma base muito sólida no conceito de estrutura de dados. scanf("%s".Primeiro. } Nome. printf("Digite seu sobrenome: "). printf("Digite seu primeiro nome: "). dentro de uma estrutura de dados podemos ter juntos tanto um tipo float. Nome. O conceito de orientação a objeto . char Sobrenome[15].h> main() { struct { char Primeiro[15].Primeiro). que nada mais são do que outras variáveis. scanf("%s". Fábio Diniz Rossi 37 . char Meio[15]. Prof. &Nome. Podemos ver um exemplo simples de utilização de struct em C abaixo: /* Programa struct */ #include <stdio.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 11. &Nome. um char ou um double. registros são conhecidos como structs (abreviatura de structures). As estruturas de dados consistem em criar apenas um dado que contém vários membros.principalmente classes que serão tratadas mais a frente .Meio). Nome. scanf("%s".h> #include <conio.Meio. A vantagem em se usar estruturas de dados é que podemos agrupar de forma organizada vários tipos de dados diferentes. é como se uma variável tivesse outras variáveis dentro dela. por exemplo. } Vemos que a declaração da estrutura Nome segue o seguinte formato: struct { char Primeiro[15]. Introdução Uma estrutura é uma coleção de variáveis ligadas através de índices. char Meio[15]. De uma forma mais simples. char Sobrenome[15].Sobrenome). Registros ou Structs Um registro (= record) é uma coleção de várias variáveis. } Nome. Na linguagem C.Sobrenome). getch().1.

Lembres-se de que somente pode ser excluído um livro existente. porém. totalizando 1. e) Construa um trecho de algoritmo que efetue a exclusão de algum livro.2. O usuário fornecerá o código da obra e sua área. informa seus campos. obras cujos livros sejam comprados e cujo número de páginas se encontre entre 100 e 300. O proprietário resolveu informatizá-la e. envia mensagem de aviso. 500 de cada área.000 unidades e que os valores não precisam ser lidos. Do contrário. o usuário fornecerá o código e a área. Com Nome[10] podemos agora ler 10 nomes completos diferentes e armazená-los em memória para manipulação. por exemplo nome (char). ciências humanas e ciências biomédicas. Para o controle dos veículos que circulam em uma determinada cidade. agrupou as informações sobre cada livro do seguinte modo: Código de catalogação: __________ Doado:______________ Nome da obra: _____________________________________ Nome do autor: ____________________________________ Editora: _______________Nro de páginas:_______________ a) Construa um algoritmo que declare tal estrutura e que reúna todas as informações de todas as obras em três vetores distintos para cada área. d) Idem ao item anterior.500 volumes. a placa possui os três primeiros valores alfabéticos e os quatro restantes valores numéricos. Existindo tal livro. char Meio[15]. Exercícios de Fixação 1. Fábio Diniz Rossi 38 . Sabendo que o número máximo de veículos da cidade é de 5. 2. Prof. c) A consulta repete-se até que o usuário introduza código finalizador com o valor -1. Uma biblioteca possui obras de ciências exatas. Escreva um trecho de algoritmo que liste todas as obras de cada área que representem livros doados. utilizando como premissa o que foi feito no item anterior. a Secretaria dos Transportes criou o seguinte registro-padrão: Proprietário: __________ Combustível:_________________ Modelo: ____________________ Cor: _________________ Nro chassi: ____________Ano:_______ Placa:___________ O combustível pode ser álcool ou gasolina. char Sobrenome[15]. 11. telefone (int) e altura (float).Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas A grande utilidade do uso de estruturas está em utilizar as structs da seguinte forma: struct { char Primeiro[15]. } Nome[10]. Isso torna a sua utilização bastante válida quando temos que armazenar informações de tipos de dados diferentes interligadas entre si. para tal. realize uma consulta à informações. b) Elabore um trecho de algoritmo que.

Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas a) Construa um algoritmo que liste todos os proprietários cujos carros são do ano de 1980 ou posterior e que sejam movidos a diesel. c) Elabore um algoritmo que liste o modelo e a cor dos veículos cujas placas possuem como segunda letra uma vogal. 2. 4 ou 7 e seus respectivos proprietários.. d) Construa um algoritmo que permita a troca de proprietário com o fornecimento do número do chassi apenas para carros com placas que não possuam nenhum dígito igual a zero. Prof. além do número de poltronas disponíveis para todas as linhas de ônibus. Fábio Diniz Rossi 39 . b) Escreva um algoritmo que liste todas as placas que comecem com a letra A e terminem com 0. 3. d) Qual a percentagem de ocupação e o número de poltronas livres para um dado ônibus fornecido pelo usuário? e) Qual a percentagem de passageiros do sexo masculino e do sexo feminino de um determinado ônibus cujo número da linha é fornecido pelo usuário? f) Forneça um relatório contendo a percentagem de ocupação de janelas e de corredores. Supondo não ser necessário suprir de informações as estruturas de dados a seguir.. elabore um algoritmo capaz de responder às questões: De: _____________________ Para:_____________________ Data: ___/___/___ Horário: ___:___ Distância: _______km Poltronas: 1 2 3 . 4 4 Sendo que cada poltrona possui as seguintes informações: Número da passagem: ______________ Nome:____________________________ Sexo:  M  F a) Qual o horário de saída e a distância percorrida por um ônibus cuja a linha é fornecida? b)Quais as linhas de ônibus estão lotadas? c) Qual o horário estimado de chegada e duração da viagem de um dado ônibus em que o número da linha é fornecido (use velocidade média de 60km/h).

pb = &b.h> #include <conio. Desta forma estamos atribuindo o valor 24 para a variável que está contida no ponteiro. *pa). Ponteiros O ponteiro nada mais é do que uma variável que guarda o endereço de uma outra variável. Fábio Diniz Rossi 40 . &pa). *pa = 20. &pb). int *pa.h> main() { int a. printf("\nEndereco do ponteiro pb: %u". Portanto para atribuirmos um valor para o ponteiro é necessário referencia o valor da variável que se encontra no ponteiro utilizando o operador (*). *pb. printf("\nEndereco do ponteiro pa: %u". printf("\nEndereco da variavel contida no ponteiro pb: %u". E o segundo é o operador (&) que retorna o endereço de memória que está localizado o valor da variavel contida no ponteiro. *pb).1. printf("\nValor da variavel contida no ponteiro pa: %d". printf("\nEndereco da variavel contida no ponteiro pa: %u". printf("\nValor da variavel contida no ponteiro pb: %d". eles são inicializados com um endereço não válido. Introdução A declaração de ponteiros é feita da seguinte forma: int *pa A instrução acima indica que pa é um ponteiro do tipo int. pb). Para isto é necessário saber que existem dois operadores unitários que são utilizados com os ponteiros. Para entender melhor quando e como utilizar os operadores (*) e (&). Agora veremos como atribuir valor ao ponteiro declarado. portanto antes de usá-los é necessário atribuir um Prof. } Quando os ponteiros são declarados. pa = &a. veja o programa mostrado abaixo: /* Programa ponteiro */ #include <stdio. a = 20. pa).Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 12. getch(). b = 12. b. 12. como será demonstrado a seguir. O primeiro é o operador (*) através dele é possível retornar o valor da variável que está localizada no ponteiro.

3.2. Modifique o exercício acima para mostrar o vetor na ordem inversa. Fábio Diniz Rossi 41 . Outra novidade do programa anterior é quando queremos imprimir o endereço do próprio ponteiro isto é feito referenciando pa normalmente. Exercícios de Fixação 1. Elabore um programa que declare um vetor com 7 elementos. 12. Prof. ou seja. Faça um programa que declare um vetor com 10 elementos e mostre os valores contidos nele utilizando ponteiro.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas endereço e isso é feito através do operador (&) como demonstra a instrução pa=&a e pb=&b que atribui aos ponteiros pa e pb o endereço das varieis a e b. Porém para imprimir o endereço contido no ponteiro é usado &pa e por último para imprimir o valor do endereço contido no ponteiro usamos *pa. 5. Crie um programa que declare um vetor com 5 elementos e peça para o usuário fornecer valores que serão armazenados no vetor. Utilize ponteiro para ler os elementos. preenchao com alguns valores e mostre na tela: Para cada elemento do vetor: seu valor e seu endereço de memória em decimal e hexa. 4. Modifique o programa acima para mostrar as informações pedidas utilizando ponteiros. do elemento 9 ao 0. 2.

} A instrução return indica a variável cujo valor será devolvido. Neste caso iremos calcular a soma de dois números inteiros: int soma(int num.1. ou seja. Prof. pois o compilador não as irá reconhecer. 13. A seguir o nome da função e depois entre parênteses o tipo e nome das variáveis de entrada. uma vez declaradas dentro de uma função não podem ser chamadas fora. int num2) { total = num1 + num2.h> int total. int num2) { } Declara-se o tipo de variável do valor devolvido (resultado da função) que no caso de não devolver nada será void (vazio). return total. int num2) { int total = num + num2. Funções Função consiste em um conjunto de comandos agrupados em um bloco que recebe um nome e através deste pode ser ativado.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 13. return total.h> #include <conio. Para utilização de funções devemos seguir uma regra importante. int soma(int num1. Dentro da função podemos colocar todas as instruções que a mesma deverá efetuar. A construção de uma função é feita da seguinte forma: int soma(int num. Introdução As funções executam instruções que podem ser comuns a várias partes do código de um programa facilitando assim a sua implementação. Para melhor mostrar a sintaxe da utilização de funções no programa principal vejamos o exemplo seguinte: /* Programa funcao */ #include <stdio. Todas as variáveis utilizadas dentro de uma função apenas são conhecidas dentro da mesma. tal como fazemos com as variáveis: sempre que queremos utilizar uma função devemos declará-la antes (devemos dar a conhecê-la ao compilador). Fábio Diniz Rossi 42 . A função deve estar delimitada por chaves que representam os limites da função.

Para isso utilize uma matriz. a segunda pela remoção e a terceira para listar todo o estoque. pois quando é chamada na função main o compilador já deve ter lido a função.00. quando enviamos os valores a ser somados pela função main. Faça uma função que leia esses dados para um número não determinado de pessoas e mostre a média de salário da população. as variáveis são num1 e num2. n = 3. total). isso é irrelevante pois os valores são passados de uma para outra. Fábio Diniz Rossi 43 . 4. onde cada coluna representa o código do produto e cada linha a quantidade em estoque deste produto. A prefeitura de uma cidade fez uma pesquisa entre os seus habitantes. m. Faça uma função que receba um número inteiro positivo N como parâmetro e retorne a soma dos N números inteiros existentes entre 1 e esse número. 5. Ainda. Faça uma função que receba um valor inteiro positivo como parâmetro e retorne o fatorial do número. Isso se deve as variáveis só poder ser lidas dentro de sua própria função. a média do número de filhos. soma(n. as variáveis são n e m. Exercícios de Fixação 1. ela se torna uma variável externa e pode ser lida em qualquer parte do código. m = 6. o maior salário e o percentual de pessoas com salário até R$ 470. está declarada fora da função main e fora da função soma. 2. printf("A soma e: %d". } Podemos notar que a função soma é escrita antes da função principal main. Faça um programa que controle o estoque de uma empresa.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas } main() { int n. Faça uma função que dado um número inteiro retorne uma string com cada dígito deste número por extenso. m). 13. coletando dados sobre o salário e número de filhos. 3. Notamos também que a variável total a qual o valor será retornado (return).2. getch(). Declarando-a fora. da forma: 64852 <= número passado como parâmetro seis quatro oito cinco dois <= string a ser retornada Prof. Faça três funções para controle de estoque: a primeira será responsável pela inserção de produtos no estoque. porém quando são processadas pela função soma.

FILE *. Assim. Você associa um stream com um arquivo específico realizando uma operação de abertura. O objetivo de manipular um arquivo é realizar operações de leitura e escrita sobre seu conteúdo. para acessar arquivos. 14. que são manipuladas diretamente pelas funções da biblioteca padrão de entrada e saída. a função fopen retorna o ponteiro nulo. e b (acesso em modo binário). Tais variáveis são usualmente chamadas de manipuladores de arquivo. Arquivos Em C. a (escrita ao final . a rotina fopen é invocada recebendo dois parâmetros. como em: FILE *arqFonte.txt". Caso o arquivo não possa ser aberto. w (escrita). um teclado seria um dispositivo que não aceita saída de dados (escrita). informações podem ser trocadas entre ele e o seu programa. O valor de retorno é o manipulador alocado para o arquivo aberto. O programador C. Por exemplo. Assim. Para abrir um arquivo em C. é necessário testar o valor de retorno: if (arqFonte != 0) { /* tudo bem */ } else { /* erro */ } Prof.1. a seguinte expressão poderia ser usada no programa: arqFonte = fopen("teste. que pode conter os caracteres r (leitura). Para que essas operações de transferência de dados tenham sucesso. mas apenas entrada (leitura). define variáveis ponteiros para este tipo. é preciso que haja a permissão adequada para a operação. Fábio Diniz Rossi 44 .txt. O segundo parâmetro é outra string que especifica o modo de acesso. "r"). Uma vez o arquivo aberto. Por exemplo. a função que vai manipular o arquivo deve incluir a declaração de uma variável desse tipo. para realizar a leitura do conteúdo de um arquivo chamado teste. um arquivo pode ser qualquer coisa. para verificar de o arquivo foi aberto sem problemas. desde um arquivo em disco até um terminal ou uma impressora. Introdução Não é necessário conhecer o formato interno dessa estrutura para manipular arquivos.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas 14. O primeiro é uma string com o nome do arquivo que será aberto.append).

char palavra[30]. fp = fopen ("teste.h> #include <conio. ele deve ser fechado.txt". fp recebe a abertura do arquivo chamado teste. o arquivo é fechado com fclose se criado com sucesso.\n"). fclose (fp). } Podemos ver que foi criado um ponteiro do tipo FILE para fp. "w").h> #include <string. getch(). a rotina fclose pode ser usada. fecha-o. uma vez que sistemas operacionais tipicamente limitam a quantidade de arquivos que podem ser abertos simultaneamente devido a restrições de espaço alocado para essas estruturas auxiliares. } while (strlen(palavra) > 1) { printf("\nDigite uma nova palavra: ").\n"). Por último.txt". Este pequeno exemplo abaixo mostra como criar um arquivo texto: /* Programa cria_arq */ #include <stdio. Ela recebe como argumento o manipulador do arquivo e não retorna nenhum valor.txt em modo de escrita (w).txt criado com sucesso. if((pf = fopen("arquivo. agora veremos como escrever uma string nesse arquivo. Esta liberação é importante. É realizado um teste para confirmar se o arquivo foi criado. O exemplo abaixo faz isso: /* Programa arq_escrever */ #include <stdio. if (fp == NULL) { printf ("Houve um erro ao abrir o arquivo. Prof.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Encerradas as operações sobre um arquivo. pf).h> #include <stdlib. exit(1). Para fechar um arquivo previamente aberto.h> main() { FILE *pf. Assim. } printf ("Arquivo teste. gets(palavra).h> main() { FILE *fp. Fábio Diniz Rossi 45 .h> #include <conio. Isso permite que o sistema operacional libere o espaço ocupado pelas informações sobre o arquivo para que esse mesmo espaço possa ser reocupado para a manipulação de outros arquivos. após encerrada a operação com o arquivo a expressão fclose(arqFonte). Vimos como criar um arquivo texto."w")) == NULL) { printf("\nNao consigo abrir o arquivo ! "). fputs(palavra.

Agora. } } fclose(pf).2. ou seja.h> #include <conio. O primeiro diz respeito à variável que armazena a palavra do arquivo. Existe um novo teste para verificar se a gravação obteve sucesso. fclose(pf). while(fgets(palavra. o laço while ficará em loop enquanto o tamanho da palavra for maior que 1. enquanto não for NULL. } fclose(pf).h> main() { FILE *pf. 30. Com a palavra digitada. é lida com gets e enviado para o arquivo texto pela função fputs. 14. exit(1). a função perror (print error) escreve na tela e fecha o arquivo. o segundo argumento é o tamanho e o terceiro argumento é o ponteiro ao arquivo. if(ferror(pf)) { perror("Erro na gravacao"). } A novidade nesse código é a função fgets que contém 3 argumentos. Exercícios de Fixação 1. veremos um exemplo de como ler o conteúdo de um arquivo texto: /* Programa arq_ler */ #include <stdio. pf) != NULL) { printf("%s". Fábio Diniz Rossi 46 .txt. A função putc envia um sinal de nova linha para que a próxima palavra seja escrita. pf = fopen("arquivo. e se houver erro.txt". através da função ferror. palavra).Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas putc('\n'. É realizado um teste de tentativa de abertura ou criação de um novo arquivo chamado arquivo. char palavra[30]. ou seja. pf). } No exemplo acima. O while se encarrega do laço para fazer o arquivo ser lido até o fim. getch(). saíndo com um <enter>. enquanto o usuário digitar algo. endereço e telefone Prof. Faça um programa que crie uma agenda telefônica utilizando arquivos com as seguintes opções: a) Cadastrar nome. "r"). Se for possível a sua abertura. temos um ponteiro FILE para a associação do arquivo pf e uma variável que armazenará uma palavra de tamanho 30.

Fábio Diniz Rossi 47 .Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas b) Pesquisar por nome ou telefone c) Excluir registro completo Prof.

M. CELES. RANGEL.. 2004. Introdução à Ciência da Computação. 2004. Rio de Janeiro. Introdução a Estruturas de Dados: com técnicas de programação em C. B.. 1986. Campus. Algoritmos em Linguagem C. GOMES. F.. Prof. D. BECKER. Porto Alegre. Algoritmos Estruturados. FARRER. Campus. Fábio Diniz Rossi 48 .. LTC. P. KERNIGHAN. H. A. Nei Yoshihiro. MOKARZEL. 2008.. M. SOMA. 3a ed. 2002. J. Campus. C: a linguagem de programação.. 1997. W. R. H. C. V.. Algoritmos e Lógica de Programação.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Bibliografia SCHILDT. RITCHIE.. Fabio Carneiro. GARCIA. Campus. Makron Books. 1999.. SOARES. FEOFILOFF.. L. CONCILIO. CERQUEIRA... 2008.. Campus... A. Thomson. DE SOUZA.. M. Introdução à Programação: 500 algoritmos resolvidos. M. C Completo e Total. G. LOPES. R.

Ele usa o Mingw do GCC (GNU Compiler Collection) como seu compilador e cria executáveis nativos no Win32. Navegador de classes.Integrated Development Environment) para programação na linguagem C/C++. Suporte a impressão. Recurso de completar códigos. Suporte a modelos para criação dos seus próprios projetos. Quando abrimos o Dev-C++. vemos a tela inicial abaixo: Prof. Gerenciador de Ferramentas. Janela de CPU. Dev-C++ também pode ser usado juntamente com o Cygwin. Edição e compilação de arquivos de recursos. Facilidades de encontrar e substituir. console ou GUI.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Manual de utilização do Dev-C++ Dev-C++ é um Ambiente de Desenvolvimento Integrado (IDE . Fábio Diniz Rossi 49 . Gerenciador de pacotes para facilitar a instalação e adição de bibliotecas. Navegador de depuração de variáveis. Lista de coisas a fazer. Depuração integrada (usando GDB). Editor com destaque de sintaxe personalizável. Suporte CVS. Lista de Recursos: Suporte a compiladores baseados em GCC. Gerenciador de Projetos.

Também podemos usar o mnemônico Ctrl + N ou clicar no 3º botão da barra Main. Após o término do desenvolvimento. Fábio Diniz Rossi 50 . salvar o arquivo que por enquanto é chamado de Untitled1. Portanto. Quando fizermos essa operação.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Nesta tela devemos clicar em no menu File -> New -> Source File para podermos escrever um novo código-fonte. devemos compilar nosso código-fonte. Prof. abrirá no compilador uma área onde poderemos escrever nossos programas como na tela abaixo: Nessa área de edição à direita é onde escrevemos nossos programas. gerando assim o arquivo executável. devemos ir ao menu Execute -> Compile ou o mnemônico Ctrl + F9.c para um nome a fim de podermos saber o que faz o nosso códigofonte.

utilizamos o menu Execute -> Run ou o mnemônico Ctrl + F10. Fábio Diniz Rossi 51 .Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas O arquivo será compilado e um arquivo executável será gerado. temos a apresentação do programa em uma tela de console. A tela da compilação pode ser vista abaixo: Após a compilação realizada com sucesso. Prof. como vemos abaixo: Para executarmos o programa novamente.

and on unbuffered streams characters are intended to be read/written as soon as possible. data is read/written when the buffer is filled. A pointer to a FILE object uniquely identifies a stream. There also exist three standard streams: stdin. A binary stream. Text / Binary Text streams are thought to represent a set of text lines.h in the C language). All streams have similar properties independently of the individual characteristics of the physical media they are associated with. This library uses what are called streams to operate with physical devices such as keyboards. line buffered or unbuffered. On fully buffered streams. which are automatically created and opened for all programs using the library. each one ending with a new-line character. is a sequence of characters written or read from the physical media with no translation. on the other hand. Fábio Diniz Rossi 52 . and is used as a parameter in the operations involving that stream. on line buffered streams this happens when a new-line character is encountered. terminals or with any other type of files supported by the system. Most of these properties are defined at the moment the stream is associated with a file (opened) using the fopen function: Read/Write Access Specifies whether the stream has read or write access (or both) to the physical media they are associated with. Streams can be either fully buffered.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Bibliotecas e Funções mais utilizadas stdio. having a one-to-one correspondence with the characters read or written to the stream. Streams are handled in the cstdio library as pointers to FILE objects. Input and Output operations can also be performed in C++ using the C Standard Input and Output Library (cstdio. Depending on the environment where the application is run some character translation may occur with text streams to adapt some special characters to the text file specifications of the environment. printers. stdout and stderr. Streams are an abstraction to interact with these in an uniform way. Buffer A buffer is a block of memory where data is accumulated before being physically read or written to the associated file or device.h C library to perform Input/Output operations. Indicators Streams have certain internal indicators that specify their current state and which affect the behavior of some input and output operations performed on them: Prof. known as stdio. Stream properties Streams have some properties that define which functions can be used on them and how these will treat the data input or output through them.

This indicator can be checked with the ferror function. and can be changed using the repositioning functions rewind. It can be checked with the feof function. and can be reset by calling either to clearerr or to any repositioning function (rewind. Position indicator It is an internal pointer of each stream which points to the next character to be read or written in the next I/O operation. Functions Operations on files: remove Remove file (function) rename Rename file (function) tmpfile Open a temporary file (function) tmpnam Generate temporary filename (function) File access: fclose Close file (function) fflush Flush stream (function) fopen Open file (function) freopen Reopen stream with different file or mode (function) setbuf Set stream buffer (function) setvbuf Change stream buffering (function) Formatted input/output: fprintf Write formatted output to stream (function) fscanf Read formatted data from stream (function) printf Print formatted data to stdout (function) scanf Read formatted data from stdin (function) sprintf Write formatted data to string (function) sscanf Read formatted data from string (function) vfprintf Write formatted variable argument list to stream (function) vprintf Print formatted variable argument list to stdout (function) vsprintf Print formatted variable argument list to string (function) Character input/output: fgetc Get character from stream (function) fgets Get string from stream (function) Prof. fseek and fsetpos). End-Of-File indicator When set. fseek and fsetpos.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Error indicator This indicator is set when an error has occurred in an operation related to the stream. fseek and fsetpos). and can be reset by calling either to clearerr or to any repositioning function (rewind. indicates that the last reading or writing operation performed with the stream reached the End of File. Its value can be obtained by the ftell and fgetpos functions. Fábio Diniz Rossi 53 .

Fábio Diniz Rossi 54 Object containing information to control a stream (type) Object containing information to specify a position within a file Unsigned integral type (type) . SEEK_CUR.h C Strings. SEEK_END and SEEK_SET. Functions Prof.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas fputc fputs getc getchar gets putc putchar puts ungetc Write character to stream (function) Write string to stream (function) Get character from stream (function) Get character from stdin (function) Get string from stdin (function) Write character to stream (function) Write character to stdout (function) Write string to stdout (function) Unget character from stream (function) Direct input/output: fread Read block of data from stream (function) fwrite Write block of data to stream (function) File positioning: fgetpos Get current position in stream (function) fseek Reposition stream position indicator (function) fsetpos Set position indicator of stream (function) ftell Get current position in stream (function) rewind Set position indicator to the beginning (function) Error-handling: clearerr Clear error indicators (function) feof Check End-of-File indicator (function) ferror Check error indicator (function) perror Print error message (function) Macros EOF End-of-File (constant) FILENAME_MAX Maximum length of file names (constant) NULL Null pointer (constant) TMP_MAX Number of temporary files (constant) And also _IOFBF. BUFSIZ. each described with its corresponding function. This header file defines several functions to manipulate C strings and arrays. _IONBF. L_tmpnam. FOPEN_MAX. _IOLBF. Types FILE fpos_t (type) size_t string.

Fábio Diniz Rossi 55 . communication with the environment. including dynamic memory management.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Copying: memcpy Copy block of memory (function) memmove Move block of memory (function) strcpy Copy string (function) strncpy Copy characters from string (function) Concatenation: strcat Concatenate strings (function) strncat Append characters from string (function) Comparison: memcmp Compare two blocks of memory (function) strcmp Compare two strings (function) strcoll Compare two strings using locale (function) strncmp Compare characters of two strings (function) strxfrm Transform string using locale (function) Searching: memchr Locate character in block of memory (function) strchr Locate first occurrence of character in string (function) strcspn Get span until character in string (function) strpbrk Locate character in string (function) strrchr Locate last occurrence of character in string (function) strspn Get span of character set in string (function) strstr Locate substring (function) strtok Split string into tokens (function) Other: memset Fill block of memory (function) strerror Get pointer to error message string (function) strlen Get string length (function) Macros NULL Types size_t stdlib. Functions Null pointer (macro) Unsigned integral type (type) Prof. This header defines several general purpose functions. sorting and converting. searching. random number generation. integer arthmetics.h C Standard General Utilities Library.

Fábio Diniz Rossi 56 .Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas String conversion: atof Convert string to double (function) atoi Convert string to integer (function) atol Convert string to long integer (function) strtod Convert string to double (function) strtol Convert string to long integer (function) strtoul Convert string to unsigned long integer (function) Pseudo-random sequence generation: rand Generate random number (function) srand Initialize random number generator (functions) Dynamic calloc free malloc realloc memory management: Allocate space for array in memory (function) Deallocate space in memory (function) Allocate memory block (function) Reallocate memory block (function) Environment: abort Abort current process (function) atexit Set function to be executed on exit (function) exit Terminate calling process (function) getenv Get environment string (function) system Execute system command (function) Searching and sorting: bsearch Binary search in array (function) qsort Sort elements of array (function) Integer arithmethics: abs Absolute value (function) div Integral division (function) labs Absolute value (function) ldiv Integral division (function) Multibyte characters: mblen Get length of multibyte character (function) mbtowc Convert multibyte character to wide character (function) wctomb Convert wide character to multibyte character (function) Multibyte strings: mbstowcs Convert multibyte string to wide-character string (function) wcstombs Convert wide-character string to multibyte string (function) Macros EXIT_FAILURE Failure termination code (macro) EXIT_SUCCESS Success termination code (macro) MB_CUR_MAX Maximum size of multibyte characters (macro) NULL Null pointer (macro) Prof.

absolute value and remainder functions: ceil Round up value (function) fabs Compute absolute value (function) floor Round down value (function) fmod Compute remainder of division (function) time. This header file contains definitions of functions to get and manipulate date and time information. Fábio Diniz Rossi 57 . Prof.h C Time Library. Cmath declares a set of functions to compute common mathematical operations and transformations: Trigonometric functions: cos Compute cosine (function) sin Compute sine (function) tan Compute tangent (function) acos Compute arc cosine (function) asin Compute arc sine (function) atan Compute arc tangent (function) atan2 Compute arc tangent with two parameters (function) Hyperbolic functions: cosh Compute hyperbolic cosine (function) sinh Compute hyperbolic sine (function) tanh Compute hyperbolic tangent (function) Exponential and logarithmic functions: exp Compute exponential function (function) frexp Get significand and exponent (function) ldexp Generate number from significand and exponent (function) log Compute natural logarithm (function) log10 Compute common logarithm (function) modf Break into fractional and integral parts (function) Power functions pow Raise to power (function) sqrt Compute square root (function) Rounding.h Maximum value returned by rand (macro) Structure returned by div (type) Structure returned by div and ldiv (type) Unsigned integral type (type) C numerics library.Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas RAND_MAX Types div_t ldiv_t size_t math.

Fábio Diniz Rossi 58 .Instituto Federal Farroupilha Campus Alegrete Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Functions Time manipulation clock Clock program (function) difftime Return difference between two times (function) mktime Convert tm structure to time_t (function) time Get current time (function) Conversion: asctime Convert tm structure to string (function) ctime Convert time_t value to string (function) gmtime Convert time_t to tm as UTC time (function) localtime Convert time_t to tm as local time (function) strftime Format time to string (function) Macros CLOCKS_PER_SEC Clock ticks per second (macro) NULL Null pointer (macro) Types clock_t size_t time_t struct tm Clock type (type) Unsigned integral type (type) Time type (type) Time structure (type) Prof.

Sign up to vote on this title
UsefulNot useful